コード例 #1
0
ファイル: base.py プロジェクト: zhuchen0310/exspider
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}&quote_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
コード例 #2
0
ファイル: mxc.py プロジェクト: zhuchen0310/exspider
 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
コード例 #3
0
ファイル: hotbit.py プロジェクト: zhuchen0310/exspider
 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)
コード例 #4
0
ファイル: kraken.py プロジェクト: zhuchen0310/exspider
 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)
コード例 #5
0
ファイル: hitbtc.py プロジェクト: zhuchen0310/exspider
 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)
コード例 #6
0
ファイル: base.py プロジェクト: zhuchen0310/exspider
 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',
             },
         },
     }
コード例 #7
0
 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
コード例 #8
0
 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)
コード例 #9
0
 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
コード例 #10
0
ファイル: biss.py プロジェクト: zhuchen0310/exspider
    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