Quickfix 字段标记无效:54

Quickfix Field Tag is Invalid: 54

您好,我正在尝试将 Quickfix 与 FIX 4.4 一起使用,使用 Python 包装器作为个人简历生成器。我已经在谷歌上到处寻求帮助,但没有找到任何解决办法。

所以在 Quickfix 的数据字典中:

field number='54' name='Side' type='CHAR'

它告诉我们这个标签必须是一个CHAR。

但是在我们发送订单的方法中是这样的:

    def sendOrder(self, tradeSide):
    print("Creating the following order: ")
    cTime = datetime.utcnow()
    qOrder = fix.Message()
    print(qOrder)
    qOrder.getHeader().setField( fix.BeginString("FIX.4.4") )
    print(qOrder)
    qOrder.getHeader().setField(35, "D" )       
    print(qOrder)
    qOrder.getHeader().setField(49, "Place_To_Go")
    print(qOrder)
    qOrder.getHeader().setField(56, "Place_To_Trade")
    print(qOrder)
    qOrder.getHeader().setField(43,"Y")
    print(qOrder)
    qOrder.getHeader().setField(52, str(cTime))
    print(qOrder)

    qOrder.setField(40, chr(1) )
    print(qOrder)
    qOrder.setField(11, str(self.genOrderID()))
    print(qOrder)
    qOrder.setField(311, "EUR")
    print(qOrder)
    qOrder.setField(309, "EUR/USD.E.FX")
    print(qOrder)
    qOrder.setField(305, "111") 
    print(qOrder)
    qOrder.setField(54, chr(1))
    print(qOrder)
    qOrder.setField(60, str(cTime))
    print(qOrder)
    qOrder.setField(38, "1" )
    print(qOrder)
    qOrder.setField(59, "1" )

    print("Order:" + str(qOrder))
    print("ayyy")

    fix.Session_sendToTarget(qOrder)

你可以在这一行看到: qOrder.setField(54, 字符(1))

我们试图强制它成为一个字符,但是当我们将消息发送到服务器时,我们仍然收到:

(Invalid message: Field tag is invalid: 54)

在在线测试中,我们的 FIX 消息似乎在该网站上有效:

http://fixparser.targetcompid.com?sharedlink=-LF0tkvCToW5RzneNJg2

输入这个键:

jaiPj3brnf7tlgy5X28BgqwCwxpIq7H%BH6b81joE!rUzWof9hQvvby3

有没有人知道为什么它仍然明目张胆地拒绝我们的消息?

感谢您的阅读。

如果 CHAR(1) 实际上是 ASCII 码 1,则这是 SOH 字符(标题开始)。这不是标记 54 的有效值。您需要字符 1,而不是 SOH。