Python quickfix 的配置

Python Configs for quickfix

这是启动器配置:

[SESSION]
ConnectionType=initiator
BeginString=FIX.4.1
SenderCompID=PS
TargetCompID=ND
SocketNodelay=Y
SocketConnectHost=48.40.87.16
SocketAcceptPort=9840
StartTime=07:00:00
EndTime=22:00:00
FileStorePath=C:/Temp/quickfix/store/initiator
FileLogPath=C:/Temp/quickfix/logs/initiator
ReconnectInterval=30
HeartBtInt=20
SocketReuseAddress=Y
UseDataDictionary=N
# DataDictionary=datadictionary/FIX41.xml

这是接受器配置

[SESSION]
ConnectionType=acceptor
BeginString=FIX.4.1
TargetCompID=ND
SenderCompID=PS
SocketNodelay=Y
SocketAcceptPort=9840
StartTime=07:00:00
EndTime=22:00:00
FileStorePath=C:/Temp/quickfix/store/acceptor
FileLogPath=C:/Temp/quickfix/logs/acceptor
SocketReuseAddress=Y
UseDataDictionary=N

我要发送一条非常简单的消息:

def create_message(self):

    print ("Composing Message")
    message = fix.Message();
    header = message.getHeader();

    header.setField(fix.BeginString("FIX.4.1"))
    header.setField(fix.SenderCompID("PS"))
    header.setField(fix.TargetCompID("ND"))
    header.setField(fix.MsgType("D"))
    message.setField(fix.OrigClOrdID("123"))
    message.setField(fix.ClOrdID("321"))
    message.setField(fix.Symbol("LNUX"))
    message.setField(fix.Side('B'))
    message.setField(fix.Text("Really Cancel My Order!"))
    return message

def test_fix(self):
    print ("Testing Fix")
    message = self.create_message()
    fix.Session.sendToTarget(message, self.sessionID)
    print ("Testing FIX ends")

我在启动器 FIX.4.1-PS-ND.body 上的输出确实有它发送的消息。但是我在接受器上什么也没看到。 (1) 我做错了什么/ (2) 发起者如何知道 "ND" 的确切位置(在这种情况下 - TargetCompID=ND)?

我假设您希望发起者和接受者相互连接。这不适用于您的配置,因为它们都具有 same TargetCompIDSenderCompID。 为此,需要在连接的每一端交换 TargetCompIDSenderCompID

所以接受者需要有:

SenderCompID=ND
TargetCompID=PS

只要两端没有连接,调用Session.sendToTarget就会导致消息只写到消息存储中,不发送出去。它会在会话连接后立即发送。

顺便说一句,您的发起人不需要 SocketAcceptPort,而是 SocketConnectPort。 这应该有望连接两端。如果不是,请粘贴错误消息。

已解决:

我犯了一个非常愚蠢的错误。 SocketConnectHost=48.40.87.16

这个IP地址应该是承兑人的IP地址。这实际上也回答了我的 (2) 问题。