Administrator
2025-06-25 0f04dc8c629f970d52ea5938dd60a54736b515b1
bug修复/策略完善/结构调整
11个文件已修改
3 文件已重命名
8个文件已删除
882 ■■■■ 已修改文件
api/outside_api_callback.py 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/local_data_server.py 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
strategy/back_test.py 15 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
strategy/before_limit_up_big_order_analyzer.py 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
strategy/data/data_analyzer.py 补丁 | 查看 | 原始文档 | blame | 历史
strategy/data/data_downloader.py 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
strategy/data/data_manager.py 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
strategy/strategy_manager.py 46 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
strategy/strategy_params_settings.py 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
strategy/strategy_script_v6.py 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
strategy/strategy_script_v7.py 167 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
strategy/strategy_variable.py 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
strategy/strategy_variable_factory.py 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
strategy/test.py 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
strategy/time_series_backtest.py 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
strategy/今日量是否足够.py 43 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
strategy/低吸脚本.py 47 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
strategy/低吸脚本_辨识度.py 86 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
strategy/低吸脚本_辨识度_v2.py 96 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
strategy/低吸脚本_辨识度_v3.py 122 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
strategy/低吸脚本_辨识度_v4.py 101 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
strategy/低吸脚本_辨识度_v5.py 83 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
api/outside_api_callback.py
@@ -10,6 +10,7 @@
from huaxin_client.client_network import SendResponseSkManager
from strategy import strategy_params_settings, env_info, strategy_manager
from strategy.env_info import RealTimeEnvInfo
from strategy.strategy_manager import PlateWhiteListManager
from strategy.strategy_variable_factory import DataLoader
from third_data.history_k_data_manager import TradeDateManager
from third_data.kpl_block_manager import KPLCodeJXBlocksManager
@@ -17,6 +18,10 @@
from trade.trade_manager import TradeStateManager
from utils import socket_util, middle_api_protocol, tool
OPERRATE_SET = 1  # è®¾ç½®
OPERRATE_DELETE = 2  # åˆ é™¤
OPERRATE_GET = 3  # èŽ·å–
OPERRATE_ADD = 4  # æ–°å¢ž
class MyAPICallback(ActionCallback):
@@ -62,12 +67,16 @@
        @return:
        """
        settings = strategy_params_settings.StrategyParamsSettingsManager().get_settings()
        settings_vars = vars(settings)
        for k in data:
            if k == "trade_state":
                if data[k]:
                    TradeStateManager().open_buy()
                else:
                    TradeStateManager().close_buy()
                continue
            if k not in settings_vars:
                # æ²¡æœ‰åœ¨å±žæ€§é‡Œé¢
                continue
            settings.__setattr__(k, data[k])
        strategy_params_settings.StrategyParamsSettingsManager().set_settings(settings)
@@ -158,6 +167,22 @@
            logging.exception(e)
            return {"code": 1, "msg": str(e)}
    def __on_plate_white_list(self, data):
        operate = data["operate"]
        if operate == OPERRATE_GET:
           plates =   PlateWhiteListManager().get_plates()
           return {"code": 0, "data": list(plates)}
        elif operate == OPERRATE_ADD:
            plate = data["plate"]
            PlateWhiteListManager().add_plate(plate)
            return {"code": 0}
        elif operate == OPERRATE_DELETE:
            plate = data["plate"]
            PlateWhiteListManager().remove_plate(plate)
            return {"code": 0}
    def OnCommonRequest(self, client_id, request_id, data):
        ctype = data["ctype"]
        result_json = {}
@@ -182,5 +207,6 @@
            # èŽ·å–ä¸‹å•è®°å½•
            datas = trade_record_log_util.get_trade_records(trade_record_log_util.TYPE_PLACE_ORDER)
            result_json = {"code": 0, "data": datas}
        elif ctype == 'plate_white_list':
            result_json = self.__on_plate_white_list(data)
        self.send_response(result_json, client_id, request_id)
server/local_data_server.py
@@ -9,8 +9,7 @@
import constant
from db.mysql_data_delegate import Mysqldb
from strategy.low_suction_strategy import LowSuctionOriginDataExportManager
from strategy.strategy_variable_factory import DataLoader
from strategy.data.data_manager import LowSuctionOriginDataExportManager
from third_data import kpl_util
from utils import tool, output_util, huaxin_util
strategy/back_test.py
@@ -1,20 +1,15 @@
import json
import logging
import os
import datetime
import pickle
import re
from dateutil.tz import tzfile, gettz
from code_attribute import global_data_loader
from log_module.log import logger_debug
from strategy.data_analyzer import KTickLineAnalyzer
from strategy.data_downloader import DataDownloader
from strategy.low_suction_strategy import LowSuctionOriginDataExportManager
from strategy.data.data_analyzer import KTickLineAnalyzer
from strategy.data.data_downloader import DataDownloader
from strategy.data.data_manager import LowSuctionOriginDataExportManager
from strategy.strategy_variable_factory import DataLoader, StrategyVariableFactory
from third_data.history_k_data_manager import HistoryKDataManager
from third_data.history_k_data_util import JueJinLocalApi, HistoryKDatasUtils
from third_data.history_k_data_util import HistoryKDatasUtils
from utils import global_util, tool, huaxin_util
@@ -45,8 +40,6 @@
        logging.exception(e)
        return set(), None
from dateutil.parser import parse
code_ticks_dict = {}
code_time_ticks_dict = {}
strategy/before_limit_up_big_order_analyzer.py
@@ -8,7 +8,7 @@
import xlwt
from db import mysql_data_delegate as mysql_data
from strategy.low_suction_strategy import LowSuctionOriginDataExportManager
from strategy.data.data_manager import LowSuctionOriginDataExportManager
from strategy.strategy_variable_factory import DataLoader
from utils import tool, huaxin_util
strategy/data/data_analyzer.py
strategy/data/data_downloader.py
File was renamed from strategy/data_downloader.py
@@ -4,9 +4,8 @@
import datetime
import os
import json
from typing import Dict, List, Tuple
from typing import Dict
from strategy.low_suction_strategy import LowSuctionOriginDataExportManager
from strategy.strategy_variable_factory import DataLoader
from third_data.history_k_data_util import JueJinLocalApi
strategy/data/data_manager.py
File was renamed from strategy/low_suction_strategy.py
@@ -10,12 +10,6 @@
from utils import huaxin_util, tool
class BackTest:
    """
    å›žé€€æµ‹è¯•
    """
class LowSuctionOriginDataExportManager:
    """
    åŽŸå§‹æ•°æ®å¯¼å‡º
strategy/strategy_manager.py
@@ -8,9 +8,9 @@
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, logger_debug, logger_trade_record
from strategy.data_analyzer import KPLLimitUpDataAnalyzer
from strategy.low_suction_strategy import LowSuctionOriginDataExportManager
from log_module.log import logger_trade, logger_debug
from strategy.data.data_analyzer import KPLLimitUpDataAnalyzer
from strategy.data.data_manager import LowSuctionOriginDataExportManager
from strategy.strategy_params_settings import StrategyParamsSettingsManager
from strategy.strategy_variable import StockVariables
from strategy.strategy_variable_factory import DataLoader, StrategyVariableFactory
@@ -100,6 +100,38 @@
        """
        self.low_price_dict[code] = price
        RedisUtils.setex_async(self.__db, f"tick_low_price-{code}", tool.get_expire(), price)
@tool.singleton
class PlateWhiteListManager:
    """
    æ¿å—白名单管理
    """
    def __init__(self):
        self.__plate_white_list = set()
        self.__db = 13
        self.__redis_manager = redis_manager.RedisManager(self.__db)
        self.__load_data()
    def __get_redis(self):
        return self.__redis_manager.getRedis()
    def __load_data(self):
        val = RedisUtils.smembers(self.__get_redis(), "plate_white_list")
        if val:
            self.__plate_white_list = set(val)
    def get_plates(self):
        return self.__plate_white_list
    def add_plate(self, plate):
        self.__plate_white_list.add(plate)
        RedisUtils.sadd_async(self.__db, "plate_white_list", plate)
        RedisUtils.expire_async(self.__db, "plate_white_list", tool.get_expire())
    def remove_plate(self, plate):
        self.__plate_white_list.discard(plate)
        RedisUtils.srem_async(self.__db, "plate_white_list", plate)
class LowSuctionStrategy:
@@ -412,6 +444,7 @@
        # 2. ä½¿ç”¨ set.union() æ±‚并集
        union_code_sets = set().union(*code_sets)
        sv.成交代码 = union_code_sets
        sv.板块白名单 = PlateWhiteListManager().get_plates()
        global_dict = {
            "sv": sv,
            "target_code": code,
@@ -437,8 +470,11 @@
            trade_record_log_util.add_place_order_log(code, trade_record_log_util.PlaceOrderInfo(code=code,
                                                                                                 time_str=tool.get_now_time_str(),
                                                                                                 price=sv.当前价,
                                                                                                 rate=round((sv.当前价 - sv.昨日收盘价) * 100 / sv.昨日收盘价,2),
                                                                                                 plates=compute_result[3],
                                                                                                 rate=round((
                                                                                                                        sv.当前价 - sv.昨日收盘价) * 100 / sv.昨日收盘价,
                                                                                                            2),
                                                                                                 plates=compute_result[
                                                                                                     3],
                                                                                                 plates_info=
                                                                                                 compute_result[2],
                                                                                                 info=compute_result[1]
strategy/strategy_params_settings.py
@@ -102,5 +102,6 @@
if __name__ == "__main__":
    settings = StrategyParamsSettingsManager().get_settings()
    StrategyParamsSettingsManager().set_settings(settings)
    print(vars(StrategyParamsSettings()))
    # settings = StrategyParamsSettingsManager().get_settings()
    # StrategyParamsSettingsManager().set_settings(settings)
strategy/strategy_script_v6.py
@@ -37,6 +37,9 @@
    # ç›®æ ‡ç¥¨æ¿å—涨停个数>=2
    can_buy_plates = set()
    for plate in sv.代码板块:
        if plate in sv.板块白名单:
            can_buy_plates.add(plate)
            continue
        if not sv.资金流入板块 or plate not in sv.资金流入板块:
            continue
        if plate in sv.连续老题材:
strategy/strategy_script_v7.py
File was deleted
strategy/strategy_variable.py
@@ -215,6 +215,7 @@
        self.连续老题材 = set()
        self.涨得高未放量 = False
        self.涨停过未放量 = False
        self.板块白名单 = set()
    def replace_variables(self, expression):
        """
strategy/strategy_variable_factory.py
@@ -9,7 +9,7 @@
import constant
from code_attribute import global_data_loader, gpcode_manager
from db import mysql_data_delegate
from strategy.data_analyzer import KTickLineAnalyzer, KPLLimitUpDataAnalyzer, K60SLineAnalyzer
from strategy.data.data_analyzer import KTickLineAnalyzer, KPLLimitUpDataAnalyzer, K60SLineAnalyzer
from strategy.strategy_variable import StockVariables
from third_data import kpl_api, kpl_util
from third_data.history_k_data_manager import HistoryKDataManager
@@ -685,7 +685,7 @@
    # __load_target_codes_v1()
    __DataLoader = DataLoader("2025-06-19")
    __DataLoader = DataLoader("2025-06-25")
    # __test_jx_blocks(__DataLoader)
    # instance = StockVariables()
@@ -703,7 +703,7 @@
    results = __DataLoader.load_target_plate_and_codes()
    # for k in results:
    #     print(k, results[k])
    plates = ["锂电池", "化工"]
    plates = ["智能驾驶", "无人驾驶", "家电", "锂电池", "芯片"]
    print("==========新题材=======")
    for p in plates:
        print(p, results.get(p))
strategy/test.py
@@ -1,10 +1,7 @@
from huaxin_client import l1_subscript_codes_manager
from strategy import strategy_manager, data_analyzer
from strategy.strategy_variable import StockVariables
from strategy.data import data_analyzer
# ç»Ÿè®¡å½“日的平均溢价率
from strategy.strategy_variable_factory import DataLoader
from third_data.kpl_block_manager import KPLCodeJXBlocksManager
def statistic_average(path):
strategy/time_series_backtest.py
@@ -2,14 +2,13 @@
import constant
from code_attribute import gpcode_manager, code_nature_analyse
from strategy.data_analyzer import KPLLimitUpDataAnalyzer
from strategy.data_downloader import DataDownloader
from strategy.low_suction_strategy import LowSuctionOriginDataExportManager
from strategy.strategy_params_settings import StrategyParamsSettings, StrategyParamsSettingsManager
from strategy.data.data_analyzer import KPLLimitUpDataAnalyzer
from strategy.data.data_downloader import DataDownloader
from strategy.data.data_manager import LowSuctionOriginDataExportManager
from strategy.strategy_params_settings import StrategyParamsSettingsManager
from strategy.strategy_variable import StockVariables
from strategy.strategy_variable_factory import DataLoader, StrategyVariableFactory
from third_data import kpl_util
from third_data.third_blocks_manager import BlockMapManager
from utils import tool, huaxin_util
@@ -333,6 +332,7 @@
                                            max_day=days[0]))
        stock_variables.连续老题材 = KPLLimitUpDataAnalyzer.get_continuous_limit_up_reasons(
            timeline_data["limit_up_record_data_list"], self.data_loader.trade_days[:2])
        self.stock_variables_dict[code_] = stock_variables
@@ -800,8 +800,8 @@
# é”‚电池 ['002882', '002667', '002846', '300530', '002074', '301662', '002580', '300584', '603399', '601515']
# åŒ–å·¥ ['600610', '002427', '002165', '002809', '000565', '002365', '603192', '600370', '600800', '603188']
# DEBUG_CODES = ['600610', '002427', '002165', '002809', '000565', '002365', '603192', '600370', '600800', '603188']
DEBUG_CODES = []
DEBUG_CODES = ['605005', '002590', '002813', '000826', '002973', '603686', '001230', '600684', '000981', '002232']
# DEBUG_CODES = []
VOLUME_LOG_ENABLE = False
# å¤‡ç”¨å¤§å•
strategy/½ñÈÕÁ¿ÊÇ·ñ×ã¹».py
File was deleted
strategy/µÍÎü½Å±¾.py
File was deleted
strategy/µÍÎü½Å±¾_±æÊ¶¶È.py
File was deleted
strategy/µÍÎü½Å±¾_±æÊ¶¶È_v2.py
File was deleted
strategy/µÍÎü½Å±¾_±æÊ¶¶È_v3.py
File was deleted
strategy/µÍÎü½Å±¾_±æÊ¶¶È_v4.py
File was deleted
strategy/µÍÎü½Å±¾_±æÊ¶¶È_v5.py
File was deleted