我正在使用FIX 4.2和QuickFix和python。我正在连接到CTS,这是一个以奇怪方式完成所有事情的数据提供商。我一直在修改我的数据字典大约4个月(这是地狱)。
我遇到了一个问题,我无法修改数据字典,但它似乎是一个DD问题。我很迷茫。
我发送一个SecurityDefinitionRequest,35 = c,并得到一个SecurityDefinition,35 = d,作为回报。 CTS已经从FIX协议大量改变了标签40。 http://www.ctsfutures.com/wiki/T4%20API%20FIX.Security%20Definition.ashx
我试图将标签40定义为字符串,然后继续使用它。但无论我做什么,我的QF引擎都会使用错误的数据格式拒绝该消息:40
以下是一个例子:
(8=FIX.4.2☺9=591☺35=d☺34=15☺49=CTS☺56=XXX☺50=T4FIX☺52=20141111-15:56:11.62
7☺320=1415721370.22☺322=sd-11/11/2014 9:56:11 AM☺323=4☺911=12☺55=YM☺107=SIM:E-mi
ni Dow BF:+Dec14-2Mar15+Jun15☺48=XCME_E YM (Z14)-2(H15)(M15)☺
(< - 标签40在这里)
40=2083
☺207=CME_E☺200=201412☺205=19☺167=FUT☺762=4☺562=1☺15=USD☺1146=5☺5770=1/1☺555=3☺600=YM☺623=1☺624=1☺609=FUT☺602=XCME_E YM (Z14)☺556=USD☺610=201412☺616=CME_E☺620=SIM:E-mini Dow Dec14☺600=YM☺623=-2☺624=2☺609=FUT☺602=XCME_E YM (H15)☺556=USD☺610=201503☺616=CME_E☺620=SIM:E-mini Dow Mar15☺600=YM☺623=1☺624=1☺609=FUT☺602=XCME_E YM (M15)☺556=USD☺610=201506☺616=CME_E☺620=SIM:E-mini Dow Jun15☺10=235☺)
Incorrect data format for value: 2083
<20141111-15:56:11.087, FIX.4.2:XXX->CTS, event>
(Message 15 Rejected: Incorrect data format for value:40)
<20141111-15:56:11.095, FIX.4.2:XXX->CTS, outgoing>
(8=FIX.4.2☺9=114☺35=3☺34=23☺49=XXX☺52=20141111-15:56:11.095☺56=CTS☺45=15☺5
8=Incorrect data format for value☺371=40☺372=d☺373=6☺10=114☺)
以下是我的数据字典中的条目:
<field number="40" name="OrdType" type="STRING"/>
请注意,我尝试了各种组合,例如:
<field number="40" name="OrdType" type="STRING" allowOtherValues="true"/>
以及明确指定有问题的值
<field number="40" name="OrdType" type="STRING" >
<value enum="2083" description="STUPID" />
</field>
什么都行不通。我总是得到相同的结果。 值的数据格式不正确:40
发生了什么事?!?
答案 0 :(得分:1)
在QuickFIX中,OrdType
class需要quickfix.CharField
:
class OrdType(quickfix.CharField):
def __init__(self, data = None):
if data == None:
quickfix.CharField.__init__(self, 40)
else:
quickfix.CharField.__init__(self, 40, data)
the default FIX42.xml doc中OrdType
的定义证实了这一点:
<field number="40" name="OrdType" type="CHAR">
因此,入站FIX消息中string
的{{1}}值将导致QuickFIX拒绝包含无效数据的消息。您需要修改QuickFIX以允许OrdType
的{{1}}值能够容纳具有CTS自定义值的入站和出站邮件。