|
From: Pavel T. <pav...@wh...> - 2019-10-02 07:03:28
|
Hi,
I use Quickfix/J to send requests to LMAX. Right after openning a new order
LMAX disconnects me. According to their support, my server sends TCP FIN.
Here is a log from their server:
2019-09-27 UTC 12:54:39.830189 MY_IP ADDRESS > THEIR_IP_ADDRESS
8=TCP|35=FIN
Why Quickfix/J (installed on my machine) sends a message of type FIN? Here
is how I open a new order:
public void sendNewOrderSingle(String p, char SideValue, char OrdTypeValue,
double price, double OrderQty) throws SessionNotFound
{
System.out.println("\nNewOrderSingle");
// Prepare
String ClOrdID = generateRandomString(20);
LocalDateTime now = LocalDateTime.now();
// Save data in Strategy
StrategySwitcher.setClOrdID(p, ClOrdID);
// Build and send request
quickfix.fix44.NewOrderSingle message = new quickfix.fix44.
NewOrderSingle();
message.setField(new ClOrdID(ClOrdID)); //11
message.setField(new SecurityID("4001")); //48
message.setField(new SecurityIDSource("8")); //22
message.setField(new Symbol(p)); //55 Ticker symbol
message.setField(new Side(SideValue)); //54 Side. 1 = Buy, 2 = Sell
message.setField(new ExecInst("H"));
//18 H = Reinstate on System Failure (Do not cancel on disconnect); Q
= Cancel on System Failure (Cancel on disconnect)
message.setField(new TransactTime(now));
//60 Time this order request was initiated/released by the trader,
trading system, or intermediary. Ignored by LMAX.
message.setField(new OrderQty(OrderQty));
//38 The number of contracts that an order is for.
message.setField(new OrdType(OrdTypeValue));
//40 Order type. 1 = Market, 2 = Limit, 3 = Stop, 4 = Stop Limit
switch (String.valueOf(OrdTypeValue)) {
case "2": // LIMIT
message.setField(new Price(price));
// 44 Price. Required for limit OrdTypes.
break;
case "3": // STOP
message.setField(new StopPx(price));
// 99 StopPx. Required for stop OrdTypes.
break;
}
message.setField(new TimeInForce(TimeInForceMap.get(
"GOOD_TILL_CANCEL")));
// 59 Specifies how long the order remains in effect. 0 = Day (trading
session), 1 = Good Till Cancel (GTC), 3 = Immediate or Cancel (IOC),
4 = Fill or Kill (FOK)
Session.sendToTarget(message, senderCompID, tradeTargetCompID);
}
In my case:
SideValue => SELL which is 2
OrdTypeValue => LIMIT which is 2
|