Попытка получить Запрос рыночных данных в quickfixengine, используя python 3.7 - PullRequest
0 голосов
/ 14 апреля 2020

Я новичок с Python 3.7 и пытаюсь войти в систему, используя механизм быстрого исправления, любой, пожалуйста, посмотрите на приведенный ниже код и подскажите, как мне войти в систему для модуля быстрого исправления и выполнить свои команды.

I Я не могу найти параметры имени пользователя или пароля в файле конфигурации для установки, поэтому я полагаю, что необходимо войти в систему с помощью команды входа в систему.

import time
import quickfix as fix
import uuid


class Application(fix.Application):
    def onCreate(self, sessionID):
        self.sessionID = sessionID
        print('--------')
        print('onCreate')
        print(sessionID)
        print(self.sessionID)
        return

    def onLogon(self, sessionID):
        print('onLogon')
        return

    def onMessage(self, sessionID):
        print('onMessage')
        return

    def onLogout(self, sessionID):
        print('onLogout')
        return

    def toAdmin(self, message, sessionID):
        print('--------')
        # print(self.sessionID)
        print('toAdmin', message.toString())
        return

    def toApp(self, message, sessionID):
        print('--------')
        print('toApp', message.toString())
        return

    def fromAdmin(self, message, sessionID):
        print('fromAdmin')
        return

    def fromApp(self, message, sessionID):
        print('fromApp')
        return

    def LogonToServer(self):
        print('--------')
        print('LogonToServer')
        print(self.sessionID)
        message = fix.Message()
        header = message.getHeader()
        header.setField(fix.BeginString("FIX.4.4"))
        header.setField(fix.MsgType("A"))
        header.setField(fix.MsgSeqNum(1))
        header.setField(fix.SenderCompID("SENDER_COM_ID"))
        # header.setField(fix.SendingTime(_SendingTime))
        header.setField(fix.TargetCompID("TARGET_COMP_ID"))
        header.setField(fix.EncryptMethod(0))
        header.setField(fix.HeartBtInt(20))
        header.setField(fix.Username("USERNAME"))
        header.setField(fix.Password("PASSWORD"))

        print('--------')
        print('LogonToServer', message.toString())
        test = fix.Session.sendToTarget(message)
        print('--------')
        print('Response', test)
        return


try:
    file = 'Config/settings_live'
    settings = fix.SessionSettings(file)
    application = Application()
    storeFactory = fix.FileStoreFactory(settings)
    logFactory = fix.FileLogFactory(settings)

    initiator = fix.SocketInitiator(
        application, storeFactory, settings, logFactory)
    initiator.start()

    time.sleep(10)
    while 1:
        application.LogonToServer()
        time.sleep(10)

    initiator.stop()
except (fix.ConfigError, fix.RuntimeError) as e:
    print(e)

...