FIX QuoteRequest标题字段乱序(或不支持的消息)

时间:2017-03-21 20:45:26

标签: quickfix fix-protocol

我决定在决定是否下订单之前发送QuoteRequest以获取报价,但修复服务器不满意。在我看来,我遵循文档herehere,但显然我错过了一些明显的东西。

虽然如果FIXimulate(Windows和Mac)并且收到两个不同的共鸣,我会向两个相同的安装发送相同的消息。

这里是config.ini

# default settings for sessions
[DEFAULT]
ConnectionType=initiator
ReconnectInterval=60
SenderCompID=BANZAI

[SESSION]
BeginString=FIX.4.2
TargetCompID=FIXIMULATOR
StartTime=00:00:00
EndTime=00:00:00
# overide default setting for RecconnectInterval
ReconnectInterval=30
HeartBtInt=30
SocketConnectPort=9878
# SocketConnectHost=127.0.0.1
SocketConnectHost=192.168.1.67
DataDictionary=FIX42.xml
FileStorePath=.

我发送的消息:             8=FIX.4.2|9=90|35=R|34=2|49=BANZAI|52=20170322-11:48:49.000|56=FIXIMULATOR|131=0004|146=1|55=AMZN|38=100|10=180

使用更新的代码避免使用标题手动摆弄:

def sendQuoteRequest(self):
    message = quickfix.Message()
    message.getHeader().setField(quickfix.BeginString(quickfix.BeginString_FIX42))
    message.getHeader().setField(quickfix.MsgType(quickfix.MsgType_QuoteRequest))
    message.setField(quickfix.QuoteReqID("0004"))  # 131

    group = quickfix43.QuoteRequest().NoRelatedSym()
    group.setField(quickfix.Symbol('AMZN'))
    group.setField(quickfix.OrderQty(100))
    message.addGroup(group)

    print "QuoteRequest: " + str(message)
    quickfix.Session.sendToTarget(message, self.sessionID)

但是我仍然有同样的错误58 =不支持的消息类型| 372 = R | 380 = 3:

  8=FIX.4.2|9=105|35=j|34=2|49=FIXIMULATOR|52=20170322-11:48:49.689|56=BANZAI|45=2|58=Unsupported Message Type|372=R|380=3|10=099

我完全糊涂了,真的会帮助你!

1 个答案:

答案 0 :(得分:0)

我已经广泛使用了QF和Python,并且总是设置标题字段,就像在文档中一样。我认为问题实际上在你的最后一行。尝试仅传递消息本身,而不是消息和sessionID,如:

quickfix.Session.sendToTarget(message)

另外,当我打电话给我时,出于某种原因我必须写

quickfix.Session_sendToTarget(message)

这是非常不同的。我们可能使用不同版本的QF。在任何情况下,看起来你的消息都会消失,但如果你绝望了,你可以试试下划线。