我使用QuickFix / N向IB发送MultiLeg订单。我的邮件被拒绝,错误58 =此标记的值不正确(超出范围)(标记= 167)。经纪人告诉我,该标签的正确值是“MLEG”,这是我设置的。消息流如下:
<outgoing> 8=FIX.4.2_9=229_35=AB_34=2_49=direc513_52=20150904-13:46:32.201_56=IB_11=1234.76_15=USD_21=2_38=10000_40=1_54=1_55=ACC-PLD_60=20150904-21:46:32.161_167=MLEG_207=SMART_555=2_600=ACC_608=ES_623=1255_624=1_564=O_600=PLD_608=ES_623=1066_624=2_564=O_10=220_
<incoming> 8=FIX.4.2_9=000238_35=8_34=000002_43=N_52=20150904-13:46:33_49=IB_56=direc513_11=1234.76_17=17556.1441374393.0_150=8_20=0_103=0_39=8_55=USD_38=10000_44=0.00_32=0_31=0.00_14=0_151=0_6=0_54=1_37=0_167=MLEG_58=Unsupported type_60=20150904-13:46:33_40=1_15=USD_10=136_
A first chance exception of type 'QuickFix.IncorrectTagValue' occurred in QuickFix.dll
<event> Message 2 Rejected: Value is incorrect (out of range) for this tag (Field=167)
<outgoing> 8=FIX.4.2_9=128_35=3_34=3_49=direc513_52=20150904-13:46:32.998_56=IB_45=2_58=Value is incorrect (out of range) for this tag_371=167_372=8_373=5_10=204_
经纪人告诉我,他会检查拒绝,但第二个传出消息表明,在我这边我们拒绝167 = MLEG并需要放松。
我不确定这里要做什么,但我使用4.2并注意到MLEG仅在4.3中定义。由于经纪人更喜欢4.2,我把MLEG定义放在4.3数据字典中。此时,我不再遇到相同的错误,但现在收到“不支持的类型”错误。
<outgoing> 8=FIX.4.2_9=229_35=AB_34=2_49=direc513_52=20150907-08:17:41.066_56=IB_11=1234.67_15=USD_21=2_38=10000_40=1_54=1_55=ACC-PLD_60=20150907-16:17:41.022_167=MLEG_207=SMART_555=2_600=ACC_608=ES_623=1255_624=1_564=O_600=PLD_608=ES_623=1066_624=2_564=O_10=235_
<incoming> 8=FIX.4.2_9=000238_35=8_34=000002_43=N_52=20150907-08:17:46_49=IB_56=direc513_11=1234.67_17=17556.1441613866.0_150=8_20=0_103=0_39=8_55=USD_38=10000_44=0.00_32=0_31=0.00_14=0_151=0_6=0_54=1_37=0_167=MLEG_58=Unsupported type_60=20150907-08:17:46_40=1_15=USD_10=155_
所以我想到的直接问题是:
我没有包含代码,因为我知道在知道问题后我知道用什么代码来创建消息。但是,如果有人认为它会有用,我就可以做到。
非常感谢任何帮助。
答案 0 :(得分:1)
MsgType AB(NewOrderMultileg)仅在FIX 4.3中添加,因此我怀疑这是“不支持的类型”消息的原因。你会注意到你的第一个例子也出现了这个错误,你的标签167值被拒绝了。
将新值添加到字典中是将其添加为有效值的正确方法。
我怀疑您的经纪人实际上希望您发送带有MLEG值和任何其他自定义字段的NewOrderSingle消息(35 = D),以复制NewOrderMultileg的功能。如果做不到这一点,您需要使用更新版本的FIX协议(可能是4.4或5.0)
干杯, 坎贝尔