Administrator
2023-08-28 ba52d7ac92a36f413eacaa686f8535e859664ec6
test/l2_trade_test.py
@@ -2,6 +2,7 @@
# 清除交易数据
import decimal
import json
import multiprocessing
import random
import time
import unittest
@@ -9,16 +10,18 @@
from unittest import mock
from code_attribute import big_money_num_manager, gpcode_manager
from log_module import log
from db.redis_manager_delegate import RedisUtils
from log_module import log, log_export
from trade.huaxin import huaxin_trade_api
from utils import tool
from db import redis_manager
from db import redis_manager_delegate as redis_manager
from l2 import l2_log, l2_data_manager, transaction_progress
from l2.safe_count_manager import BuyL2SafeCountManager
from l2.transaction_progress import TradeBuyQueue
from third_data import kpl_util
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
from trade import trade_data_manager, current_price_process_manager
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
@@ -27,24 +30,24 @@
    redis_l2 = redis_manager.RedisManager(1).getRedis()
    keys = ["buy1_volumn_latest_info-{}", "m_big_money_begin-{}", "m_big_money_process_index-{}"]
    for k in keys:
        redis_l2.delete(k.format(code))
    l2.l2_data_manager.TradePointManager.delete_buy_point(code)
        RedisUtils.delete(redis_l2, k.format(code), auto_free=False)
    RedisUtils.realse(redis_l2)
    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))
    trade_data_manager.placeordercountmanager.clear_place_order_count(code)
    RedisUtils.delete(redis_manager.RedisManager(2).getRedis(), "trade-state-{}".format(code))
    trade_data_manager.PlaceOrderCountManager().clear_place_order_count(code)
    redis_info = redis_manager.RedisManager(0).getRedis()
    keys = redis_info.keys("*{}*".format(code))
    keys = RedisUtils.keys(redis_info, "*{}*".format(code), auto_free=False)
    for k in keys:
        if k.find("pre") is not None:
            continue
        if k.find("zyltgb") is not None:
            continue
        redis_info.delete(k)
        RedisUtils.delete(redis_info, k, auto_free=False)
    RedisUtils.realse(redis_info)
    BuyL2SafeCountManager().clear_data(code)
    transaction_progress.TradeBuyQueue().set_traded_index(code, 0)
class VirtualTrade(unittest.TestCase):
@@ -64,7 +67,7 @@
                        decimal.Decimal("0.00"))
                    # 获取执行位时间
                    exec_time = None
                    buy_single_index, buy_exec_index, compute_index, num, count, max_num_set, volume_rate = l2_data_manager.TradePointManager.get_buy_compute_start_data(
                    buy_single_index, buy_exec_index, compute_index, num, count, max_num_set, volume_rate = l2_data_manager.TradePointManager().get_buy_compute_start_data(
                        code)
                    if buy_exec_index:
                        try:
@@ -74,12 +77,13 @@
                    buy_progress_index = TradeBuyQueue().compute_traded_index(code, buy_one_price_,
                                                                              buy_queue_result_list, exec_time)
                    if buy_progress_index is not None:
                        l2.cancel_buy_strategy.HourCancelBigNumComputer.set_trade_progress(code, time_, buy_exec_index,
                                                                                           buy_progress_index,
                                                                                           l2.l2_data_util.local_today_datas.get(
                                                                                               code),
                                                                                           l2.l2_data_util.local_today_num_operate_map.get(
                                                                                               code))
                        l2.cancel_buy_strategy.HourCancelBigNumComputer().set_trade_progress(code, time_,
                                                                                             buy_exec_index,
                                                                                             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))
@@ -88,7 +92,7 @@
    # @unittest.skip("跳过此单元测试")
    def test_trade(self):
        code = "002213"
        code = "600292"
        clear_trade_data(code)
        l2.l2_data_util.load_l2_data(code)
        total_datas = deepcopy(l2.l2_data_util.local_today_datas[code])
@@ -99,7 +103,7 @@
                data["index"] = i
                total_datas.insert(i, data)
        pos_list = log.get_l2_process_position(code)
        pos_list = log_export.get_l2_process_position(code)
        # pos_list.insert(108,(375,448))
        if pos_list[0][0] > 0:
            pos_list.insert(0, (0, pos_list[0][0] - 1))
@@ -129,26 +133,34 @@
        # pos_list.insert(84, (516, 532))
        # 获取交易进度
        trade_progress_list, buy_queues = log.get_trade_progress(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)
        LimitUpCodesPlateKeyManager().set_today_limit_up(KPLDataManager().get_from_file(kpl_util.KPLDataType.LIMIT_UP, tool.get_now_date_str()))
        LimitUpCodesPlateKeyManager().set_today_limit_up(
            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))
        pss_server, pss_strategy = multiprocessing.Pipe()
        huaxin_trade_api.run_pipe_trade(pss_server)
        for indexs in pos_list:
            l2_log.threadIds[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, 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:
@@ -175,11 +187,11 @@
        l2.l2_data_util.load_num_operate_map(l2.l2_data_util.local_today_num_operate_map, code, total_datas, True)
        buy_progress_index = 523
        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))
        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))
# class TestTrade(unittest.TestCase):
@@ -198,8 +210,8 @@
#     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(
#     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))
#