From 3ec79004bd769828c8dc18ed35280f81cfb473ff Mon Sep 17 00:00:00 2001 From: Administrator <admin@example.com> Date: 星期三, 08 二月 2023 19:30:45 +0800 Subject: [PATCH] 交易结果整理 --- l2_trade_test.py | 167 +++++++++++++++++++++++++++++++++++++------------------ 1 files changed, 112 insertions(+), 55 deletions(-) diff --git a/l2_trade_test.py b/l2_trade_test.py index 0bd23cf..797e3a6 100644 --- a/l2_trade_test.py +++ b/l2_trade_test.py @@ -1,13 +1,23 @@ # 浜ゆ槗娴嬭瘯 # 娓呴櫎浜ゆ槗鏁版嵁 +import decimal +import json +import logging +import random import unittest +from copy import deepcopy +from unittest import mock import big_money_num_manager +import gpcode_manager +import log +import tool from db import redis_manager +from l2.safe_count_manager import BuyL2SafeCountManager +from l2.transaction_progress import TradeBuyQueue from trade import trade_data_manager -from l2.l2_data_manager import TradePointManager - -# from l2_data_manager_new import L2TradeDataProcessor, L2LimitUpMoneyStatisticUtil, AverageBigNumComputer +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 def clear_trade_data(code): @@ -15,7 +25,7 @@ keys = ["buy1_volumn_latest_info-{}", "m_big_money_begin-{}", "m_big_money_process_index-{}"] for k in keys: redis_l2.delete(k.format(code)) - TradePointManager.delete_buy_point(code) + l2.l2_data_manager.TradePointManager.delete_buy_point(code) big_money_num_manager.reset(code) redis_trade = redis_manager.RedisManager(2).getRedis() redis_trade.delete("trade-state-{}".format(code)) @@ -27,54 +37,102 @@ continue if k.find("zyltgb") is not None: continue - redis_info.delete(k) + BuyL2SafeCountManager().clear_data(code) -# -# class VirtualTrade(unittest.TestCase): -# code = "000701" -# clear_trade_data(code) -# l2_data_manager.load_l2_data(code) -# total_datas = l2_data_manager.local_today_datas[code] -# if total_datas[0]["index"] > 0: -# # 鎷兼帴鏁版嵁 -# for i in range(0, total_datas[0]["index"]): -# data = total_datas[0].copy() -# data["index"] = i -# total_datas.insert(i, data) -# -# pos_list = log.get_l2_process_position(code) -# if pos_list[0][0] > 0: -# pos_list.insert(0, (0, pos_list[0][0] - 1)) -# del pos_list[-1] -# if pos_list[-1][1] < total_datas[-1]["index"]: -# # 鍓╀笅鐨勬暟鎹牴鎹鏉ュ垎 -# start_index = -1 -# for i in range(pos_list[-1][1] + 1, total_datas[-1]["index"] + 1): -# if total_datas[i]["val"]["time"] != total_datas[i - 1]["val"]["time"]: -# if start_index < 0: -# start_index = i -# else: -# pos_list.append((start_index, i - 1)) -# start_index = i -# if pos_list[-1][1] < total_datas[-1]["index"]: -# pos_list.append((pos_list[-1][1] + 1, total_datas[-1]["index"])) -# l2_data_manager_new.local_today_datas = {code: []} -# l2_trade_factor.L2TradeFactorUtil.get_safe_buy_count = mock.Mock(return_value=12) -# for indexs in pos_list: -# L2TradeDataProcessor.random_key[code] = mock.Mock(return_value=random.randint(0, 100000)) -# # 璁剧疆灏佸崟棰濓紝鑾峰彇涔�1閲� -# for i in range(0, 100): -# time_ = total_datas[indexs[0]]["val"]["time"] -# time_s = tool.get_time_as_second(time_) - i - 1 -# volumn = THSBuy1VolumnManager().get_buy_1_volumn(code, tool.time_seconds_format(time_s)) -# if volumn is not None: -# l2_data_manager_new.L2LimitUpMoneyStatisticUtil.verify_num(code, int(volumn), -# tool.time_seconds_format(time_s)) -# break -# -# print("----------------澶勭悊浣嶇疆", indexs) -# L2TradeDataProcessor.process_add_datas(code, total_datas[indexs[0]:indexs[1] + 1], 0, 0) + +class VirtualTrade(unittest.TestCase): + + def __process_buy_queue(code, buy_queue, time_): + if time_ == "09:32:37": + print("杩涘叆璋冭瘯") + limit_up_price = gpcode_manager.get_limit_up_price(code) + buy_one_price = limit_up_price + if limit_up_price is not None: + buy_queue_result_list = TradeBuyQueue().save(code, limit_up_price, limit_up_price, time_, + buy_queue) + if buy_queue_result_list: + # 鏈夋暟鎹� + try: + buy_one_price_ = decimal.Decimal(round(float(buy_one_price), 2)).quantize( + decimal.Decimal("0.00")) + buy_progress_index = TradeBuyQueue().save_traded_index(code, buy_one_price_, buy_queue_result_list) + if buy_progress_index is not None: + l2.cancel_buy_strategy.HourCancelBigNumComputer.set_trade_progress(code, buy_progress_index, + l2.l2_data_util.local_today_datas.get( + code), + l2.l2_data_util.local_today_num_operate_map.get( + code)) + log.logger_l2_trade_buy_queue.info("鑾峰彇鎴愪氦浣嶇疆鎴愬姛锛� code-{} index-{} 鏁版嵁-{}", code, + buy_progress_index, + json.dumps(buy_queue_result_list)) + except Exception as e: + pass + + code = "002792" + clear_trade_data(code) + l2.l2_data_util.load_l2_data(code) + total_datas = deepcopy(l2.l2_data_util.local_today_datas[code]) + if total_datas[0]["index"] > 0: + # 鎷兼帴鏁版嵁 + for i in range(0, total_datas[0]["index"]): + data = total_datas[0].copy() + data["index"] = i + total_datas.insert(i, data) + + pos_list = log.get_l2_process_position(code) + if pos_list[0][0] > 0: + pos_list.insert(0, (0, pos_list[0][0] - 1)) + del pos_list[-1] + if pos_list[-1][1] < total_datas[-1]["index"]: + # 鍓╀笅鐨勬暟鎹牴鎹鏉ュ垎 + start_index = -1 + for i in range(pos_list[-1][1] + 1, total_datas[-1]["index"] + 1): + if total_datas[i]["val"]["time"] != total_datas[i - 1]["val"]["time"]: + if start_index < 0: + start_index = i + else: + pos_list.append((start_index, i - 1)) + start_index = i + if pos_list[-1][1] < total_datas[-1]["index"]: + pos_list.append((pos_list[-1][1] + 1, total_datas[-1]["index"])) + l2.l2_data_util.local_today_datas[code].clear() + print("id:", id(l2.l2_data_util.local_today_datas)) + # l2_trade_factor.L2TradeFactorUtil.get_safe_buy_count = mock.Mock(return_value=12) + # pos_list.insert(41,(225,306)) + # pos_list.insert(63, (345, 423)) + # pos_list.insert(66, (440, 447)) + # pos_list.insert(75, (472, 488)) + # pos_list.insert(84, (516, 532)) + + # 鑾峰彇浜ゆ槗杩涘害 + trade_progress_list, buy_queues = log.get_trade_progress(code) + + for indexs in pos_list: + l2.l2_data_manager_new.L2TradeDataProcessor.random_key[code] = mock.Mock(return_value=random.randint(0, 100000)) + # 璁剧疆灏佸崟棰濓紝鑾峰彇涔�1閲� + for i in range(0, 100): + time_ = total_datas[indexs[0]]["val"]["time"] + time_s = tool.get_time_as_second(time_) - i - 1 + volumn = THSBuy1VolumnManager().get_buy_1_volumn(code, tool.time_seconds_format(time_s)) + if volumn is not None: + l2.cancel_buy_strategy.L2LimitUpMoneyStatisticUtil.verify_num(code, int(volumn), + tool.time_seconds_format(time_s)) + break + # 璁剧疆濮斾拱闃熷垪 + for i in range(0, len(buy_queues)): + if tool.trade_time_sub(buy_queues[i][1], total_datas[indexs[0]]["val"]["time"]) > 0: + print("濮斾拱闃熷垪", buy_queues[i]) + try: + __process_buy_queue(code, buy_queues[i - 1][0], buy_queues[i - 1][1]) + except: + pass + break + + print("----------------澶勭悊浣嶇疆", indexs) + if indexs[0] >= 224: + print("杩涘叆璋冭瘯") + l2.l2_data_manager_new.L2TradeDataProcessor.process_add_datas(code, total_datas[indexs[0]:indexs[1] + 1], 0, 0) # class TestTrade(unittest.TestCase): @@ -103,11 +161,10 @@ # 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 TestData(unittest.TestCase): +# code = "002103" +# # l2_data_manager.load_l2_data(code) +# # TradeBuyQueue().save_traded_index(code, "6.94", [1511, 888, 796]) if __name__ == "__main__": -- Gitblit v1.8.0