Python Конфиги для быстрого исправления - PullRequest
0 голосов
/ 15 января 2020

Конфигурация инициатора:

[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) Как инициатор узнает, где именно (в данном случае, в любом случае, TargetCompID = ND), где "ND"?

Ответы [ 2 ]

1 голос
/ 15 января 2020

Полагаю, вы хотите, чтобы ваш инициатор и акцептор соединялись друг с другом. Это не будет работать с вашей конфигурацией, потому что оба имеют одинаковые TargetCompID и SenderCompID. Чтобы это работало, TargetCompID и SenderCompID необходимо поменять местами на каждом конце соединения.

Таким образом, акцептор должен иметь:

SenderCompID=ND
TargetCompID=PS

До тех пор, пока оба конца не подключены, вызовы Session.sendToTarget приведут к тому, что сообщение будет записано только в хранилище сообщений, но не будет отправлено. Оно будет отправлено, как только сессия подключится.

Кстати, вашему инициатору не нужен SocketAcceptPort, а SocketConnectPort. Надеюсь, это должно соединить оба конца. Если нет, вставьте сообщение об ошибке.

0 голосов
/ 15 января 2020

решено:

Я совершил очень глупую ошибку. SocketConnectHost = 48.40.87.16

Этот IP-адрес должен быть IP-адресом получателя. Это на самом деле отвечает и на мой (2) вопрос.

...