Пример #1
0
 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
Пример #2
0
 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)
Пример #3
0
 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)
Пример #4
0
 def get_future_index(self, **kwargs):
     """
     OKex期货指数
     :param symbol:币对枚举
     :return:
     """
     symbol = kwargs["symbol_get"]
     return OkexFutureTransactionHandler().get_future_index(symbol)
Пример #5
0
 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()
Пример #6
0
    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
Пример #7
0
 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)
Пример #8
0
    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
Пример #9
0
    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
Пример #10
0
 def get_exchange_rate(self):
     """
     获取美元人民币汇率
     :return:
     """
     return OkexFutureTransactionHandler().get_exchange_rate()