Administrator
5 天以前 0ce5457b060bddc2ab65e4ff094159781cd15deb
strategy/strategy_variable_factory.py
@@ -7,7 +7,7 @@
import re
import constant
from code_attribute import global_data_loader
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.strategy_variable import StockVariables
@@ -203,7 +203,7 @@
    def load_target_plate_and_codes(self):
        """
        加载目标板块与对应的代码:
        从最近120个交易日的真正涨停数据中
        从最近60个交易日的真正涨停数据中
        @return: {"板块":[代码]}
        """
        end_date = self.trade_days[:60][-1]
@@ -234,8 +234,9 @@
            if results:
                results = [x for x in results if
                           (tool.is_can_buy_code(x[0]) and x[0] in valid_codes and x[0] not in exclude_codes)]
                # 取前1/3且涨停数是前10
                max_count = len(results) // 3 if len(results) % 3 == 0 else len(results) // 3 + 1
                results = results[:max_count]
                # results = results[:max_count]
                # 取前10
                results = results[:10]
                codes = [x[0] for x in results]
@@ -253,7 +254,10 @@
        one_year_ago = (pre_date - datetime.timedelta(days=365)).strftime('%Y-%m-%d')
        pre_date = pre_date.strftime('%Y-%m-%d')
        trade_days = self.jueJinLocalApi.get_trading_dates(one_year_ago, pre_date)
        if constant.is_windows():
            trade_days = self.jueJinLocalApi.get_trading_dates(one_year_ago, pre_date)
        else:
            trade_days = HistoryKDatasUtils.get_trading_dates(one_year_ago, pre_date)
        trade_days.sort(reverse=True)
        trade_days = trade_days[:120]
        return trade_days
@@ -263,7 +267,10 @@
        加载交易日列表,now_day前120个交易日
        :return: 交易日列表
        """
        next_trade_day = self.jueJinLocalApi.get_next_trading_date(self.now_day)
        if constant.is_windows():
            next_trade_day = self.jueJinLocalApi.get_next_trading_date(self.now_day)
        else:
            next_trade_day = HistoryKDatasUtils.get_next_trading_date(self.now_day)
        return next_trade_day
    def load_target_codes(self):
@@ -420,6 +427,8 @@
        """
        datas = self.load_all_codes_of_plates(is_for_buy=True)
        fdata = {}
        if not datas:
            return fdata
        for plate_code in datas:
            plate_name = datas[plate_code][0]
            codes_info = datas[plate_code][1]
@@ -627,8 +636,42 @@
            print(code, code_blocks[code])
def __load_target_codes_v1():
    """
    50亿以下的
    @return:
    """
    def get_zylt(code):
        zylt_volume_map = global_util.zylt_volume_map
        last_trade_day = __DataLoader.trade_days[0]
        volume = zylt_volume_map.get(code)
        # 今日涨停价要突破昨日最高价
        k_bars = HistoryKDataManager().get_history_bars(code, last_trade_day)
        return k_bars[0]["close"] * volume * tool.get_limit_up_rate(code)
    __DataLoader = DataLoader('2025-06-13')
    global_data_loader.load_zyltgb_volume_from_db()
    results = __DataLoader.load_target_plate_and_codes()
    # for k in results:
    #     print(k, results[k])
    plates = ["天然气", "军工"]
    print("==========新题材=======")
    for p in plates:
        codes = [x for x in results.get(p) ] # if get_zylt(x) < 31e8
        print("======", p)
        for code in codes:
            print("\t\t", code, gpcode_manager.CodesNameManager().get_code_name(code))
if __name__ == "__main__":
    __DataLoader = DataLoader("2025-06-05")
    # __load_target_codes_v1()
    __DataLoader = DataLoader("2025-06-17")
    # __test_jx_blocks(__DataLoader)
    # instance = StockVariables()
@@ -644,7 +687,9 @@
    # print(result_dict["301279"])
    results = __DataLoader.load_target_plate_and_codes()
    plates = ["有色金属"]
    # for k in results:
    #     print(k, results[k])
    plates = ["脑机接口"]
    print("==========新题材=======")
    for p in plates:
        print(p, results.get(p))