def __init__(self, db_clients): """ Constructor :param db_client: Database client """ ExchangeGateway.__init__(self, ExchGwApiGdaxTrades(), db_clients) self.api_socket2 = ExchGwApiGdaxOrderBook()
def __init__(self, db_clients): """ Constructor :param db_client: Database client """ ExchangeGateway.__init__(self, ExchGwApiLuno(), db_clients) self.order_book = None
def __init__(self, db_clients): """ Constructor :param db_client: Database client """ ExchangeGateway.__init__(self, ExchGwApiOkexWs(), db_clients)
def __init__(self, db_clients): ExchangeGateway.__init__(self, ExchTradeDeribitWs(), db_clients)
def __init__(self, db_clients): """ Constructor :param db_client: Database client """ ExchangeGateway.__init__(self, ExchGwBtccFutureRestfulApi(), db_clients)
def main(): parser = argparse.ArgumentParser(description='Bitcoin exchange market data feed handler.') parser.add_argument('-instmts', action='store', help='Instrument subscription file.', default='subscriptions.ini') parser.add_argument('-exchtime', action='store_true', help='Use exchange timestamp.') parser.add_argument('-kdb', action='store_true', help='Use Kdb+ as database.') parser.add_argument('-csv', action='store_true', help='Use csv file as database.') parser.add_argument('-sqlite', action='store_true', help='Use SQLite database.') parser.add_argument('-mysql', action='store_true', help='Use MySQL.') parser.add_argument('-zmq', action='store_true', help='Use zmq publisher.') parser.add_argument('-mysqldest', action='store', dest='mysqldest', help='MySQL destination. Formatted as <name:pwd@host:port>', default='') parser.add_argument('-mysqlschema', action='store', dest='mysqlschema', help='MySQL schema.', default='') parser.add_argument('-kdbdest', action='store', dest='kdbdest', help='Kdb+ destination. Formatted as <host:port>', default='') parser.add_argument('-zmqdest', action='store', dest='zmqdest', help='Zmq destination. For example \"tcp://127.0.0.1:3306\"', default='') parser.add_argument('-sqlitepath', action='store', dest='sqlitepath', help='SQLite database path', default='') parser.add_argument('-csvpath', action='store', dest='csvpath', help='Csv file path', default='') parser.add_argument('-output', action='store', dest='output', help='Verbose output file path') args = parser.parse_args() Logger.init_log(args.output) db_clients = [] is_database_defined = False if args.sqlite: db_client = SqliteClient() db_client.connect(path=args.sqlitepath) db_clients.append(db_client) is_database_defined = True if args.mysql: db_client = MysqlClient() mysqldest = args.mysqldest logon_credential = mysqldest.split('@')[0] connection = mysqldest.split('@')[1] db_client.connect(host=connection.split(':')[0], port=int(connection.split(':')[1]), user=logon_credential.split(':')[0], pwd=logon_credential.split(':')[1], schema=args.mysqlschema) db_clients.append(db_client) is_database_defined = True if args.csv: if args.csvpath != '': db_client = FileClient(dir=args.csvpath) else: db_client = FileClient() db_clients.append(db_client) is_database_defined = True if args.kdb: db_client = KdbPlusClient() db_client.connect(host=args.kdbdest.split(':')[0], port=int(args.kdbdest.split(':')[1])) db_clients.append(db_client) is_database_defined = True if args.zmq: db_client = ZmqClient() db_client.connect(addr=args.zmqdest) db_clients.append(db_client) is_database_defined = True if not is_database_defined: print('Error: Please define which database is used.') parser.print_help() sys.exit(1) # Subscription instruments if args.instmts is None or len(args.instmts) == 0: print('Error: Please define the instrument subscription list. You can refer to subscriptions.ini.') parser.print_help() sys.exit(1) # Use exchange timestamp rather than local timestamp if args.exchtime: ExchangeGateway.is_local_timestamp = False # Initialize subscriptions subscription_instmts = SubscriptionManager(args.instmts).get_subscriptions() if len(subscription_instmts) == 0: print('Error: No instrument is found in the subscription file. ' + 'Please check the file path and the content of the subscription file.') parser.print_help() sys.exit(1) # Initialize snapshot destination ExchangeGateway.init_snapshot_table(db_clients) ExchangeGateway.init_detail_snapshot_table(db_clients) Logger.info('[main]', 'Subscription file = %s' % args.instmts) log_str = 'Exchange/Instrument/InstrumentCode:\n' for instmt in subscription_instmts: log_str += '%s/%s/%s\n' % (instmt.exchange_name, instmt.instmt_name, instmt.instmt_code) Logger.info('[main]', log_str) exch_gws = [] ##exch_gws.append(ExchGwBtccSpot(db_clients)) ##exch_gws.append(ExchGwBtccFuture(db_clients)) ##exch_gws.append(ExchGwBitmex(db_clients)) ##exch_gws.append(ExchGwBitfinex(db_clients)) ##exch_gws.append(ExchGwOkCoin(db_clients)) exch_gws.append(ExchGwKraken(db_clients)) exch_gws.append(ExchGwGdax(db_clients)) exch_gws.append(ExchGwBitstamp(db_clients)) exch_gws.append(ExchGwBitflyer(db_clients)) ##exch_gws.append(ExchGwHuoBi(db_clients)) exch_gws.append(ExchGwCoincheck(db_clients)) exch_gws.append(ExchGwCoinOne(db_clients)) ##exch_gws.append(ExchGwGatecoin(db_clients)) ##exch_gws.append(ExchGwQuoine(db_clients)) ##exch_gws.append(ExchGwPoloniex(db_clients)) exch_gws.append(ExchGwBittrex(db_clients)) ##exch_gws.append(ExchGwYunbi(db_clients)) # ##exch_gws.append(ExchGwLiqui(db_clients)) # ##exch_gws.append(ExchGwBinance(db_clients)) # exch_gws.append(ExchGwCryptopia(db_clients)) ##exch_gws.append(ExchGwOkex(db_clients)) #exch_gws.append(ExchGwWex(db_clients)) # error threads = [] for exch in exch_gws: for instmt in subscription_instmts: if instmt.get_exchange_name() == exch.get_exchange_name(): Logger.info("[main]", "Starting instrument %s-%s..." % \ (instmt.get_exchange_name(), instmt.get_instmt_name())) threads += exch.start(instmt)
# -*- coding: utf-8 -*- """ @Author: ShotBoy @File: test_client.py @Time: 2019/12/18 19:44 @Motto:I have a bad feeling about this. """ from exchanges.Deribit.deribit import ExchGwTradeDeribit from exchanges.gateway import ExchangeGateway from util.instrument import Instrument from util.Log import Logger from clients.zmqClient import ZmqClient from time import sleep from datetime import datetime import ast Logger.init_log() dbclient = ZmqClient() dbclient.connect(addr='tcp://127.0.0.1:5000') ExchangeGateway.init_snapshot_table([dbclient]) exchange_name = 'Deribit' instmt_name = 'BTC' instmt_code = 'BTC-20DEC19-7250-C' instmt = Instrument(exchange_name, instmt_name, instmt_code) exch = ExchGwTradeDeribit([dbclient]) exch.start(instmt)