From 48fb7a00951f91bdc707e5dd2d196e5bccb752c3 Mon Sep 17 00:00:00 2001 From: Administrator <admin@example.com> Date: 星期三, 18 六月 2025 18:41:30 +0800 Subject: [PATCH] 异常保护 --- test/l2_trade_test.py | 165 ++++++++++++++++++++++++++++++++++--------------------- 1 files changed, 102 insertions(+), 63 deletions(-) diff --git a/test/l2_trade_test.py b/test/l2_trade_test.py index 09345ce..c9ce130 100644 --- a/test/l2_trade_test.py +++ b/test/l2_trade_test.py @@ -10,18 +10,21 @@ from copy import deepcopy from unittest import mock +import constant +from cancel_strategy.s_l_h_cancel_strategy import SCancelBigNumComputer from code_attribute import big_money_num_manager, gpcode_manager from db.redis_manager_delegate import RedisUtils -from l2.huaxin import huaxin_delegate_postion_manager from l2.l2_sell_manager import L2MarketSellManager +from l2.l2_transaction_data_manager import HuaXinSellOrderStatisticManager from log_module import log, log_export, async_log_util -from trade.huaxin import huaxin_trade_api -from utils import tool +from trade.buy_radical.radical_buy_data_manager import RadicalBuyDataManager, RadicalBuyBlockManager +from utils import tool, init_data_util from db import redis_manager_delegate as redis_manager -from l2 import l2_log, l2_data_manager, transaction_progress, l2_data_manager_new, l2_transaction_data_processor +from l2 import l2_log, l2_data_manager, transaction_progress, l2_data_manager_new, l2_transaction_data_processor, \ + cancel_buy_strategy from l2.transaction_progress import TradeBuyQueue from third_data import kpl_util, kpl_data_manager, block_info -from third_data.code_plate_key_manager import LimitUpCodesPlateKeyManager, CodePlateKeyBuyManager +from third_data.code_plate_key_manager import LimitUpCodesPlateKeyManager from third_data.kpl_data_manager import KPLDataManager from trade import trade_data_manager, current_price_process_manager, l2_trade_util, trade_manager import l2.l2_data_manager_new, l2.l2_data_manager, l2.l2_data_util, l2.cancel_buy_strategy @@ -86,9 +89,10 @@ # @unittest.skip("璺宠繃姝ゅ崟鍏冩祴璇�") def test_trade(self): + constant.TEST = True trade_manager.TradeStateManager().open_buy() threading.Thread(target=async_log_util.run_sync, daemon=True).start() - code = "603135" + code = "000590" clear_trade_data(code) l2.l2_data_util.load_l2_data(code) total_datas = deepcopy(l2.l2_data_util.local_today_datas[code]) @@ -136,8 +140,7 @@ # pos_list.insert(84, (516, 532)) # hook - tool.get_now_time_str = mock.Mock(return_value="09:35:00") - CodePlateKeyBuyManager.can_buy = mock.Mock(return_value=(["娴嬭瘯"], False, "",[])) + # tool.get_now_time_str = mock.Mock(return_value="09:35:00") # 鑾峰彇浜ゆ槗杩涘害 trade_progress_list, buy_queues = log_export.get_trade_progress(code) @@ -151,11 +154,13 @@ KPLDataManager().get_from_file(kpl_util.KPLDataType.LIMIT_UP, tool.get_now_date_str())) kpl_data_manager.KPLLimitUpDataRecordManager.load_total_datas() - - current_price_process_manager.set_trade_price(code, round(float(gpcode_manager.get_limit_up_price(code)), 2)) + limit_up_price = gpcode_manager.get_limit_up_price(code) + if limit_up_price is None: + init_data_util.re_set_price_pre(code) + current_price_process_manager.set_trade_price(code, gpcode_manager.get_limit_up_price_as_num(code)) pss_server, pss_strategy = multiprocessing.Pipe() - huaxin_trade_api.run_pipe_trade(pss_server, None, None) + # huaxin_trade_api.run_pipe_trade(pss_server, None, None) for indexs in pos_list: l2_log.threadIds[code] = mock.Mock( @@ -202,13 +207,24 @@ l2.l2_data_manager_new.L2TradeDataProcessor.process_add_datas(code, total_datas[indexs[0]:indexs[1] + 1], 0, 0) - @unittest.skip("璺宠繃姝ゅ崟鍏冩祴璇�") - def test_place_order(self): - code = "002241" + # @unittest.skip("璺宠繃姝ゅ崟鍏冩祴璇�") + def test_s_cancel(self): + code = "002288" l2.l2_data_util.load_l2_data(code) - total_datas = deepcopy(l2.l2_data_util.local_today_datas[code]) - huaxin_delegate_postion_manager.place_order(code, 17.36, 100, total_datas[753]) - huaxin_delegate_postion_manager.get_l2_place_order_position(code, total_datas[755:1038]) + l2.l2_data_util.local_today_datas[code] = l2.l2_data_util.local_today_datas[code][:222] + SCancelBigNumComputer().set_real_place_order_index(code, 153, False) + + TradeBuyQueue.get_traded_index = mock.Mock(return_value=(117, False)) + order_begin_pos = l2_data_manager.OrderBeginPosInfo(buy_single_index=117, buy_exec_index=122) + sell_order_info = [1517999, [[2996226, 300000, 5.06, (10223471, 4876395), (10223471, 4876395)]]] + SCancelBigNumComputer().set_big_sell_order_info_for_cancel(code, sell_order_info, + order_begin_pos) + + sell_order_info = [508507, [[5564445, 100100, 5.08, (10372994, 4876545), (10372994, 4876546)]]] + SCancelBigNumComputer().set_big_sell_order_info_for_cancel(code, sell_order_info, + order_begin_pos) + SCancelBigNumComputer().set_big_sell_order_info_for_cancel(code, sell_order_info, + order_begin_pos) @unittest.skip("璺宠繃姝ゅ崟鍏冩祴璇�") def test_h_cancel(self): @@ -219,25 +235,75 @@ l2.l2_data_util.local_today_datas[code] = total_datas l2.l2_data_util.load_num_operate_map(l2.l2_data_util.local_today_num_operate_map, code, total_datas, True) - @unittest.skip("璺宠繃姝ゅ崟鍏冩祴璇�") + # @unittest.skip("璺宠繃姝ゅ崟鍏冩祴璇�") def test_block(self): - code = "603778" - # KPLCodeJXBlockManager().load_jx_blocks(code, 23.52,23.62, - # kpl_data_manager.KPLLimitUpDataRecordManager.get_current_reasons()) - # - block_info.init_code(code) + codes_str = "300390" + codes = codes_str.split(",") # ["002889", "300337", "001298", "002771"] kpl_data_manager.KPLLimitUpDataRecordManager.load_total_datas() - latest_current_limit_up_records = kpl_data_manager.get_latest_current_limit_up_records() kpl_data_manager.KPLLimitUpDataRecordManager.save_record(tool.get_now_date_str(), kpl_data_manager.KPLDataManager.get_data( kpl_util.KPLDataType.LIMIT_UP)) - CodePlateKeyBuyManager.update_can_buy_blocks(code, - kpl_data_manager.KPLLimitUpDataRecordManager.latest_origin_datas, - kpl_data_manager.KPLLimitUpDataRecordManager.total_datas, - latest_current_limit_up_records, - block_info.get_before_blocks_dict(), - kpl_data_manager.KPLLimitUpDataRecordManager.get_current_reason_codes_dict()) + for code in codes: + # KPLCodeJXBlockManager().load_jx_blocks(code, 23.52,23.62, + # kpl_data_manager.KPLLimitUpDataRecordManager.get_current_reasons()) + # + block_info.init_code(code) + # latest_current_limit_up_records = kpl_data_manager.get_latest_current_limit_up_records() + + init_data_util.re_set_price_pre(code, True) + + limit_up_data = kpl_data_manager.KPLLimitUpDataRecordManager.record_code_dict.get(code) + if limit_up_data: + limit_up_time = tool.to_time_str(limit_up_data[2]) + RadicalBuyBlockManager.set_current_limit_up_datas( + kpl_data_manager.KPLLimitUpDataRecordManager.latest_origin_datas) + # CodePlateKeyBuyManager.update_can_buy_blocks(code, + # kpl_data_manager.KPLLimitUpDataRecordManager.latest_origin_datas, + # kpl_data_manager.KPLLimitUpDataRecordManager.total_datas, + # latest_current_limit_up_records, + # block_info.get_before_blocks_dict(), + # kpl_data_manager.KPLLimitUpDataRecordManager.get_current_limit_up_reason_codes_dict()) + # can_buy_result = CodePlateKeyBuyManager.can_buy(code) + # print(can_buy_result) + # if can_buy_result: + # if can_buy_result[0]: + # blocks = ",".join([f"{x[0]}-{x[1] + 1}({x[2]}&{x[3] - x[2]})" for x in can_buy_result[0]]) + # print(blocks) + + yesterday_codes = kpl_data_manager.get_yesterday_limit_up_codes() + if yesterday_codes is None: + yesterday_codes = set() + result = RadicalBuyBlockManager.is_radical_buy(code, yesterday_codes) + print(code, result) + if result[0]: + can_buy_result = RadicalBuyDataManager.is_code_can_buy(code) + if can_buy_result[0]: + print("鍙互涔�", code, result) + else: + print("涓嶅彲浠ヤ拱", code, can_buy_result) + # l2.l2_data_manager_new.L2TradeDataProcessor.can_buy_first(code, None) + + @unittest.skip("璺宠繃姝ゅ崟鍏冩祴璇�") + def test_add_transaction_orders(self): + code = "603359" + date = "2024-03-14" + data_map = log_export.load_huaxin_transaction_map(date=date) + for code in data_map: + datas = data_map[code] + for d in datas: + big_sell_order_info = HuaXinSellOrderStatisticManager.add_transaction_datas(code, d) + + @unittest.skip("璺宠繃姝ゅ崟鍏冩祴璇�") + def test_b_cancel(self): + code = "603032" + l2.l2_data_util.load_l2_data(code) + total_datas = l2.l2_data_util.local_today_datas.get(code) + TradeBuyQueue.get_traded_index = mock.Mock(return_value=(1000, False)) + cancel_buy_strategy.NewGCancelBigNumComputer().set_real_place_order_index(code, 1015, 10000, False) + cancel_buy_strategy.GCancelBigNumComputer().set_trade_progress(code, 1000, 1000) + result = cancel_buy_strategy.GCancelBigNumComputer().need_cancel_for_b(code, 1020, 1077) + print(result) @unittest.skip("璺宠繃姝ゅ崟鍏冩祴璇�") def test_transaction(self): @@ -250,40 +316,13 @@ for d in fdatas: l2_transaction_data_processor.HuaXinTransactionDatasProcessor().process_huaxin_transaction_datas(code, d) + def test_cancel(self): + code = "603300" + l2.l2_data_util.load_l2_data(code) + TradeBuyQueue.get_traded_index = mock.Mock(return_value=(3742, False)) + l2.cancel_buy_strategy.RDCancelBigNumComputer._RDCancelBigNumComputer__watch_indexes_cache ={ code: {3686, 3691, 3693, 3694, 3699, 3700}} + l2.cancel_buy_strategy.RDCancelBigNumComputer().need_cancel(code, 4370, 4372) -# class TestTrade(unittest.TestCase): -# processor = L2TradeDataProcessor() -# code = "002094" -# l2_data_manager.load_l2_data(code) -# l2_data_manager.local_today_datas[code] = l2_data_manager.local_today_datas[code][0:520] -# buy_single_index = 426 -# buy_exec_index = 479 -# processor.random_key[code] = mock.Mock(return_value=123123) -# L2LimitUpMoneyStatisticUtil._L2LimitUpMoneyStatisticUtil__get_l2_latest_money_record = mock.Mock( -# return_value=(0, -1)) -# -# AverageBigNumComputer.place_order_success(code, buy_single_index, buy_exec_index) -# -# L2LimitUpMoneyStatisticUtil.process_data(code, buy_single_index, buy_exec_index, buy_single_index, -# buy_exec_index, False) -# -# l2_data_manager.TradePointManager().get_buy_compute_start_data = mock.Mock(return_value=(426, 479, 479, 0, 100)) -# buy_single_index, buy_exec_index, compute_index, num, count = l2_data_manager.TradePointManager().get_buy_compute_start_data( -# code) -# processor.unreal_buy_dict[code] = mock.Mock(return_value=(479, 167234623)) -# -# -# processor.process_order(code, 480, 519, 167234623, False) -# print(buy_single_index, buy_exec_index, compute_index, num, count) - - -# class TestData(unittest.TestCase): -# code = "002103" -# # l2_data_manager.load_l2_data(code) -# # TradeBuyQueue().save_traded_index(code, "6.94", [1511, 888, 796]) - - -# class TestTradedProgress(unittest.TestCase): @unittest.skip("璺宠繃姝ゅ崟鍏冩祴璇�") -- Gitblit v1.8.0