async def get_exchange_pair_data(exchange_id, base_name, quote_name, loop=None): """ 功能: 调用内部api 获取交易对信息 """ symbol = f'{base_name}{quote_name}'.lower() if exchange_id in S_EXCHANGE_NAME_MAP and symbol in S_EXCHANGE_NAME_MAP[exchange_id]['pairs']: return S_EXCHANGE_NAME_MAP[exchange_id]['pairs'][symbol] else: exchange_data_api = f'{settings.C21_CANDLES_API}/pair/infos?exchange_id={exchange_id}&base_name={base_name}"e_name={quote_name}' http = HttpBase(loop=loop) data = {} for i in range(3): response_data = await http.get_json_data(exchange_data_api) if response_data: data = response_data.get('data', {}) break ret_data = { 'pair_id': data.get('pair_id', ''), 'coin_id': data.get('coin_id', ''), 'has_ohlcv': data.get('has_ohlcv', '') } exchange_name = data.get('exchange_name', '') if exchange_id not in S_EXCHANGE_NAME_MAP: S_EXCHANGE_NAME_MAP[exchange_id] = { 'name': exchange_name or str.capitalize(exchange_id), 'pairs': { symbol: ret_data } } S_EXCHANGE_NAME_MAP[exchange_id]['pairs'].update({symbol: ret_data}) await logger.info(S_EXCHANGE_NAME_MAP[exchange_id]) return ret_data
def __init__(self, loop=None, proxy=None, timeout=5): super().__init__(loop, proxy, timeout) self.ws_url = 'wss://www.mxc.com/socket.io/?EIO=3&transport=websocket' self.kline_url = 'https://www.mxc.com/open/api/v1/data/kline?market=BTC_USDT&interval=1m&startTime={}' self.sub_data = [ '42["sub.kline",{"symbol":"BTC_USDT","interval":"Min1"}]', '42["sub.symbol",{"symbol":"BTC_USDT"}]', ] self.http = HttpBase(loop=loop, proxy=proxy) self.ping_interval_seconds = 5
def __init__(self, loop=None, proxy=None, timeout=5): super().__init__(loop, proxy, timeout) now = int(time.time()) // 60 * 60 self.ws_url = 'wss://ws.hotbit.io' self.kline_url = 'https://api.hotbit.io/api/v1/market.kline?market=BTC/USDT&start_time=1558616940&end_time=1558673247&interval=60' self.sub_data = { "method": "kline.query", "params": ["BTCUSDT", now - 60, now, 60], "id": 100 } self.http = HttpBase(loop=loop, proxy=proxy)
def __init__(self, loop=None, proxy=None, timeout=5): super().__init__(loop, proxy, timeout) self.ws_url = 'wss://ws.kraken.com' self.kline_url = 'https://api.kraken.com/0/public/OHLC?pair=XBTUSD&interval=1' self.sub_data = { "event": "subscribe", "pair": ["XBT/EUR", 'XBT/USD'], "subscription": { "name": "ohlc", "interval": 1 } } self.http = HttpBase(loop=loop, proxy=proxy)
def __init__(self, loop=None, proxy=None, timeout=5): super().__init__(loop, proxy, timeout) self.ws_url = 'wss://api.hitbtc.com/api/2/ws' self.kline_url = 'https://api.hitbtc.com/api/2/public/candles/BTCUSD?period=M1' self.sub_data = { "method": "subscribeCandles", "params": { "symbol": 'ETHBTC', "period": "M1", "limit": 1 }, "id": 1212121 } self.http = HttpBase(loop=loop, proxy=proxy)
def __init__(self): self.logger = get_logger(__name__) self.push_logger = get_logger(settings.APP_NAME) self.platform_name = '' self.http = HttpBase() self._redis = AsyncRedisBase() self._cur = None self.token = '' self.test_api = '' self.prod_api = '' if settings.APP_TYPE == 'WWW': self.push_url = f'{self.prod_api}/api/newsflash-push' else: self.push_url = f'{self.test_api}/api/newsflash-push' self.http.headers = { 'Content-Type': "application/x-www-form-urlencoded", } self.push_type = { PushType.rise_or_fall.value: 1, PushType.pass_price.value: 2, PushType.noon_broadcast.value: 3 } # 请求参数 self.push_params = { 'token': self.token, 'push_type': '', 'push_content': {}, } # 配置信息 self.alarm_info = { 'huobipro': { 'name': '火币', 'alarm_coin': ['btc', 'eth'], 'alarm_price_pass': {'btc': 500, 'eth': 100}, 'price_pass_cache': {}, # 同一价格 10分钟内只push 一次 'pass_cache_ex_tms': 10 * 60, # 整数关口的过期时间: 10分钟 'noon_broadcast_pairs': { 'btcusdt': 'BTC/USDT', 'ethusdt': 'ETH/USDT', 'xrpusdt': 'XRP/USDT', 'eosusdt': 'EOS/USDT', 'bchusdt': 'BCH/USDT', 'ltcusdt': 'LTC/USDT', 'bsvusdt': 'BSV/USDT', }, }, }
def __init__(self, loop=None, proxy=None, timeout=5): super().__init__(loop, proxy, timeout) self.ws_url = 'wss://api.zb.cn/websocket' self.kline_url = 'http://api.zb.cn/data/v1/kline?market=btc_usdt' self.sub_data = [{ 'event': 'addChannel', 'channel': 'btcusdt_trades' }, { 'event': 'addChannel', 'channel': 'btcusdt_depth' }] self.http = HttpBase(loop=loop, proxy=proxy) self.http.headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.71 Safari/537.36' } self.ping_interval_seconds = None
def __init__(self, loop=None, proxy=None, timeout=5): super().__init__(loop, proxy, timeout) self.ws_url = 'wss://ws.gate.io/v3/' self.kline_url = 'https://data.gateio.co/api2/1/candlestick2/btc_usdt?group_sec=60&range_hour=4' self.sub_data = [ { "id": 23232, "method": "kline.subscribe", "params": ["BTC_USDT", 60] }, { "id": 23232, "method": "kline.subscribe", "params": ["ETH_USDT", 60] }, ] self.http = HttpBase(loop=loop, proxy=proxy)
def __init__(self, loop=None, proxy=None, timeout=5): super().__init__(loop, proxy, timeout) self.headers = {'Content-Type': "application/json"} self.ws_url = 'wss://ws.biki.com/kline-api/ws' self.kline_url = 'get_records?symbol=btcusdt&period=1' self.sub_data = [ # {"event":"sub","params":{"channel":"market_vdsusdt_kline_1min","cb_id":"vdsusdt"}}, # {"event":"sub","params":{"channel":"market_eosusdt_kline_1min","cb_id":"eosusdt"}}, { "event": "sub", "params": { "channel": "market_vdsusdt_trade_ticker", "cb_id": "vdsusdt", "top": 100 } } ] self.http = HttpBase(loop=loop, proxy=proxy) self.ping_interval_seconds = None
def __init__(self, loop=None, proxy=None, timeout=5): super().__init__(loop, proxy, timeout) self.APPKEY = 'yMw/v2o4UhYui0fMgNRHgoOcLB0RJBV8j+/SM9tOHcS+dh/Pm+OGNeOASTFxGjOoOlOxgtsIX3ALredZ+adL6YMKER7B3Qe6sQP8MBkpC+PGTxqHKT7YcEmeYS45tjSZ' self.APPID = 'ATxp3JdTFgTk21ODVLDk9ohJZkldokhwg4gfO2/yi8P4huDGo+xCBmooWBuhOdCbsH3JWRPHk/VZzTF1R7Ir4TXDoWjuLSBPB1+7/PnBzqRioNfFkO9kiVjk6UPT9Tn6wQ==' self.ws_url = 'wss://ws.biki.com/kline-api/ws' self.uri = 'https://api.biss.com' self.kline_url = '/v1/quote/BTC/USDT/realtime' self.trade_url = '/v1/quote/BTC/USDT/tick-history?start=0&count=200' self.sub_data = [ # {"event":"sub","params":{"channel":"market_vdsusdt_kline_1min","cb_id":"vdsusdt"}}, # {"event":"sub","params":{"channel":"market_eosusdt_kline_1min","cb_id":"eosusdt"}}, {"event": "sub", "params": {"channel": "market_vdsusdt_trade_ticker", "cb_id": "vdsusdt", "top": 100}} ] self.http = HttpBase(loop=loop, proxy=proxy) self.http.headers = { # 'Content-Type': "application/json", 'x-biss-appid': self.APPID, 'x-biss-timestamp': '', 'x-biss-signature': '', } self.ping_interval_seconds = None