Administrator
2023-09-14 1789822f4bb3689d6d2643d73b4b6aa2be4c0e03
撤单异步
6个文件已修改
31 ■■■■■ 已修改文件
constant.py 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
huaxin_client/trade_client.py 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
l2/cancel_buy_strategy.py 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
test/l2_trade_test.py 13 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
third_data/code_plate_key_manager.py 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
trade/trade_huaxin.py 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
constant.py
@@ -75,11 +75,11 @@
S_CANCEL_EXPIRE_TIME = 1
# H撤比例
H_CANCEL_RATE = 0.69
H_CANCEL_RATE = 0.90
H_CANCEL_MIN_MONEY = 98
H_CANCEL_MIN_COUNT = 40
H_CANCEL_MIN_BIG_NUM_COUNT = 3
H_CANCEL_START_TIME = 900
H_CANCEL_START_TIME = 10
# L2监控的最低金额
L2_MIN_MONEY = 500000
huaxin_client/trade_client.py
@@ -874,7 +874,7 @@
                    if not orderSysID and orderRef is None:
                        raise Exception("没有找到系统订单号或者报单引用")
                    req_rid_dict[sinfo] = (client_id, request_id, sk)
                    self.__tradeSimpleApi.cancel_buy(code, sinfo, order_sys_id=orderSysID, order_ref=orderRef)
                    threading.Thread(target=lambda : self.__tradeSimpleApi.cancel_buy(code, sinfo, order_sys_id=orderSysID, order_ref=orderRef), daemon=True).start()
                    async_log_util.info(logger_local_huaxin_trade_debug,
                                        f"撤单结束:code-{code} order_sys_id-{orderSysID} sinfo-{sinfo}")
                except Exception as e:
l2/cancel_buy_strategy.py
@@ -498,7 +498,7 @@
                        break
            if watch_indexes:
                self.__save_watch_index_set(code, watch_indexes)
                l2_log.l_cancel_debug(code, f"设置监听范围, 数据范围:{real_place_order_index}-{end_index} 监听范围-{watch_indexes}")
                l2_log.h_cancel_debug(code, f"设置监听范围, 数据范围:{real_place_order_index}-{end_index} 监听范围-{watch_indexes}")
                break
        # 设置真实下单位置
@@ -537,7 +537,9 @@
                                                                                                      local_today_num_operate_map)
                cancel_num += val['num'] * (data['re'] - left_count)
            if cancel_num / total_num >= constant.H_CANCEL_RATE:
            rate = round(cancel_num / total_num, 4)
            if rate >= constant.H_CANCEL_RATE:
                l2_log.h_cancel_debug(code, f"撤单比例:{rate}")
                return True, total_data[-1]
        return False, None
test/l2_trade_test.py
@@ -22,7 +22,7 @@
from third_data import kpl_util, kpl_data_manager
from third_data.code_plate_key_manager import RealTimeKplMarketData, LimitUpCodesPlateKeyManager
from third_data.kpl_data_manager import KPLDataManager
from trade import trade_data_manager, current_price_process_manager
from trade import trade_data_manager, current_price_process_manager, l2_trade_util
from trade.trade_queue_manager import THSBuy1VolumnManager
import l2.l2_data_manager_new, l2.l2_data_manager, l2.l2_data_util, l2.cancel_buy_strategy
@@ -49,6 +49,7 @@
    BuyL2SafeCountManager().clear_data(code)
    transaction_progress.TradeBuyQueue().set_traded_index(code, 0)
    l2_trade_util.remove_from_forbidden_trade_codes(code)
class VirtualTrade(unittest.TestCase):
@@ -88,7 +89,7 @@
    def test_trade(self):
        threading.Thread(target=async_log_util.run_sync,daemon=True).start()
        code = "000678"
        code = "002512"
        clear_trade_data(code)
        l2.l2_data_util.load_l2_data(code)
        total_datas = deepcopy(l2.l2_data_util.local_today_datas[code])
@@ -130,10 +131,10 @@
        # 获取交易进度
        trade_progress_list, buy_queues = log_export.get_trade_progress(code)
        jingxuan_ranks = KPLDataManager().get_from_file(kpl_util.KPLDataType.JINGXUAN_RANK, tool.get_now_date_str())
        industry_ranks = KPLDataManager().get_from_file(kpl_util.KPLDataType.INDUSTRY_RANK, tool.get_now_date_str())
        RealTimeKplMarketData().set_top_5_reasons(jingxuan_ranks)
        RealTimeKplMarketData().set_top_5_industry(industry_ranks)
        # jingxuan_ranks = KPLDataManager().get_from_file(kpl_util.KPLDataType.JINGXUAN_RANK, tool.get_now_date_str())
        # industry_ranks = KPLDataManager().get_from_file(kpl_util.KPLDataType.INDUSTRY_RANK, tool.get_now_date_str())
        # RealTimeKplMarketData().set_top_5_reasons(jingxuan_ranks)
        # RealTimeKplMarketData().set_top_5_industry(industry_ranks)
        LimitUpCodesPlateKeyManager().set_today_limit_up(
            KPLDataManager().get_from_file(kpl_util.KPLDataType.LIMIT_UP, tool.get_now_date_str()))
third_data/code_plate_key_manager.py
@@ -534,8 +534,8 @@
    # 返回:是否可以下单,消息,板块类型
    @classmethod
    def can_buy(cls, code):
        # if constant.TEST:
        #     return True, cls.BLOCK_TYPE_NONE
        if constant.TEST:
            return True, cls.BLOCK_TYPE_NONE
        return cls.__can_buy_compute_result_dict.get(code)
    @classmethod
trade/trade_huaxin.py
@@ -112,6 +112,8 @@
# 撤单
def cancel_order(code, msg=''):
    if not constant.TRADE_ENABLE:
        return
    orders_info = __TradeOrderIdManager.list_order_ids_cache(code)
    orders_info = copy.deepcopy(orders_info)
    orders = []