def record(self, entity, start, end, size, timestamps): if size < 20: size = 20 ccxt_exchange = CCXTAccount.get_ccxt_exchange(entity.exchange) if ccxt_exchange.has['fetchTrades']: limit = CCXTAccount.get_tick_limit(entity.exchange) limit = min(size, limit) kdata_list = [] trades = ccxt_exchange.fetch_trades(entity.code, limit=limit) for trade in trades: kdata_json = { 'name': entity.name, 'provider': 'ccxt', # 'id': trade['id'], 'level': 'tick', 'order': trade['order'], 'timestamp': to_pd_timestamp(trade['timestamp']), 'price': trade['price'], 'volume': trade['amount'], 'direction': trade['side'], 'order_type': trade['type'], 'turnover': trade['price'] * trade['amount'] } kdata_list.append(kdata_json) return kdata_list else: self.logger.warning("exchange:{} not support fetchOHLCV".format(entity.exchange))
def record(self, entity, start, end, size, timestamps): if size < 20: size = 20 entity = entity ccxt_exchange = CCXTAccount.get_ccxt_exchange(entity.exchange) if ccxt_exchange.has['fetchTrades']: limit = CCXTAccount.get_tick_limit(entity.exchange) limit = min(size, limit) kdata_list = [] try: trades = ccxt_exchange.fetch_trades(entity.code, limit=limit) # always ignore the latest one,because it's not finished for trade in trades[0:-1]: kdata_json = { 'name': entity.name, 'provider': 'ccxt', # 'id': trade['id'], 'level': 'tick', 'order': trade['order'], 'timestamp': to_pd_timestamp(trade['timestamp']), 'price': trade['price'], 'volume': trade['amount'], 'direction': trade['side'], 'orderType': trade['type'], 'turnover': trade['price'] * trade['amount'] } kdata_list.append(kdata_json) return kdata_list except Exception as e: logger.exception("record_kdata for security:{} failed".format( entity.id)) else: logger.warning("exchange:{} not support fetchOHLCV".format( entity.exchange))
def request(self, url=None, method='get', param=None, path_fields=None): security_item = param['security_item'] size = param['size'] ccxt_exchange = CCXTAccount.get_ccxt_exchange(security_item.exchange) if ccxt_exchange.has['fetchTrades']: limit = CCXTAccount.get_tick_limit(security_item.exchange) limit = min(size, limit) kdata_list = [] try: trades = ccxt_exchange.fetch_trades(security_item.code, limit=limit) # always ignore the latest one,because it's not finished for trade in trades[0:-1]: kdata_json = { 'securityId': security_item.id, 'name': security_item.name, 'provider': 'ccxt', # 'id': trade['id'], 'level': 'tick', 'order': trade['order'], 'timestamp': to_pd_timestamp(trade['timestamp']), 'price': trade['price'], 'volume': trade['amount'], 'direction': trade['side'], 'orderType': trade['type'], 'turnover': trade['price'] * trade['amount'] } kdata_list.append(kdata_json) return kdata_list except Exception as e: logger.exception("record_kdata for security:{} failed".format( security_item.id)) else: logger.warning("exchange:{} not support fetchOHLCV".format( security_item.exchange))