我試圖通過使用QuickFix/J lib的TargetCompID執行「列表順序」(外匯訂單)。如何在QuickFix/J中創建列表順序消息
如果我理解正確的FIX標準的消息,我的消息必須具有以下字段(我已經把我的價值觀括號):
頁眉部分
- 8 BeginString(FIX.4.4)
- 9 BodyLength(將被計算併發送時由quickfixj提供)
- 35 MSGTYPE(E = NewOrderList)
- 34 MsgSeqNum(將被計算並通過曲提供ickfixj whend發送)
- 49 SenderCompId(就是我)
- 52 SendingTime(將被計算和發送時quickfixj提供)
- 56 TargetCompId(這是我的對手,這將執行我的FX訂單)
然後身體部分
- 66 ListId(uniq的ID計算的)
- 68 ToNoOrders(我的訂單的計數到列表)
- 73個NoOrders(計數值用的,因爲我會馬上生成訂單的完整列表)
然後重複以下領域(每個訂單一個列表域在我的列表)的列表:
- 11 ClOrdId(我的訂單編號)
- 67 ListSeqNo(訂單到我的列表中的索引:從1到N; N = ToNoOrders = NoOrders)
- ...其他幾個領域的15(貨幣),120(SettlCurrency)
要做到這一點我做(在Java/quickfixj):
Message message = new Message();
Header header = message.getHeader();
header.setField(new BeginString("FIX.4.4"));
header.setField(new MsgType("E"));
header.setField(new SenderCompID("it's me"));
header.setField(new TargetCompID("my counterparty"));
message.setField(new ListID(_fixListId));
message.setField(new TotNoOrders(_list.size()));
message.setField(new NoOrders(_list.size()));
int idx = 0;
for (Order order : _list) {
message.setField(new ClOrdID(order.getId()));
message.setField(new ListSeqNo(++idx));
//message.setField(.... other fields to add to describe my order)
}
但是,在我的quickfixj應用程序的回調函數toApp(「這是您發送給交易對手的應用程序消息的回調」)時,通過在參數(syso(message))中顯示消息來顯示我的信息中只有一個訂單,這是我放過的最後一個訂單。
看起來他們是我們可以在QuickFixJ中創建的一些「組」,我們可以在同一個消息中添加幾個組。但是有很多類型的組,我不知道什麼是適合我的「列表順序」的組,如果有的話?我發現Message的子類是NewOrderList(它是我的MsgType = E),但它不是一個「組」。並且它必須可以創建消息並直接提供MsgType ...
或者我可能不正確地理解我必須提供的FIX消息標準和字段?
問候,
亞歷
好的,從http://btobits.com/fixopaedia/fixdic44/message_New_Order_List_E_.html;它表示「ClOrdID必須是重複組中的第一個字段」;所以我不得不使用重複組...來找到quickfixj(以及哪一個)。 – Alexxx