Esempio n. 1
0
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()
Esempio n. 2
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)
Esempio n. 3
0
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
Esempio n. 4
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()
Esempio n. 5
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
Esempio n. 6
0
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
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
Esempio n. 8
0
def main(config_file):
    """Main"""
    try:
        settings = quickfix.SessionSettings(config_file)
        application = Application()
        storefactory = quickfix.FileStoreFactory(settings)
        logfactory = quickfix.FileLogFactory(settings)
        acceptor = quickfix.SocketAcceptor(application, storefactory, settings,
                                           logfactory)

        acceptor.start()
        application.run()
        acceptor.stop()

    except (quickfix.ConfigError, quickfix.RuntimeError) as e:
        print(e)
        acceptor.stop()
        sys.exit()
Esempio n. 9
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)
Esempio n. 10
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()
Esempio n. 11
0
def start_fix(file_name):
    try:
        settings = fix.SessionSettings(file_name)
        application = FixApplication()
        storeFactory = fix.FileStoreFactory(settings)
        logFactory = fix.FileLogFactory(settings)
        print('Creating FIX Acceptor')
        acceptor = fix.SocketAcceptor(application, storeFactory, settings,
                                      logFactory)

        print('Starting FIX Acceptor')
        acceptor.start()

        while 1:
            time.sleep(1)

        acceptor.stop()
    except (fix.ConfigError, fix.RuntimeError) as e:
        print(e)
Esempio n. 12
0
def main(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()

    app.set_logging(logger)

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

    try:
        acceptor.start()
        logger.info("FIX4.2 server started.")

        while True:
            sleep(1)
            if MARKETS:
                for market in MARKETS:
                    logger.debug(f"\n{MARKETS[market]._show_orderbook()}")

    except (fix.ConfigError, fix.RuntimeError) as error:
        raise fix.RuntimeError(error)
    except KeyboardInterrupt:
        logger.info(f"Got signal interrupt, exiting...")
        acceptor.stop()
Esempio n. 13
0
			executionReport.setField( fix.ExecType(fix.ExecType_FILL) )
			executionReport.setField( fix.LeavesQty(0) )

		time.sleep(5)

		try:
			fix.Session.sendToTarget( executionReport, sessionID )
		except SessionNotFound as e:
			return

	def genOrderID(self):
		self.orderID = self.orderID+1
		return self.orderID
	def genExecID(self):
		self.execID = self.execID+1
		return self.execID

try:
	file = sys.argv[1]
	settings = fix.SessionSettings( file )
	application = Application()
	storeFactory = fix.FileStoreFactory( settings )
	logFactory = fix.ScreenLogFactory( settings )
	acceptor = fix.SocketAcceptor( application, storeFactory, settings, logFactory )
	acceptor.start()

	while 1:
	      time.sleep(1)
except (fix.ConfigError, fix.RuntimeError) as e:
	print(e)
Esempio n. 14
0
    def start(self):
        """"""
        self.register_event()

        # For child app
        child_settings = fix.SessionSettings()
        child_dict = fix.Dictionary()

        child_dict.setString("ConnectionType", "acceptor")
        child_dict.setString("ResetOnLogon", "Y")
        child_dict.setString("FileLogPath", "./genus_log/child")
        child_dict.setString("LogonTimeout", "30")
        child_dict.setString("StartTime", "00:00:00")
        child_dict.setString("EndTime", "00:00:00")
        child_dict.setString("HeartBtInt", "30")
        child_dict.setString("CheckLatency", "N")
        child_dict.setString("UseDataDictionary", "N")
        child_dict.setString("FileStorePath", "./genus_store/child")
        child_dict.setString("ScreenLogShowIncoming", "N")
        child_dict.setString("ScreenLogShowOutgoing", "N")
        child_dict.setString("ScreenLogShowEvents", "N")

        child_dict.setString("SocketAcceptHost", SETTINGS["genus.child_host"])
        child_dict.setString("SocketAcceptPort", SETTINGS["genus.child_port"])

        child_session = fix.SessionID("FIX.4.2",
                                      SETTINGS["genus.child_sender"],
                                      SETTINGS["genus.child_target"])
        child_settings.set(child_session, child_dict)

        child_store_factory = fix.FileStoreFactory(child_settings)
        child_log_factory = fix.ScreenLogFactory(child_settings)

        self.child_app: GenusChildApp = GenusChildApp(self)
        self.child_socket = fix.SocketAcceptor(self.child_app,
                                               child_store_factory,
                                               child_settings,
                                               child_log_factory)
        self.child_socket.start()

        # For parent app
        parent_settings = fix.SessionSettings()
        parent_dict = fix.Dictionary()

        parent_dict.setString("ConnectionType", "initiator")
        parent_dict.setString("ResetOnLogon", "Y")
        parent_dict.setString("FileLogPath", "./genus_log/parent")
        parent_dict.setString("LogonTimeout", "30")
        parent_dict.setString("StartTime", "00:00:00")
        parent_dict.setString("EndTime", "00:00:00")
        parent_dict.setString("HeartBtInt", "30")
        parent_dict.setString("CheckLatency", "N")
        parent_dict.setString("UseDataDictionary", "N")
        parent_dict.setString("FileStorePath", "./genus_store/parent")
        parent_dict.setString("ScreenLogShowIncoming", "N")
        parent_dict.setString("ScreenLogShowOutgoing", "N")
        parent_dict.setString("ScreenLogShowEvents", "N")

        parent_dict.setString("SocketConnectHost",
                              SETTINGS["genus.parent_host"])
        parent_dict.setString("SocketConnectPort",
                              SETTINGS["genus.parent_port"])

        parent_session = fix.SessionID("FIX.4.2",
                                       SETTINGS["genus.parent_sender"],
                                       SETTINGS["genus.parent_target"])
        parent_settings.set(parent_session, parent_dict)

        parent_store_factory = fix.FileStoreFactory(parent_settings)
        parent_log_factory = fix.ScreenLogFactory(parent_settings)

        self.parent_app: GenusParentApp = GenusParentApp(self)
        self.parent_socket = fix.SocketInitiator(self.parent_app,
                                                 parent_store_factory,
                                                 parent_settings,
                                                 parent_log_factory)
        self.parent_socket.start()
Esempio n. 15
0
from __future__ import print_function
import sys
import time
import quickfix as fix
import at_application

if len(sys.argv) == 0:
    print("usage: at.py -f FILE")
    exit

file = sys.argv[1]

settings = fix.SessionSettings(file)
application = at_application.Application()
factory = fix.FileStoreFactory("store")

acceptor = fix.SocketAcceptor(application, factory, settings)

acceptor.start()
while 1:
    time.sleep(1)
acceptor.stop()
        table = texttable.Texttable()
        table.set_cols_width([16, 32])
        for key in self.orders[orderID]:
            table.add_row([key, self.orders[orderID][key]])
        print table.draw()


if len(sys.argv) > 1:
    configFile = sys.argv[1]
else:
    configFile = 'mfs-quickfix.cfg'
settings     = quickfix.SessionSettings(configFile)
application  = FIXServer()
logFactory   = quickfix.ScreenLogFactory(settings)
storeFactory = quickfix.FileStoreFactory(settings)
acceptor     = quickfix.SocketAcceptor(application, storeFactory, settings)
fixServer    = threading.Thread(target=acceptor.start())
fixServer.start()

def help():
    print "Commands are: "
    print "\tbook                       ## Shows current order book"
    print "\tack [orderID]              ## Sends acknowledgement on orderID"
    print "\tcancel [orderID]           ## Sends cancel ack on orderID"
    print "\tfill [orderID] [quantity]  ## Sends a fill on orderID with quantity"
    print "\torder [orderID]            ## Provides details about the order"
    print "\tremove [orderID]           ## Removes the order from the book"
    print "\treplace [orderID]          ## Sends a ReplaceAck on orderID"
    print "\treplacepend [orderID]      ## Sends a ReplacePending message for orderID"
    print "\texit                       ## Shuts down this server"