data_server.py | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
strategy/L2_data_analysis.py | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
strategy/buying_strategy.py | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
strategy/data_cache.py | ●●●●● 补丁 | 查看 | 原始文档 | 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 = {}