Administrator
4 天以前 637972c757c8d5aad1b56e360706478829122741
strategy/strategy_manager.py
@@ -8,7 +8,7 @@
from db.mysql_data_delegate import Mysqldb
from db.redis_manager_delegate import RedisUtils
from log_module import async_log_util
from log_module.log import logger_trade
from log_module.log import logger_trade, logger_debug
from strategy.data_analyzer import KPLLimitUpDataAnalyzer
from strategy.low_suction_strategy import LowSuctionOriginDataExportManager
from strategy.strategy_params_settings import StrategyParamsSettingsManager
@@ -105,7 +105,7 @@
    """
    def __init__(self, day, script_name="strategy_script_v6.py",
                 settings=StrategyParamsSettingsManager().get_settings()):
                 settings=StrategyParamsSettingsManager().get_settings(), need_load_data=False):
        self.now_day = day
        # 买大单:{代码:[大单数据]}
        self.big_order_buy = {}
@@ -151,9 +151,10 @@
            self.scripts = scripts
        self.settings = settings
        self.data_loader = DataLoader(self.now_day, cache_path=f"{constant.get_path_prefix()}/datas")
        self.data_loader = DataLoader(self.now_day)
        self.__LowSuctionOriginDataExportManager = LowSuctionOriginDataExportManager(self.now_day)
        self.load_data()
        if need_load_data:
            self.load_data()
    def load_data(self):
        # 加载历史数据
@@ -169,7 +170,11 @@
        trade_days = self.data_loader.trade_days
        # 加载历史数据
        self.kline_data = self.data_loader.load_kline_data()
        self.limit_up_record_data = self.data_loader.load_limit_up_data()
        limit_up_record_data_list = self.data_loader.load_limit_up_data()
        for d in limit_up_record_data_list:
            if d[0] not in self.limit_up_record_data:
                self.limit_up_record_data[d[0]] = []
            self.limit_up_record_data[d[0]].append(d)
        self.next_trade_day = self.data_loader.load_next_trade_day()
        if not trade_days:
            raise Exception("交易日历获取失败")
@@ -275,19 +280,25 @@
        """
        codes = []
        for d in big_orders:
            code = d[0]
            if d[1] == 0:
                # 买单
                if code not in self.big_order_buy:
                    self.big_order_buy[code] = []
                self.big_order_buy[code].append(d[2])
            else:
                # 卖单
                if code not in self.big_order_sell:
                    self.big_order_sell[code] = []
                self.big_order_sell[code].append(d[2])
                if code not in codes:
                    codes.append(code)
            try:
                code = d[0]
                # 只计算200w以上的买单
                if d[2][2] < 200e4:
                    continue
                if d[1] == 0:
                    # 买单
                    if code not in self.big_order_buy:
                        self.big_order_buy[code] = []
                    self.big_order_buy[code].append(d[2])
                else:
                    # 卖单
                    if code not in self.big_order_sell:
                        self.big_order_sell[code] = []
                    self.big_order_sell[code].append(d[2])
                    if code not in codes:
                        codes.append(code)
            except Exception as e:
                logger_debug.error(f"{d}")
            # 驱动下单
        for code in codes:
            self.__run(code, self.stock_variables_dict.get(code))