Administrator
2025-06-25 33dc2c930c8e722dda1b9d24d720f78260da02da
bug修复/策略完善
6个文件已修改
49 ■■■■■ 已修改文件
api/outside_api_callback.py 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
strategy/strategy_manager.py 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
strategy/strategy_params_settings.py 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
strategy/test.py 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
strategy/time_series_backtest.py 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
trade/trade_manager.py 13 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
api/outside_api_callback.py
@@ -14,6 +14,7 @@
from third_data.history_k_data_manager import TradeDateManager
from third_data.kpl_block_manager import KPLCodeJXBlocksManager
from trade import trade_record_log_util
from trade.trade_manager import TradeStateManager
from utils import socket_util, middle_api_protocol, tool
@@ -50,7 +51,10 @@
        @return:
        """
        result = strategy_params_settings.StrategyParamsSettingsManager().get_settings().to_json_str()
        return {"code": 0, "data": json.loads(result)}
        result = json.loads(result)
        result["trade_state"] = 1 if TradeStateManager().is_can_buy_cache() else 0
        return {"code": 0, "data": result}
    def __on_set_settings(self, data):
        """
@@ -59,6 +63,12 @@
        """
        settings = strategy_params_settings.StrategyParamsSettingsManager().get_settings()
        for k in data:
            if k == "trade_state":
                if data[k]:
                    TradeStateManager().open_buy()
                else:
                    TradeStateManager().close_buy()
                continue
            settings.__setattr__(k, data[k])
        strategy_params_settings.StrategyParamsSettingsManager().set_settings(settings)
        # 同步参数设置
strategy/strategy_manager.py
@@ -17,7 +17,7 @@
import constant
from third_data import kpl_util
from trade import trade_record_log_util
from trade.trade_manager import DealCodesManager, PlatePlaceOrderManager
from trade.trade_manager import DealCodesManager, PlatePlaceOrderManager, TradeStateManager
from utils import huaxin_util, tool
BIG_ORDER_MAX_SPACE_TIME = 3
@@ -424,6 +424,10 @@
        if compute_result[0]:
            if code in sv.成交代码:
                return
            if not TradeStateManager().is_can_buy_cache():
                async_log_util.info(logger_trade, f"交易已关闭")
                return
            # 可以下单
            # 判断是否可以买
            order_ref = huaxin_util.create_order_ref()
strategy/strategy_params_settings.py
@@ -14,8 +14,6 @@
    STATE_NORMAL_BUY = 1
    def __init__(self):
        # 交易状态
        self.trade_state = 1
        # 买入金额
        self.buy_money = 2000
        # 最大买入票的数量
strategy/test.py
@@ -29,8 +29,8 @@
if __name__ == "__main__":
    print("======3个票涨停之后买_不买长得太高未放量")
    statistic_average(r"C:\Users\Administrator\Desktop\3个票涨停之后买_不买长得太高未放量.txt")
    print("======10到100亿")
    statistic_average(r"C:\Users\Administrator\Desktop\10到100亿.txt")
    print("======3个票涨停之后买")
    statistic_average(r"C:\Users\Administrator\Desktop\3个票涨停之后买.txt")
    # codes = set()
strategy/time_series_backtest.py
@@ -816,14 +816,14 @@
    days = ["2025-05-12", "2025-05-13", "2025-05-14", "2025-05-15", "2025-05-16", "2025-05-19", "2025-05-20",
            "2025-05-21", "2025-05-22", "2025-05-23", "2025-05-26", "2025-05-27", "2025-05-28", "2025-05-29",
            "2025-05-30", "2025-06-03", "2025-06-04", "2025-06-05", "2025-06-06", "2025-06-09", "2025-06-10"]
    # days = ["2025-06-03", "2025-06-04", "2025-06-05", "2025-06-06", "2025-06-09", "2025-06-10",
    #         "2025-06-11", "2025-06-12", "2025-06-13", "2025-06-16", "2025-06-17", "2025-06-18", "2025-06-19",
    #         "2025-06-20", "2025-06-23", "2025-06-24"]
    days = ["2025-06-03", "2025-06-04", "2025-06-05", "2025-06-06", "2025-06-09", "2025-06-10",
            "2025-06-11", "2025-06-12", "2025-06-13", "2025-06-16", "2025-06-17", "2025-06-18", "2025-06-19",
            "2025-06-20", "2025-06-23", "2025-06-24", "2025-06-25"]
    # days = ["2025-05-23"]
    days = ["2025-05-12", "2025-05-13", "2025-05-14", "2025-05-15", "2025-05-16", "2025-05-19", "2025-05-20",
            "2025-05-21", "2025-05-22", "2025-05-23", "2025-05-26"]
    #
    # days = ["2025-05-12", "2025-05-13", "2025-05-14", "2025-05-15", "2025-05-16", "2025-05-19", "2025-05-20",
    #         "2025-05-21", "2025-05-22", "2025-05-23", "2025-05-26"]
    days.reverse()
    for day in days:
trade/trade_manager.py
@@ -26,9 +26,10 @@
latest_trade_delegate_data = []
# 关闭购买入口
# 开启购买入口
class TradeStateManager:
    """
    交易状态管理(开启/关闭交易)
    """
    __instance = None
    __db = 12
    redisManager = redis_manager.RedisManager(12)
@@ -49,18 +50,18 @@
    # 开启购买入口
    def open_buy(self):
        self.__trade_buy_state_cache = True
        RedisUtils.setex_async(self.__db, "trade_buy_state", tool.get_expire(), 1)
        RedisUtils.setex_async(self.__db, "ls_trade_buy_state", tool.get_expire(), 1)
    # 关闭购买入口
    def close_buy(self):
        self.__trade_buy_state_cache = False
        RedisUtils.setex_async(self.__db, "trade_buy_state", tool.get_expire(), 0)
        RedisUtils.setex_async(self.__db, "ls_trade_buy_state", tool.get_expire(), 0)
    # 是否可以下单
    @classmethod
    def is_can_buy(cls):
        # 默认设置为可交易
        val = RedisUtils.get(cls.__get_redis(), "trade_buy_state")
        val = RedisUtils.get(cls.__get_redis(), "ls_trade_buy_state")
        if val is None:
            return True
        if int(val) == 1:
@@ -349,7 +350,7 @@
__CodesTradeStateManager = CodesTradeStateManager()
if __name__ == "__main__":
    PlatePlaceOrderManager().add_plates_code({"通信","计算机"}, "000333")
    PlatePlaceOrderManager().add_plates_code({"通信", "计算机"}, "000333")
    place_order_plate_codes = PlatePlaceOrderManager().get_plate_codes()
    code_sets = [set(lst) for lst in place_order_plate_codes.values()]
    # 2. 使用 set.union() 求并集