| | |
| | | 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 |
| | |
| | | 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: |
| | |
| | | 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 |
| | | |
| | | # 设置真实下单位置 |
| | |
| | | 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 |
| | | |
| | |
| | | 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 |
| | | |
| | |
| | | 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): |
| | |
| | | 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]) |
| | |
| | | |
| | | # 获取交易进度 |
| | | 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())) |
| | |
| | | # 返回:是否可以下单,消息,板块类型 |
| | | @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 |
| | |
| | | |
| | | # 撤单 |
| | | 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 = [] |