Quickfix字段标记无效:54

时间:2018-06-15 05:13:05

标签: python-3.x python-3.6 quickfix

您好我正在尝试将Quickfix与FIX 4.4一起使用Python Wrapper用于个人简历构建器。我已经谷歌搜索到了所有人的帮助,但没有找到任何解决这个问题。

所以在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,chr(1))

我们试图强迫它成为一个char但是当我们将消息发送到服务器时我们仍然接受:

(Invalid message: Field tag is invalid: 54)

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

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

输入此键:

jaiPj3brnf7tlgy5X28BgqwCwxpIq7H%BH6b81joE!rUzWof9hQvvby3

有没有人有过为何仍然公然拒绝我们的信息的经验?

感谢您的阅读。

1 个答案:

答案 0 :(得分:0)

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