订单请求是在FIX服务器上发送的,而quickfix.fix50sp1.NewOrderSingle根据它排列序列。如果我要输出序列是由我自己排列的,该怎么办(不会被服务器修改) )。
** public void send50(订购单){
quickfix.fix50sp1.NewOrderSingle newOrderSingle = new quickfix.fix50sp1.NewOrderSingle(new ClOrdID(order.getID()),
sideToFIXSide(order.getSide()), new TransactTime(), typeToFIXType(order.getType()));
newOrderSingle.set(new OrderQty(order.getQuantity()));
newOrderSingle.set(new Symbol(order.getSymbol()));
newOrderSingle.set(new Price(order.getSharePrice()));
newOrderSingle.set(new Account("13501100"));
newOrderSingle.setField(new NoPartyIDs(1));
newOrderSingle.setField(new PartyIDSource('C'));
newOrderSingle.setField(new PartyRole(12));
newOrderSingle.setField(new PartyID("13501100"));**
这是用户给服务器的顺序,由服务器按以下顺序排列:
8 = FIXT.1.1 | 9 = 173 | 35 = D | 34 = 5 | 49 = 135 | 52 = 20200131-05:35:12.956 | 56 = PSE | 1 = 13501100 | 11 = 1580448912441 | 38 = 1000 | 40 = 1 | 44 = 10.78 | 54 = 1 | 55 = AGI | 59 = 0 | 60 = 20200131-13:35:12.956 | 447 = C | 448 = 13501100 | 452 = 12 | 453 = 1 | 10 = 213 |
那么,如果我希望输出按发送的相同顺序怎么办?
Grant和TT正确地指出,除了重复组内部,FIX实际上没有强制执行特定的标签(或字段)排序。但是,有些交易对手需要在消息正文中进行特定的字段排序。
[在消息上设置字段时,QuickFIX / J按照标签在数据字典中出现的顺序排列标签。这是因为特定消息类型的代码是在编译时从数据字典生成的。