コード例 #1
0
def create_initiator(initiator_config, simulation_config):
    def create_subscriptions(instruments):
        result = Subscriptions()

        for instrument in instruments:
            subscription = Subscription(instrument['symbol'])
            result.add(subscription)

        return result

    settings = quickfix.SessionSettings(initiator_config)
    config = load_yaml(simulation_config)

    fix_version = create_fix_version(config)

    subscriptions = create_subscriptions(config['instruments'])

    logger = create_logger(config)
    subscribe_interval = config.get('subscribe_interval', 1)
    skip_snapshot_chance = config.get('skip_snapshot_chance', 0)
    application = Client(fix_version, logger, skip_snapshot_chance,
                         subscribe_interval, subscriptions)
    storeFactory = quickfix.FileStoreFactory(settings)
    logFactory = quickfix.ScreenLogFactory(settings)
    initiator = quickfix.SocketInitiator(application, storeFactory, settings,
                                         logFactory)
    return initiator
コード例 #2
0
 def _create_fix_socket(self, config_file):
     settings = fix.SessionSettings(config_file)
     gateway = FixMarketAdapter(self)
     store_factory = fix.FileStoreFactory(settings)
     log_factory = fix.ScreenLogFactory(settings)
     return fix.SocketInitiator(gateway, store_factory, settings,
                                log_factory)
コード例 #3
0
def main():
    try:
        settings = fix.SessionSettings('config/client.cfg')
        application = Client()
        storeFactory = fix.FileStoreFactory(settings)
        logFactory = fix.FileLogFactory(settings)
        client = fix.SocketInitiator(application, storeFactory, settings,
                                     logFactory)
        client.start()
        while True:
            order = raw_input().strip().split()
            cmd, order_id, side, qty, price = order
            message_details = order_id, side, float(qty), float(price)
            if cmd == 'x':
                client.stop()
                break
            if cmd == 'n':
                # new order
                application.new_order(message_details)
            if cmd == 'c':
                # cancel order
                application.cancel_order(message_details)
            if cmd == 'r':
                # replace order
                application.replace_order(message_details)
            if cmd == 'm':
                # market data request
                application.market_data_request()
            time.sleep(1)
    except (fix.ConfigError, fix.RuntimeError), e:
        print(e)
コード例 #4
0
def main(config_file):
    try:
        settings = fix.SessionSettings(config_file)
        application = Application()
        storeFactory = fix.FileStoreFactory(settings)
        logFactory = fix.FileLogFactory(settings)
        initiator = fix.SocketInitiator(application, storeFactory, settings,
                                        logFactory)
        initiator.start()

        while 1:
            input = raw_input()
            if input == '1':
                print "Colocando orden"
                application.put_order()
            if input == '2':
                sys.exit(0)
            if input == 'd':
                import pdb
                pdb.set_trace()
            else:
                print "Ingresar 1 para mandar una orden, 2 para salir"
                continue
    except (fix.ConfigError, fix.RuntimeError), e:
        print e
コード例 #5
0
ファイル: mainClass.py プロジェクト: pjseoane/FIX-Rofex2020.1
    def __init__(self, config_file, usrId, pswd, targetCompID, tickers, entries):
        # def __init__(self, config_file, usrId, pswd, targetCompID):
        self.config_file = config_file
        self.usrId = usrId
        self.pswd = pswd
        self.targetCompID = targetCompID
        self.tickers = tickers
        self.entries = entries

        try:
            self.settings = fix.SessionSettings(self.config_file)
            self.myFixApplication = rofexEngine(self.usrId, self.pswd, self.targetCompID, self.tickers, self.entries)
            self.storefactory = fix.FileStoreFactory(self.settings)
            self.logfactory = fix.FileLogFactory(self.settings)
            self.initiator = fix.SocketInitiator(self.myFixApplication, self.storefactory, self.settings,
                                                 self.logfactory)

            """
            * Se puede iniciar desde aca
            
            self.initiator.start()
            self.myFixApplication.run()
            self.initiator.stop()
            """
        except (fix.ConfigError, fix.RuntimeError) as e:

            print(e)
            self.initiator.stop()
            sys.exit()
コード例 #6
0
ファイル: initiator.py プロジェクト: xbee/parity
def main():
    try:
        settings = fix.SessionSettings("initiatorsettings.cfg")
        application = Application()
        storeFactory = fix.FileStoreFactory(settings)
        logFactory = fix.FileLogFactory(settings)
        initiator = fix.SocketInitiator(application, storeFactory, settings,
                                        logFactory)
        initiator.start()

        while 1:
            input = raw_input()
            if input == '1':
                print "Putin Order"
                application.put_order()
            if input == '2':
                sys.exit(0)
            if input == 'd':
                import pdb
                pdb.set_trace()
            else:
                print "Valid input is 1 for order, 2 for exit"
                continue
    except (fix.ConfigError, fix.RuntimeError), e:
        print e
コード例 #7
0
def main(config_file):
    #def main():
    """Main"""
    try:

        # *******Lectura de file de configuracion
        cpParser = configparser.RawConfigParser()
        cfgFile = r'../conf/usrCredentials.cfg'
        cpParser.read(cfgFile)
        usrId = cpParser.get('usr-credentials', 'usr')
        pswd = cpParser.get('usr-credentials', 'pswd')
        #************************

        settings = quickfix.SessionSettings(config_file)
        myFixApplication = fixEngine()
        myFixApplication.setUsrId(usrId)
        myFixApplication.setUsrPswd(pswd)

        storefactory = quickfix.FileStoreFactory(settings)
        logfactory = quickfix.FileLogFactory(settings)
        initiator = quickfix.SocketInitiator(myFixApplication, storefactory,
                                             settings, logfactory)

        initiator.start()
        myFixApplication.run()

        #while 1:
        #   myFixApplication.goRobot()

        initiator.stop()

    except (quickfix.ConfigError, quickfix.RuntimeError) as e:
        print(e)
        initiator.stop()
        sys.exit()
コード例 #8
0
 def init_fix_settings(self, default_client_config_file_name=None):
     client_config_file_name_ = self.client_config_file_name if default_client_config_file_name is None \
         else default_client_config_file_name
     settings = fix.SessionSettings(client_config_file_name_)
     self.fix_application = ClientFIXApplication(self)
     self.storeFactory = fix.FileStoreFactory(settings)
     self.logFactory = fix.FileLogFactory(settings)
     self.socket_initiator = fix.SocketInitiator(self.fix_application, self.storeFactory, settings, self.logFactory)
コード例 #9
0
 def CreateInitiator(cls, logger, config):
     logger.setLevel(logging.INFO)
     logging.basicConfig(format='%(asctime)s - %(levelname)s - %(message)s')
     settings = fix.SessionSettings(config)
     application = FixClient(settings, logger)
     storeFactory = fix.FileStoreFactory(settings)
     logFactory = fix.FileLogFactory(settings)
     return fix.SocketInitiator(application, storeFactory, settings, logFactory)
コード例 #10
0
def init_test_client():
    try:
        settings = fix.SessionSettings('client.cfg')
        application = Application()
        storeFactory = fix.FileStoreFactory(settings)
        logFactory = fix.FileLogFactory(settings)
        client = fix.SocketInitiator(application, storeFactory, settings, logFactory)
        client.start()
        return client, application
    except (fix.ConfigError, fix.RuntimeError), e:
        print(e)
コード例 #11
0
 def __init__(self, Brain):
     self.fix_connector = FixConnector(Brain)
     self.settings = quickfix.SessionSettings("./config/config.cfg")
     storefactory = quickfix.FileStoreFactory(self.settings)
     logfactory = quickfix.FileLogFactory(self.settings)
     self.initiator = quickfix.SocketInitiator(self.fix_connector,
                                               storefactory, self.settings,
                                               logfactory)
     self.initiator.start()
     while not self.initiator.isLoggedOn():
         continue
コード例 #12
0
ファイル: server.py プロジェクト: johnberena/pytradesimulator
def main(port=9000, debug=None):
    """FIX gateway

    Accepts orders over a FIX session.

    """
    if debug:
        logger.setLevel(logging.DEBUG)
        logger.info(f"Logging set to debug.")
    else:
        logger.setLevel(logging.INFO)
        logger.info(f"Logging set to info.")

    settings = fix.SessionSettings("configs/exchange.cfg")
    log = fix.FileLogFactory(settings)
    store = fix.FileStoreFactory(settings)
    app = MessageBroker()
    address = ("localhost", port)

    app.set_logging(logger)

    acceptor = fix.SocketAcceptor(app, store, settings, log)

    try:
        acceptor.start()
        logger.info("FIX.4.2 server started.")

        conn = Client(address, authkey=b"Dj$0.Jkx1@")

        logger.info(f"Started market data publisher at port {port}.")

        while True:
            sleep(1)
            if MARKETS:
                for market in MARKETS:
                    # remove the comment below to print debug orderbook
                    # logger.debug(f"\n{MARKETS[market]._show_orderbook()}")
                    if market in FLUSH_BOOK:
                        bids, asks = MARKETS[market].book()
                        trades = []
                        if FLUSH_BOOK[market]:
                            # trades
                            trades = list(set(FLUSH_BOOK[market]))
                        book = Book(market, bids, asks, trades)
                        conn.send(book)
                        FLUSH_BOOK.pop(market)

    except (fix.ConfigError, fix.RuntimeError) as error:
        raise fix.RuntimeError(error)
    except KeyboardInterrupt:
        logger.info(f"Got signal interrupt, exiting...")
        acceptor.stop()
コード例 #13
0
def main():
    sessionID = fix.SessionID('FIX.4.4', SENDERCOMPID, 'PAYMIUM')

    params = fix.Dictionary()
    params.setString('ConnectionType', 'initiator')
    params.setString('StartTime', '00:00:00')
    params.setString('EndTime', '00:00:00')
    params.setString('HeartBtInt', '30')
    params.setString('CheckLatency', 'Y')
    params.setString('SocketConnectHost', '195.154.171.115')
    params.setString('SocketConnectPort', '8359')
    params.setString('DataDictionary', FIX44FILE)
    params.setString('EncryptMethod', '0')

    settings = fix.SessionSettings()
    settings.set(sessionID, params)

    application = MyApplication()
    factory = fix.FileStoreFactory("store")
    acceptor = fix.SocketInitiator(application, factory, settings,
                                   fix.ScreenLogFactory(DEBUG, DEBUG, DEBUG))
    acceptor.start()

    time.sleep(2)

    mdr = fixMsg.MarketDataRequest()
    mdr.setField(fix.MDReqID("MDRQ-%d" % (time.time() * 1000000)))
    # We want the full book here, not just the top
    mdr.setField(fix.MarketDepth(1))
    # We want to get a snapshot and also subscribe to the market depth updates
    mdr.setField(
        fix.SubscriptionRequestType(
            fix.SubscriptionRequestType_SNAPSHOT_PLUS_UPDATES))
    # We'll want only incremental refreshes when new data is available
    mdr.setField(fix.MDUpdateType(fix.MDUpdateType_INCREMENTAL_REFRESH))
    # Specify the currency
    instruments = fixMsg.MarketDataRequest().NoRelatedSym()
    instruments.setField(fix.Symbol("EUR/XBT"))
    mdr.addGroup(instruments)
    # Specify that we'll want the bids and asks
    mdr.setField(fix.NoMDEntryTypes(2))
    group = fixMsg.MarketDataRequest().NoMDEntryTypes()
    group.setField(fix.MDEntryType(fix.MDEntryType_BID))
    group.setField(fix.MDEntryType(fix.MDEntryType_OFFER))
    mdr.addGroup(group)

    fix.Session.sendToTarget(mdr, sessionID)

    while True:
        time.sleep(10)

    acceptor.stop()
コード例 #14
0
    def __init__(self, config_file, usrId, pswd):
        Thread.__init__(self)

        self.config_file = config_file

        self.settings = fix.SessionSettings(config_file)
        self.myFixApplication = rofexEngine(usrId, pswd)

        self.storefactory = fix.FileStoreFactory(self.settings)
        self.logfactory = fix.FileLogFactory(self.settings)
        self.initiator = fix.SocketInitiator(self.myFixApplication,
                                             self.storefactory, self.settings,
                                             self.logfactory)
コード例 #15
0
def main():
    try:
        settings = fix.SessionSettings('config/executor.cfg')
        application = Executor()
        storeFactory = fix.FileStoreFactory(settings)
        logFactory = fix.FileLogFactory(settings)
        executor = fix.SocketAcceptor(application, storeFactory, settings,
                                      logFactory)
        executor.start()
        while True:
            time.sleep(1)
    except (fix.ConfigError, fix.RuntimeError), e:
        print(e)
コード例 #16
0
ファイル: acceptor.py プロジェクト: somghosh/fixtest
def main(config_file):
    try:
        settings = fix.SessionSettings("acceptor.conf")
        application = Application()
        storeFactory = fix.FileStoreFactory(settings)
        logFactory = fix.FileLogFactory(settings)
        initiator = fix.SocketAcceptor(application, storeFactory, settings,
                                       logFactory)
        initiator.start()

        while 1:
            pass
    except (fix.ConfigError, fix.RuntimeError), e:
        print e
コード例 #17
0
    def __init__(self, config_file='../config/pricing.conf', username = '', password = ''):
        self.config_file = config_file
        self.fix_pricing_instance = FixPricing(fix.Session, username, password)

        self.fix_settings = fix.SessionSettings(self.config_file)
        self.fix_store_factory = fix.FileStoreFactory(self.fix_settings)
        self.log_factory = fix.ScreenLogFactory(self.fix_settings)

        self.initiator = fix.SocketInitiator(self.fix_pricing_instance,
                                             self.fix_store_factory,
                                             self.fix_settings,
                                             self.log_factory)

        self.initiator.start()
コード例 #18
0
def main(client_config="configs/mdclient1.cfg", debug=None):
    """FIX market data client

    Client to receive market data over a FIX session.

    """
    if debug:
        logger.setLevel(logging.DEBUG)
        logger.info(f"Logging set to debug.")
    else:
        logger.setLevel(logging.INFO)
        logger.info(f"Logging set to info.")

    config = configparser.ConfigParser()

    config.read(client_config)

    sender_compid = config["SESSION"]["SenderCompID"]
    target_compid = config["SESSION"]["TargetCompID"]

    settings = fix.SessionSettings(client_config)
    store = fix.FileStoreFactory(settings)
    app = MarketDataClient()

    app.set_logging(logger)

    initiator = fix.SocketInitiator(app, store, settings)

    initiator.start()

    sleep(1)

    symbol = int(input("Enter choice: - "
                       "\n1. request instruments"
                       "\n2. Enter symbol to subscribe: hello"
                       "\n> "))
    # symbol = input("Enter symbol to subscribe: ")
    if (symbol == 1):
        app.security_definition_request(sender_compid, target_compid)
    else:
        symbol = "all"
        app.market_data_request(sender_compid, target_compid, [symbol])

    try:
        while True:
            sleep(1)
    except KeyboardInterrupt:
        logger.info("Caught interrupt, exiting...")
        initiator.stop()
        sys.exit()
コード例 #19
0
ファイル: gainfixtrader.py プロジェクト: toczkos/transfixed
 def Create(cls, logger, config, storeMessages):
     logger.setLevel(logging.INFO)
     logging.basicConfig(
         format='%(asctime)s - %(levelname)s - %(threadName)s - %(message)s'
     )
     settings = fix.SessionSettings(config)
     application = GainApplication(settings, logger)
     storeFactory = fix.FileStoreFactory(
         settings) if storeMessages else fix.MemoryStoreFactory()
     logFactory = fix.FileLogFactory(settings) if storeMessages else None
     init = fix.SocketInitiator(application, storeFactory, settings,
                                logFactory)
     client = FixClient(init, logger)
     application.FixClientRef = client
     return client
コード例 #20
0
def main(config_file):
    try:
        settings = fix.SessionSettings(config_file)
        application = Application()
        storefactory = fix.FileStoreFactory(settings)
        logfactory = fix.FileLogFactory(settings)
        acceptor = fix.SocketAcceptor(application, storefactory, settings,
                                      logfactory)
        acceptor.start()
        while (1):
            time.sleep(10)

    except (fix.ConfigError, fix.RuntimeError) as e:
        print(e)
        sys.exit()
コード例 #21
0
def main(config_file):
    try:
        settings = quickfix.SessionSettings(config_file)
        application = Application()
        storefactory = quickfix.FileStoreFactory(settings)
        logfactory = quickfix.FileLogFactory(settings)
        initiator = quickfix.SocketInitiator(application, storefactory,
                                             settings, logfactory)

        initiator.start()
        application.run()
        initiator.stop()

    except (quickfix.ConfigError, quickfix.RuntimeError) as e:
        print(e)
        sys.exit()
コード例 #22
0
def main(file_name):

    try:
        settings = fix.SessionSettings(file_name)
        application = Application()
        storeFactory = fix.FileStoreFactory( settings )
        logFactory = fix.FileLogFactory( settings )
        print 'creating acceptor'
        acceptor = fix.SocketAcceptor( application, storeFactory, settings, logFactory )
        print 'starting acceptor'
        acceptor.start()

        while 1:
            time.sleep(1)
    except (fix.ConfigError, fix.RuntimeError), e:
        print e
コード例 #23
0
    def __init__(self, config_file, market, user, passwd, account):
        Thread.__init__(self)
        self.config_file = config_file
        self.market = market
        self.user = user
        self.passwd = passwd
        self.account = account

        self.settings = fix.SessionSettings(self.config_file)
        self.application = Application(self.market, self.user, self.passwd,
                                       self.account)
        self.storefactory = fix.FileStoreFactory(self.settings)
        self.logfactory = fix.FileLogFactory(self.settings)
        self.initiator = fix.SocketInitiator(self.application,
                                             self.storefactory, self.settings,
                                             self.logfactory)
コード例 #24
0
ファイル: Acceptor.py プロジェクト: 00xE8/Fix-Client-Python
def main(fileName):
    if len(sys.argv) < 2:
        return
    fileName = sys.argv[1]

    try:
        settings = quickfix.SessionSettings(fileName)
        application = quickfix.MyApplication()
        storeFactory = quickfix.FileStoreFactory(settings)
        logFactory = quickfix.FileLogFactory(settings)
        acceptor = quickfix.SocketAcceptor(application, storeFactory, settings,
                                           logFactory)
        acceptor.start()
        # while condition == true: do something
        acceptor.stop()
    except quickfix.ConfigError, e:
        print e
コード例 #25
0
def create_acceptor(acceptor_config, simulation_config):
    def create_subscriptions(sources):
        subscriptions = Subscriptions()

        for source in sources:
            variation = source.get('variation', None)
            if variation:
                step, limit = variation.get('step',
                                            0), variation.get('limit', 0)
            else:
                step, limit = 0, 0

            subscription = Subscription(source['symbol'],
                                        SnapshotGenerator(step, limit))

            for quote in source['bid']:
                subscription.generator.addQuote(
                    Quote(Quote.BID, quote['price'], quote['size']))

            for quote in source['ask']:
                subscription.generator.addQuote(
                    Quote(Quote.ASK, quote['price'], quote['size']))

            subscriptions.add(subscription)
        return subscriptions

    settings = quickfix.SessionSettings(acceptor_config)

    config = load_yaml(simulation_config)

    fix_version = create_fix_version(config)

    publish_interval = config.get("publish_interval", 1)
    subscriptions = create_subscriptions(config['instruments'])

    logger = create_logger(config)
    rejectRate = config.get("reject_rate", 0)

    application = Server(fix_version, logger, publish_interval, rejectRate,
                         subscriptions)
    storeFactory = quickfix.FileStoreFactory(settings)
    logFactory = quickfix.ScreenLogFactory(settings)
    acceptor = quickfix.SocketAcceptor(application, storeFactory, settings,
                                       logFactory)
    return acceptor
コード例 #26
0
def main(file_name):
    """Main"""
    log.info("-->> initiator main file_name:{}".format(file_name))
    try:
        settings = fix.SessionSettings(file_name)
        application = Application()
        storefactory = fix.FileStoreFactory(settings)
        logfactory = fix.FileLogFactory(settings)
        initiator = fix.SocketInitiator(application, storefactory, settings, logfactory)
        application.initiator = initiator

        initiator.start()
        application.run()
        initiator.stop()
    except (fix.ConfigError, fix.RuntimeError) as e:
        print(e)
        initiator.stop()
        sys.exit()
コード例 #27
0
def main(file_name):
    """run an acceptor application service"""
    log.info("-->> executor main file_name:{}".format(file_name))
    try:
        settings = fix.SessionSettings(file_name)
        application = Application()
        storeFactory = fix.FileStoreFactory(settings)
        logFactory = fix.FileLogFactory(settings)

        acceptor = fix.SocketAcceptor(application, storeFactory, settings,
                                      logFactory)
        log.info('-->> starting acceptor')
        acceptor.start()

        while 1:
            time.sleep(1)
    except (fix.ConfigError, fix.RuntimeError) as e:
        print(e)
コード例 #28
0
ファイル: main.py プロジェクト: waddle-dev-py/fixit
def main(path):

    try:
        settings = fix.SessionSettings(path.name)
        application = Application(
            username=os.environ['FIX_USERNAME'],
            password=os.environ['FIX_PASSWORD'],
            sender_sub_id=os.environ['FIX_SENDER_SUB_ID'])
        store_factory = fix.FileStoreFactory(settings)
        log_factory = fix.FileLogFactory(settings)
        initiator = fix.SocketInitiator(application, store_factory, settings,
                                        log_factory)
        initiator.start()
        application.run()
        # time.sleep(5)
        initiator.stop()
    except fix.ConfigError as e:
        print(e)
コード例 #29
0
def main(port=9000, debug=None):
    """FIX price gateway

    Sends market data snapshot over FIX.

    """
    if debug:
        logger.setLevel(logging.DEBUG)
        logger.info("Logging set to debug.")
    else:
        logger.setLevel(logging.INFO)
        logger.info("Logging set to info.")

    settings = fix.SessionSettings("configs/price.cfg")
    log = fix.FileLogFactory(settings)
    store = fix.FileStoreFactory(settings)
    app = MarketDataAdapter()
    address = ("localhost", port)

    book = Book("Market", [(1, 1)], [(1, 1)], [])

    app.set_logging(logger)

    acceptor = fix.SocketAcceptor(app, store, settings, log)

    try:
        acceptor.start()

        logger.info("FIX.4.2 maarket data server started.")
        logger.debug(f"Starting listener on port {port}.")

        conn = Listener(address, authkey=b"Dj$0.Jkx1@").accept()

        logger.debug(f"Accepted orderbook connection on port {port}.")

        while True:
            book = conn.recv()
            app.dispatch(book)

    except (fix.ConfigError, fix.RuntimeError) as error:
        raise fix.RuntimeError(error)
    except KeyboardInterrupt:
        logger.info(f"Got signal interrupt, exiting...")
        acceptor.stop()
コード例 #30
0
    def create(cls, config_filename: str):
        config = parse_config(config_filename)

        rv = cls()

        rv.incoming_messages = Queue()
        rv.outgoing_messages = Queue()

        rv.data_dict = fix.DataDictionary(config['DataDictionary'])
        rv.enums = parse_enums(config['DataDictionary'])
        rv.username = config.get('Username')
        rv.password = config.get('Password')

        settings = fix.SessionSettings(config_filename)
        rv.socket_initiator = fix.SocketInitiator(
            rv, fix.FileStoreFactory(settings), settings,
            fix.FileLogFactory(settings))

        return rv