I am using QuickFix/N to send MultiLeg orders to IB. My message is rejected with the error 58=Value is incorrect (out of range) for this tag (tag = 167). The broker informed me that the proper value for that tag was "MLEG" which is what I set it to. Message flow as follows:
<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_
The broker informed me that he would check on the rejection but that the second outgoing message indicated that on my side we were rejecting the 167=MLEG and needed to relax that.
I am not sure what is to be done here, but I am using 4.2 and noticed that MLEG was only defined in 4.3. As the broker prefers 4.2, I put the MLEG definition in the 4.3 Data Dictionary. At this point, I no longer got the same error but am now getting an "Unsupported Type" error.
<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_
So the immediate questions which come to mind are:
- Why do I get a rejection when the broker said MLEG was acceptable or is this issue simply due to the fact that I didn't have that definition in my 4.2 DD.
- Is there something else I should be doing to relax the restriction on my side?
- Did I do the right thing to include the definition in the 4.2 DD?
- If so, what is meant by unsupported type and why did the message not include a tag reference for the error?
- Am I asking the wrong questions and does someone know the right question?
- Is there something else obviously wrong with the outgoing message?
I didn't include code because I think I know what code to use to create the message once I know what is the problem. If, however, someone thinks it would be useful, I could do it.
Any help greatly appreciated.