有无大单函数的数据来源的大单数据来源将本地读取改为内存读取,同时减少了打印的逻辑分支
4个文件已修改
57 ■■■■■ 已修改文件
data_server.py 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
strategy/L2_data_analysis.py 15 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
strategy/buying_strategy.py 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
strategy/data_cache.py 15 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
data_server.py
@@ -380,6 +380,16 @@
                # 成交大单传递
                datas = self.rfile.read(int(self.headers['content-length']))
                _str = str(datas, encoding="gbk")
                datas = json.loads(_str)
                for d in datas:
                    if d[1] != 0:
                        continue
                    code, data = d[0], d[2]
                    if code not in data_cache.big_order_deal_dict:
                        data_cache.big_order_deal_dict[code] = []
                    data_cache.big_order_deal_dict[code].append(data)
                    # TODO 获取买大单数量
                    len(data_cache.big_order_deal_dict.get(code, []))
                hx_logger_l2_transaction.info(_str)
                # 记录日志
                result_str = json.dumps({"code": 0})
strategy/L2_data_analysis.py
@@ -4,6 +4,7 @@
import os
import constant
from log_module.log import logger_debug, logger_common
from strategy import data_cache
from utils import huaxin_util
# 获取logger实例
@@ -39,23 +40,11 @@
# 找到具体目标个股L2中有无大单记录
def find_L2_big_order_of_code(code):
    # 获取当前日期,并格式化为 'YYYY-MM-DD'
    current_date = datetime.datetime.now().strftime('%Y-%m-%d')
    # 声明要转义的文件的路径
    log_file_path = f'{constant.L2_LOG_PATH}/transaction.{current_date}.log'
    # 检查文件是否存在,如果存在则继续处理,如果不存在则就此打住
    if not os.path.exists(log_file_path):
        logger.info(f"Error错误:{log_file_path}----文件不存在!")
        return
    parsed_logs = read_and_parse_log(log_file_path)
    # 使用列表推导式和 ast.literal_eval() 将字符串转换为列表
    true_lists = [ast.literal_eval(log) for log in parsed_logs]
    # 初始化一个标志变量,用于检查是否找到了特定股票代码
    found = False
    # 遍历转换后的列表
    for sublist in true_lists:
    for sublist in data_cache.big_order_deal_dict.get(code, []):
        if sublist and sublist[0] and sublist[0][0] == code:
            # print(f"找到大单的对应行列表 sublist[0]===={sublist[0]}")
            # 格式
strategy/buying_strategy.py
@@ -259,6 +259,7 @@
                                                                                         today_limit_up_price)
                # print(f"throwing_pressure_position === {throwing_pressure_position}")
                # 计算瞬时量幅比
                # 瞬时量幅比 = 瞬时交易量 / 昨日交易量 / 瞬时涨幅
                last_volume_to_growth_ratio = (round(current_last_volume / 10000, 2) / round(
                    k_line_data[0]['volume'] / 10000, 2)) / (round(tick_growth, 2) / 100)
@@ -367,9 +368,7 @@
                                        elif data_cache.have_plate_buy_times >= 3:
                                            logger_info(f"【不利】有概念买入已经 3 次了!不买了!!公司名称:{k_line_data[0]['sec_name']},")
                                        elif len(data_cache.addition_position_symbols_set) >= 3:
                                            L2_data_analysis.find_L2_big_order_of_code(symbol_code)
                                            logger_info(f"【不利】当日已经买了3只票!不买了!!公司名称:{k_line_data[0]['sec_name']},")
                                            L2_data_analysis.find_L2_big_order_of_code(symbol_code)
                                        elif now_time < data_cache.OPENING_TIME or now_time > data_cache.NOON_MARKET_TIME:
                                            logger_info(f"【不利】不在9:30-13:05时间内!不买!!")
                                        else:
@@ -384,8 +383,6 @@
                                                                             get_order_money(),
                                                                             k_line_data[0]['sec_name'],
                                                                             current_price)
                                            # 查看一下该股有无大单
                                            L2_data_analysis.find_L2_big_order_of_code(symbol_code)
                                            # 检测持仓代码集合中有无下单个股,才认为交易成功
                                            if symbol_code not in data_cache.position_symbols_set:
                                                logger_info(
@@ -460,10 +457,8 @@
                                                    f"【不利】同概念只买一次,不买了,公司名称:{k_line_data[0]['sec_name']},重复相交概念==={intersection_plate}")
                                            elif data_cache.have_plate_buy_times >= 1:
                                                logger_info(f"【不利】有概念无强度买入已经1次了!不买了!!公司名称:{k_line_data[0]['sec_name']},")
                                                L2_data_analysis.find_L2_big_order_of_code(symbol_code)
                                            elif len(data_cache.addition_position_symbols_set) >= 4:
                                                logger_info(f"【不利】当日已经买了3只票!不买了!!公司名称:{k_line_data[0]['sec_name']},")
                                                L2_data_analysis.find_L2_big_order_of_code(symbol_code)
                                            elif now_time < data_cache.OPENING_TIME or now_time > data_cache.NOON_MARKET_TIME:
                                                logger_info(f"【不利】不在9:30-13:05时间内!不买!!")
                                            else:
@@ -479,8 +474,6 @@
                                                # data_cache.have_plate_buy_times += 1
                                                # # 将买入个股的当时概念添加到全局变量中存储
                                                # data_cache.bought_plate.extend(limit_up_plate_included_list)
                                                # # 查看一下该股有无大单
                                                L2_data_analysis.find_L2_big_order_of_code(symbol_code)
                                                # 检测持仓代码集合中有无下单个股,才认为交易成功
                                                if symbol_code not in data_cache.position_symbols_set:
                                                    logger_info(
@@ -561,10 +554,8 @@
                                                        f"【不利】自由市值大于100亿,且未发现大单!不买!! 公司名称:{k_line_data[0]['sec_name']},最新价: {current_price}")
                                                elif data_cache.have_strength_buy_times >= 1:
                                                    logger_info(f"【不利】有强度买入 1 次了!不买了!!公司名称:{k_line_data[0]['sec_name']},")
                                                    L2_data_analysis.find_L2_big_order_of_code(symbol_code)
                                                elif len(data_cache.addition_position_symbols_set) >= 3:
                                                    logger_info(f"【不利】当日已经买了3只票!不买了!!公司名称:{k_line_data[0]['sec_name']},")
                                                    L2_data_analysis.find_L2_big_order_of_code(symbol_code)
                                                elif now_time < data_cache.OPENING_TIME or now_time > data_cache.NOON_MARKET_TIME:
                                                    logger_info(f"【不利】不在9:30-13:05时间内!不买!!")
                                                else:
@@ -583,8 +574,6 @@
                                                    # data_cache.have_strength_buy_times += 1
                                                    # # 将买入个股的当时概念添加到全局变量中存储
                                                    # data_cache.bought_plate.extend(strength_plate)
                                                    # 查看一下该股有无大单
                                                    L2_data_analysis.find_L2_big_order_of_code(symbol_code)
                                                    # 检测持仓代码集合中有无下单个股,才认为交易成功
                                                    if symbol_code not in data_cache.position_symbols_set:
                                                        logger_info(
@@ -669,11 +658,9 @@
                                                        f"【不利】自由市值小于6亿!不买!! 公司名称:{k_line_data[0]['sec_name']},最新价: {current_price}")
                                                elif data_cache.have_small_turn_large_buy_times >= 1:
                                                    logger_info(f"【不利】有小量换大涨幅买入已经 1 次了!不买了!!公司名称:{k_line_data[0]['sec_name']},")
                                                    L2_data_analysis.find_L2_big_order_of_code(symbol_code)
                                                elif len(data_cache.addition_position_symbols_set) >= 4:
                                                    logger_info(
                                                        f"【不利】当日已经买了4只票!不买了!!公司名称:{k_line_data[0]['sec_name']},")
                                                    L2_data_analysis.find_L2_big_order_of_code(symbol_code)
                                                elif (
                                                        data_cache.MORN_MARKET_TIME < now_time < data_cache.NOON_MARKET_TIME) is False or free_market_value < 100 or (
                                                        today_open_growth < 5 or today_growth < 5):
@@ -695,8 +682,6 @@
                                                    # data_cache.have_small_turn_large_buy_times += 1
                                                    # # 将买入个股的当时概念添加到全局变量中存储
                                                    # data_cache.bought_plate.append(k_line_data[0]['sec_name'])
                                                    # 查看一下该股有无大单
                                                    L2_data_analysis.find_L2_big_order_of_code(symbol_code)
                                                    # 检测持仓代码集合中有无下单个股,才认为交易成功
                                                    if symbol_code not in data_cache.position_symbols_set:
                                                        logger_info(
strategy/data_cache.py
@@ -75,7 +75,9 @@
        # self.filtered_stocks = [stock for stock in self.all_stocks if
        #                         stock.startswith('SHSE.60') or (stock.startswith('SZSE.00'))]
        self.filtered_stocks = [stock['symbol'] for stock in self.all_stocks if
                                isinstance(stock.get('symbol'), str) and (stock['symbol'].startswith('SHSE.60') or stock['symbol'].startswith('SZSE.00'))]
                                isinstance(stock.get('symbol'), str) and (
                                            stock['symbol'].startswith('SHSE.60') or stock['symbol'].startswith(
                                        'SZSE.00'))]
        # self.filtered_stocks =  self.filtered_stocks[:10]
        print(f"过滤后上证A股和深证A股数量filtered_stocks:{len(self.filtered_stocks)}")
        # 声明一下需要拉取K线的列表
@@ -116,9 +118,9 @@
'''
SERVER_RESTART_TIME = "09:00:00"  # 服务器重启时间
L1_DATA_START_TIME = "09:15:00"   # L1数据开始时间
L1_DATA_START_TIME = "09:15:00"  # L1数据开始时间
BEFORE_OPEN_BIDDING_TIME = "09:20:00"  # 【盘前】集合竞价开始前时间
OPEN_BIDDING_TIME = "09:25: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"  # 上午开盘时间
@@ -134,7 +136,6 @@
CHECKING_DATA_TIME = "17:00:00"  # 检查数据时间
UPDATE_DATA_TIME = "18:31:00"  # 更新数据时间
PROGRAM_SLEEP_TIME = "22:00:00"  # 程序休眠时间【不能在23点之后仍运行,获取到的数据可能有谬误】
# 初始化当日当时最高价
high_price = 0
@@ -161,7 +162,6 @@
real_time_market_strong = 0
# 初始化实时大盘行情市场情绪 涨跌统计 字典
real_time_market_sentiment_dirt = {}
# 为所有个股的带属性K线 字典初始化
all_stocks_all_K_line_property_dict = {}
@@ -260,8 +260,6 @@
# 大盘指数情绪预期分数
index_trend_expectation_score = 0
# 可以板上盯卖的代码
LIMIT_UP_SELL_CODES = set()
# L2炸板数据
@@ -275,4 +273,5 @@
logging.info(f"全局初始化数据  完成《《《 - {os.getpid()}")
# 大单成交数据: {"代码":[大单数据1,大单数据2,...]}
big_order_deal_dict = {}