#python #connection #quickfix #fix-protocol #stunnel
Вопрос:
Я пытаюсь подключиться к ИСПРАВЛЕНИЮ моего контрагента
Для исправления соединения я использую quickfix с python. Вот мои настройки.конфигурация для быстрого исправления (идентификатор отправителя, идентификатор цели, порт и хост, полученные от контрагента):
[DEFAULT]
ConnectionType=initiator
FileStorePath=C:UsersmeDesktopfixstore
FileLogPath=C:UsersmeDesktopfixlog
SenderCompID=sendid
[SESSION]
BeginString=FIX.4.4
ResetOnLogon=Y
StartTime=21:05:00
EndTime=21:03:00
TargetCompID=targid
HeartBtInt=30
SocketConnectPort=port
SocketConectHost=ip
DataDictionary=C:UsersmeDesktopfixFIX44.xml
Вот код моего простого приложения. Сначала я пытаюсь отправить сообщение о входе в систему своему контрагенту (пароль также получен от контрагента).:
class App(fix.Application):
def onCreate(self, sessionID):
print('on create')
return
def onLogon(self, sessionID):
self.sessionID = sessionID
print("Success Logon to session '%s'.", sessionID.toString())
return
def onLogout(self, sessionID):
print('on logout')
return
def toAdmin(self, message, sessionID):
print('to admin')
if message.getHeader().getField(35) == 'A':
message.setField(554, 'password')
print(message.toString())
return
def toApp(self, message, sessionID):
print("Receive message n", message.toString())
return
def fromAdmin(self, message, sessionID):
print('from admin')
return
def fromApp(self, message, sessionID):
print('from app')
return
settings = fix.SessionSettings('settings.config')
storeFactory = fix.SocketInitiator(application, storeFactory, settings, logFactory)
initiator.start()
print('initiator start')
Вывод моего приложения выглядит следующим образом (проблемы с разделителем сообщений при копировании):
on create
initiator start
В моем пути к журналу после initiator.start()
создания четырех .txt
файлов. Их зовут:
FIX.4.4-sendid-targid.event.current.log
FIX.4.4-sendid-targid.messages.current.log
GLOBAL.event.current.log
GLOBAL.messages.current.log
В FIX.4.4-sendid-targid.event.current.log
создает сообщение:
date-time: Created session
, все остальные пусты.
Как вы видите, я пытаюсь отправить сообщение о входе в систему своему контрагенту. Однако я не получаю никаких сведений об успешном входе в систему. Контрагент также не видит никакой связи с моей стороны.
В чем может быть проблема? Кажется, я все делаю по правилам. Пожалуйста, помогите.
Комментарии:
1. Я подозреваю, что (а) ваш контрагент не внес в белый список ваш IP-адрес, с которого вы подключаетесь, поэтому ваше сообщение о входе в систему не попадает через их сеть в механизм ИСПРАВЛЕНИЯ, и (б) вы прекращаете свою инициативу сразу после ее запуска. Вам не нужна
initiator.stop()
2. (a) Я использовал минификс из elato.se для того, чтобы проверить, есть ли какая-либо связь между мной и моим контрагентом, и она была успешной. Таким образом, используя minifix soft, я могу установить вход в систему и получить соответствующий ответ. Так что проблема, я думаю, где-то в самом моем приложении quickfix, и я все еще не могу ее решить. (б) Проверял это раньше, не помогло.
3. 1. Вы дважды проверяли свои КомпИДы? 2. Не отправляйте логин самостоятельно. Инициатор сделает это за вас.
4. Вы прокомментировали это? Было уведомление, но я не вижу комментариев. Может быть, удален?
5. Извините, случайно удалил его.