我正在使用 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_
因此,立即想到的问题是:
- 当经纪人说 MLEG 可以接受时,为什么我会被拒绝,或者这个问题仅仅是因为我在 4.2 DD 中没有这个定义。
- 我还应该做些什么来放松我这边的限制吗?
- 我在 4.2 DD 中包含定义是否正确?
- 如果是这样,不受支持的类型是什么意思,为什么消息不包含错误的标记引用?
- 我问错了问题,有人知道正确的问题吗?
- 传出消息是否还有其他明显错误?
我没有包含代码,因为我认为一旦我知道问题所在,我就知道使用什么代码来创建消息。但是,如果有人认为它有用,我可以做到。
非常感谢任何帮助。