| | |
| | | from ths import client_manager |
| | | import constant |
| | | from trade.deal_big_money_manager import DealOrderNoManager |
| | | from trade.trade_manager import AccountAvailableMoneyManager |
| | | from trade.trade_manager import AccountAvailableMoneyManager, AutoCancelSellModeManager |
| | | from utils import global_util, tool |
| | | import threading |
| | | |
| | |
| | | global_data_loader.load_volumn() |
| | | # 初始化载入 |
| | | AccountAvailableMoneyManager() |
| | | # 初始化载入 |
| | | AutoCancelSellModeManager() |
| | | |
| | | # 9点25之前删除所有代码 |
| | | if tool.trade_time_sub(tool.get_now_time_str(), "09:25:00") <= 0: |
| | |
| | | from log_module.log import logger_trade, hx_logger_trade_debug |
| | | from trade import trade_manager, trade_record_log_util |
| | | from trade.huaxin.huaxin_trade_record_manager import TradeOrderIdManager |
| | | from trade.trade_manager import AutoCancelSellModeManager |
| | | from utils import huaxin_util, tool |
| | | import concurrent.futures |
| | | |
| | |
| | | # 下单时间在9:30以后的如果2s没成交就撤单 |
| | | if tool.trade_time_sub(order.insertTime, "09:30:00") >= 0 and str( |
| | | order.orderStatus) == huaxin_util.TORA_TSTP_OST_Accepted: |
| | | sell_mode = AutoCancelSellModeManager().get_mode() |
| | | if sell_mode == AutoCancelSellModeManager.MODE_CANCEL_MECHINE and order.orderRef < 90000: |
| | | # 只撤机器的单 |
| | | return False |
| | | return True |
| | | return False |
| | | |
| | |
| | | from trade.l2_trade_factor import L2PlaceOrderParamsManager |
| | | from trade.sell import sell_manager |
| | | from trade.sell.sell_rule_manager import SellRuleManager, SellRule |
| | | from trade.trade_manager import TradeTargetCodeModeManager, MarketSituationManager |
| | | from trade.trade_manager import TradeTargetCodeModeManager, MarketSituationManager, AutoCancelSellModeManager |
| | | from utils import socket_util, data_export_util, middle_api_protocol, tool, huaxin_util, output_util, sell_util |
| | | |
| | | trade_data_request_queue = queue.Queue() |
| | |
| | | item = results[0]["quotes"][0] |
| | | result = {"code": 0, "data": {"price": item["bid_p"], "volume": item["bid_v"]}} |
| | | self.send_response(result, client_id, request_id) |
| | | elif ctype == "auto_cancel_sell_mode": |
| | | try: |
| | | operate = data["operate"] |
| | | if operate == outside_api_command_manager.OPERRATE_SET: |
| | | mode = data["mode"] |
| | | AutoCancelSellModeManager().set_mode(mode) |
| | | self.send_response({"code": 0, "data": {"mode": mode}}, client_id, request_id) |
| | | elif operate == outside_api_command_manager.OPERRATE_GET: |
| | | sell_mode = AutoCancelSellModeManager().get_mode() |
| | | self.send_response({"code": 0, "data": {"mode": sell_mode}}, client_id, request_id) |
| | | except Exception as e: |
| | | self.send_response({"code": 1, "msg": str(e)}, client_id, request_id) |
| | | |
| | | except Exception as e: |
| | | logging.exception(e) |
| | |
| | | return self.__trade_buy_mode_cache |
| | | |
| | | |
| | | # 自动撤卖模式管理 |
| | | class AutoCancelSellModeManager: |
| | | # 撤所有 |
| | | MODE_CANCEL_ALL = 0 |
| | | # 撤机器下单 |
| | | MODE_CANCEL_MECHINE = 1 |
| | | |
| | | __instance = None |
| | | __auto_cancel_sell_mode = MODE_CANCEL_ALL |
| | | |
| | | redisManager = redis_manager.RedisManager(2) |
| | | |
| | | def __new__(cls, *args, **kwargs): |
| | | if not cls.__instance: |
| | | cls.__instance = super(AutoCancelSellModeManager, cls).__new__(cls, *args, **kwargs) |
| | | # 初始化设置 |
| | | # 获取交易窗口的锁 |
| | | cls.__auto_cancel_sell_mode = cls.get_mode() |
| | | return cls.__instance |
| | | |
| | | @classmethod |
| | | def __get_redis(cls): |
| | | return cls.redisManager.getRedis() |
| | | |
| | | def set_mode(self, mode): |
| | | if mode != self.MODE_CANCEL_ALL and mode != self.MODE_CANCEL_MECHINE: |
| | | raise Exception("mode参数值错误") |
| | | self.__auto_cancel_sell_mode = mode |
| | | RedisUtils.setex(self.__get_redis(), "auto_cancel_sell_mode", tool.get_expire(), mode) |
| | | |
| | | # 是否可以下单 |
| | | @classmethod |
| | | def get_mode(cls): |
| | | # 默认设置为可交易 |
| | | val = RedisUtils.get(cls.__get_redis(), "auto_cancel_sell_mode") |
| | | if val is None: |
| | | return cls.MODE_CANCEL_ALL |
| | | return int(val) |
| | | |
| | | def get_mode_cache(self): |
| | | return self.__auto_cancel_sell_mode |
| | | |
| | | |
| | | # 市场行情等级管理 |
| | | class MarketSituationManager: |
| | | # 差 |