admin
3 天以前 0b0d0e790fec8c7edfdbcab5c31d625e0c2eadd6
strategy/data_cache.py
@@ -11,7 +11,8 @@
import constant
# 引入掘金API
import utils.juejin_api
from log_module.log import logger_common
from log_module import async_log_util
from log_module.log import logger_common, logger_target_codes
# from logging_config import get_logger
from utils import tool, hx_qc_value_util
@@ -65,7 +66,7 @@
        # 获取A股市场(包含沪深两市)的股票列表跳过停牌,跳过ST    上交所 SHSE.600000   深交所 SZSE.000000    target = ['SHSE.603839', 'SZSE.002855']
        self.all_stocks = utils.juejin_api.JueJinApi.get_target_codes()
        # self.all_stocks = [{'sec_level': 1, 'symbol': 'SZSE.301633','pre_close': 78.72000122070312, 'is_suspended': 0, 'sec_name': '港迪技术', 'listed_date': datetime.datetime(2024, 11, 7, 0, 0,tzinfo=datetime.timezone(datetime.timedelta(seconds=28800))), 'sec_type': 1, 'sec_id': '301633'}]
        async_log_util.info(logger_target_codes, f"{ self.all_stocks}")
        # self.all_stocks = self.all_stocks[:10]
        # 缓存代码的名称
        self.code_name_dict = {x['symbol']: x['sec_name'] for x in self.all_stocks}
@@ -98,11 +99,12 @@
                # print(f"非ST, 退市, 退, XD, N==={basic_info['sec_name']} 继续判断")
                no_k_line_stocks.append(i['symbol'])
        # 将列表推导式移出循环 过滤出昨日收盘价在2-30元的股票
        min_instruments = [stock for stock in instruments if 2 < stock['pre_close'] < 30]
        min_instruments = [stock for stock in instruments if 3 < stock['pre_close'] < 30]
        # print(f"min_instruments  数量==={len(min_instruments)}")
        # 使用 get 方法安全地获取 symbol 字段的值
        self.min_stocks = [stock.get('symbol') for stock in min_instruments if stock.get('symbol') is not None]
        print(f"min_stocks==={len(self.min_stocks)}")
        print(f"min_stocks 数量 ==={len(self.min_stocks)}")
        # logger.info(f"min_stocks==={self.min_stocks}")
        logging.info(f"全局初始化数据  完成《《《 - {os.getpid()}")
        # 获取当前进程的PID
@@ -113,36 +115,28 @@
now_time = datetime.datetime.now().strftime("%H:%M:%S")  # 定义并实时获取 当前时间
'''
设定常用时间点【常量】
字符串格式=="09:25:12"
'''
SERVER_RESTART_TIME = datetime.time(9, 00, 00).strftime("%H:%M:%S")  # 定义9:00
L1_DATA_START_TIME = datetime.time(9, 15, 00).strftime("%H:%M:%S")  # 定义9:15
BEFORE_OPEN_BIDDING_TIME = datetime.time(9, 20, 00).strftime("%H:%M:%S")  # 定义9:20
OPEN_BIDDING_TIME = datetime.time(9, 25, 00).strftime("%H:%M:%S")  # 定义 盘前 集合竞价 时间
LATER_OPEN_BIDDING_TIME = datetime.time(9, 25, 6).strftime("%H:%M:%S")  # 定义 盘前 集合竞价 时间
AFTER_OPEN_BIDDING_TIME = datetime.time(9, 25, 12).strftime("%H:%M:%S")  # 定义 集合竞价 开始后 时间
OPENING_TIME = datetime.time(9, 30, 00).strftime("%H:%M:%S")  # 定义开盘时间
MORN_MARKET_TIME = datetime.time(9, 35, 00).strftime("%H:%M:%S")  # 定义早盘时间
NOON_MARKET_TIME = datetime.time(13, 5, 00).strftime("%H:%M:%S")  # 定义午盘时间
CLOSE_POSITION_TIME = datetime.time(14, 55, 00).strftime("%H:%M:%S")  # 定义平仓时间
WATCH_DISK_END_TIME = datetime.time(14, 56, 00).strftime("%H:%M:%S")  # 定义 板上盯结束时间
CLOSE_BIDDING_TIME = datetime.time(14, 57, 00).strftime("%H:%M:%S")  # 定义 盘后 集合竞价 时间
CLOSING_TIME = datetime.time(15, 00, 00).strftime("%H:%M:%S")  # 定义 收盘时间
AFTER_CLOSING_TIME = datetime.time(15, 1, 00).strftime("%H:%M:%S")  # 定义 收盘后时间
CHECKING_DATA_TIME = datetime.time(17, 00, 00).strftime("%H:%M:%S")  # 定义 检查数据时间
UPDATE_DATA_TIME = datetime.time(18, 31, 00).strftime("%H:%M:%S")  # 定义更新数据时间
PROGRAM_SLEEP_TIME = datetime.time(23, 00, 00).strftime("%H:%M:%S")  # 定义程序休眠时间
# todo 2025-03-25 后无BUG即可彻底删除下处注释部分
# # 读取已经获取到并存储在本地的目标范围的个股的板块概念
# # 读取JSON文件并解析为字典
# if os.path.exists(constant.ALL_STOCKS_PLATE_PATH):
#     with open(constant.ALL_STOCKS_PLATE_PATH, 'r',
#               encoding='utf-8') as f:
#         json_data = f.read()
# else:
#     json_data = "{}"
# all_stocks_plate_dict = json.loads(json_data)
# logger.info(f"all_stocks_plate_dict的数量={len(all_stocks_plate_dict)}")
SERVER_RESTART_TIME = "09:00:00"  # 服务器重启时间
L1_DATA_START_TIME = "09:15:00"  # L1数据开始时间
BEFORE_OPEN_BIDDING_TIME = "09:20:00"  # 【盘前】集合竞价开始前时间
OPEN_BIDDING_TIME = "09:25:00"  # 【盘前】集合竞价开始时间
LATER_OPEN_BIDDING_TIME = "09:25:06"  # 【盘前】集合竞价开始后瞬间
AFTER_OPEN_BIDDING_TIME = "09:25:12"  # 【盘前】集合竞价开始后一会
OPENING_TIME = "09:30:00"  # 上午开盘时间
MORN_MARKET_TIME = "09:35:00"  # 早盘黄金五分钟
MORN_MARKET_CLOSING_TIME = "11:30:00"  # 上午收盘时间
NOON_MARKET_OPENING_TIME = "13:00:00"  # 下午开盘时间
NOON_MARKET_TIME = "13:05:00"  # 午盘黄金五分钟
CLOSE_POSITION_TIME = "14:55:00"  # 尾盘平仓时间
WATCH_DISK_END_TIME = "14:56:00"  # 板上盯结束时间
CLOSE_BIDDING_TIME = "14:57:00"  # 【盘后】集合竞价开始
CLOSING_TIME = "15:00:00"  # 定义 收盘时间
AFTER_CLOSING_TIME = "15:01:00"  # 下午收盘后时间
CHECKING_DATA_TIME = "17:00:00"  # 检查数据时间
UPDATE_DATA_TIME = "18:31:00"  # 更新数据时间
PROGRAM_SLEEP_TIME = "22:00:00"  # 程序休眠时间【不能在23点之后仍运行,获取到的数据可能有谬误】
# 初始化当日当时最高价
high_price = 0
@@ -155,17 +149,23 @@
yesterday_limit_up_code_list = []
# 初始化开盘啦昨日炸板但通过K线数据计算涨停的股票代码列表
yesterday_frying_plate_last_minute_list = []
# 初始化每日涨停信息方法被执行记录
# 初始化每日涨停信息方法 和 获取所有个股的板块概念 是否被执行
execution = False
# 初始化 写入带属性指数K线的方法 是否被执行
index_K_line_write_execution = False
# 初始化实时涨停概念板块
limit_up_block_names = []
# 初始化板块强度下的个股强度
market_sift_plate_stock_dict = {}
# 精选流入板块
market_sift_plates = []
# 初始化实时大盘行情市场情绪综合强度【完整】字典
rise_and_fall_statistics_dirt = {}
# 初始化实时大盘行情情绪综合强度[分数]
real_time_market_strong = 0
# 初始化实时大盘行情情绪综合强度分时列表
time_sharing_market_strong_dirt = {}
# 初始化实时大盘行情市场情绪 涨跌统计 字典
real_time_market_sentiment_dirt = {}
# 为所有个股的带属性K线 字典初始化
all_stocks_all_K_line_property_dict = {}
@@ -196,6 +196,7 @@
usefulMoney = 0
# 为当前账户全部【持仓信息】创建列表
account_positions_dict = {}
# 下面三个集合是为了分类整理持仓字典数据,将各类持仓情况的数据整理为需要的集合
# 为持仓代码创建一个初始集合
position_symbols_set = set()
# 为当日可用持仓代码创建一个初始集合
@@ -219,10 +220,16 @@
bought_plate = []
# 持仓金额自动管理开关
position_automatic_management_switch = True
# GUI手动设置的每次买入的金额
BUY_MONEY_PER_CODE = -1
# 初始化有概念买入金额
have_plate_buy_money = 3000
# 初始化有强度买入金额
have_strength_buy_money = 3000
# 开仓策略计算金额
opening_strategy_results = 0
# 今日第一次下单的金额
today_first_planned_order_amount = 0
# 今日计划下单金额
today_planned_order_amount = 0
@@ -256,13 +263,26 @@
TSXV_open_growth = 0
# 大盘指数情绪预期分数
index_trend_expectation_score = 0
# 每次买入的金额
BUY_MONEY_PER_CODE = -1
# 理想交易行情比率分 满分=1
ideal_trading_market_score = 1
# 可以板上盯卖的代码
LIMIT_UP_SELL_CODES = set()
# L2炸板数据
L2_explosion_data = {}
# 最新的L1数据: {代码: L1数据}
current_l1_dict = {}
# 最新成交价格
latest_deal_price_dict = {}
# 大单成交数据: {"代码":[大单数据1,大单数据2,...]}
big_order_deal_dict = {}
# 有意购买的股票名称列表
willing_buy_list = []
# 已成交股票详情列表
purchased_stocks_details_list = []
logging.info(f"全局初始化数据  完成《《《 - {os.getpid()}")