def get_kline_info(self, **kwargs): """ 当前kline信息查询 :param kwargs: :return: """ # TODO 其它交易所待补充 if self.trading_platform == Platform.PLATFORM_OKEX_FUTURE: # return OkexFutureTransactionHandler().get_kline_info(self) okexfu = OkexFutureTransactionHandler() _symbol_get = None if ("symbol_get" in kwargs): _symbol_get = kwargs["symbol_get"] this_week = okexfu.get_kline_info(_symbol_get, ContractType.THIS_WEEK.value, size=60 + 1) next_week = okexfu.get_kline_info(_symbol_get, ContractType.NEXT_WEEK.value, size=60 + 1) quarter = okexfu.get_kline_info(_symbol_get, ContractType.QUARTER.value, size=60 + 1) _kline_info = dict(this_week=this_week, next_week=next_week, quarter=quarter) print(_kline_info) return _kline_info
def get_match_results(self, **kwargs): """ 获得订单交易信息 :return: """ # if self.trading_platform == "huobi": # HuobiTransactionHandler.get_match_results(self, **args) # if self.trading_platform == "bian": # BianTransactionHandler.get_match_results(self, **args) # if self.trading_platform == "fcoin": # FcoinTransactionHandler.get_match_results(self, **args) if self.trading_platform == Platform.PLATFORM_OKEX: OkexTransactionHandler.get_match_results(self, **kwargs) if self.trading_platform == Platform.PLATFORM_OKEX_FUTURE: OkexFutureTransactionHandler.get_match_results(self, **kwargs)
def place(self, **kwargs): """ 下单 :return: """ if ("symbol" in kwargs): _symbol = kwargs["symbol"] if ("contract_type" in kwargs): _contract_type = kwargs["contract_type"] if ("price" in kwargs): _price = kwargs["price"] if ("amount" in kwargs): _amount = kwargs["amount"] if ("trade_type" in kwargs): _trade_type = kwargs["trade_type"] # if self.trading_platform == "huobi": # HuobiTransactionHandler.place(self, **args) # if self.trading_platform == "bian": # BianTransactionHandler.place(self, **args) # if self.trading_platform == "fcoin": # FcoinTransactionHandler.place(self, **args) if self.trading_platform == Platform.PLATFORM_OKEX: return OkexTransactionHandler().place(_symbol, _trade_type, _price, _amount) elif self.trading_platform == Platform.PLATFORM_OKEX_FUTURE: return OkexFutureTransactionHandler().place( _symbol, _contract_type, _price, _amount, _trade_type)
def get_future_index(self, **kwargs): """ OKex期货指数 :param symbol:币对枚举 :return: """ symbol = kwargs["symbol_get"] return OkexFutureTransactionHandler().get_future_index(symbol)
def get_account_info(self, **kwargs): """ 用户当前信息查询 :param kwargs: :return: """ if self.trading_platform == Platform.PLATFORM_OKEX: return OkexTransactionHandler().get_account_info() if self.trading_platform == Platform.PLATFORM_OKEX_FUTURE: return OkexFutureTransactionHandler().get_account_info() if self.trading_platform == Platform.PLATFORM_FCOIN: return FcoinTransactionHandler().get_account_info()
def get_trades_info(self, **kwargs): """ 当前kline信息查询 :param kwargs: :return: """ # TODO 其它交易所待补充 if self.trading_platform == Platform.PLATFORM_OKEX_FUTURE: _symbol_get = None _contract_type = None if ("symbol_get" in kwargs): _symbol_get = kwargs["symbol_get"] if ("contract_type" in kwargs): _contract_type = kwargs["contract_type"] rest_start_time = time.mktime(datetime.datetime.now().timetuple()) _trades_info = OkexFutureTransactionHandler().get_trades_info( _symbol_get, _contract_type) print(_trades_info) rest_end_time = time.mktime(datetime.datetime.now().timetuple()) print(rest_end_time - rest_start_time) # print(time.mktime(datetime.datetime.now().timetuple()) - _trades_info["date"]) # print(time.time() * 1000 - _trades_info["date_ms"]) if (rest_end_time - rest_start_time > 1): key = f'{Symbol.get_standard_symbol(_symbol_get)}.*.{_contract_type.value}' index = PlatformDataTypeIndex.getIndex( self.trading_platform, PlatformDataType.PLATFORM_DATA_TRADE.value) # 查询redis最新数据 self._redis = redis.StrictRedis(host=Config.REDIS_HOST, port=Config.REDIS_PORT, db=index) trade_cache = self._redis.keys(key) if trade_cache: trade_cache.sort(reverse=True) print(trade_cache[0]) max_cache_id = str(trade_cache[0]).split(".")[1] print(max_cache_id) print(_trades_info["tid"]) # 比较id取最近数据 if int(max_cache_id) > _trades_info["tid"]: return self._redis.get(trade_cache) return _trades_info
def cancel(self, **kwargs): """ 撤单 :return: """ if ("symbol" in kwargs): _symbol = kwargs["symbol"] if ("contract_type" in kwargs): _contract_type = kwargs["contract_type"] if ("order_id" in kwargs): _order_id = kwargs["order_id"] # if self.trading_platform == "huobi": # HuobiTransactionHandler.cancel(self, **args) # if self.trading_platform == "bian": # BianTransactionHandler.cancel(self, **args) # if self.trading_platform == "fcoin": # FcoinTransactionHandler(self, **args) if self.trading_platform == Platform.PLATFORM_OKEX: return OkexTransactionHandler().cancel(_symbol, _order_id) if self.trading_platform == Platform.PLATFORM_OKEX_FUTURE: return OkexFutureTransactionHandler().cancel( _symbol, _contract_type, _order_id)
def __get_order(self, symbol, contract_type, order_id, status, current_page, page_length, order_info={"orders": None}): """ 获得所有翻页后的订单详情 :param symbol: :param contract_type: :param order_id: :param status: :param current_page: :param page_length: :param order_info: :return: """ __order_info = OkexFutureTransactionHandler().get_order( symbol, contract_type, order_id, status, current_page, page_length) __original_orders = order_info["orders"] __new_orders = __order_info["orders"] if __new_orders: if __original_orders: __original_orders.append(__new_orders) else: __original_orders = __new_orders __order_info["orders"] = __original_orders if len(__new_orders) < 50: return __order_info else: current_page += 1 self.__get_order(self, symbol, contract_type, order_id, status, current_page, page_length, __order_info) return __order_info
def __get_order_by_id(self, symbol, contract_type, id, order_info={"orders": None}): """ 根据id获得50条订单信息 :param id: :return: """ print("ids=", id) ids = id.split(",") next_ids = None if len(ids) > 50: order_ids = ','.join(ids[0:50]) next_ids = ','.join(ids[50:]) else: order_ids = id # 批量查询订单信息 __order_info = OkexFutureTransactionHandler().get_order_s( symbol, contract_type, order_ids) __original_orders = order_info["orders"] __new_orders = __order_info["orders"] if __new_orders: if __original_orders: __original_orders.append(__new_orders) else: __original_orders = __new_orders __order_info["orders"] = __original_orders else: __order_info = order_info if next_ids: self.__get_order_by_id(symbol, contract_type, next_ids, __order_info) return __order_info
def get_exchange_rate(self): """ 获取美元人民币汇率 :return: """ return OkexFutureTransactionHandler().get_exchange_rate()