servers/data_server.py | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
third_data/kpl_data_constant.py | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
trade/buy_radical/new_block_processor.py | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
trade/buy_radical/radical_buy_data_manager.py | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
servers/data_server.py
@@ -20,6 +20,7 @@ from third_data.third_blocks_manager import BlockMapManager from trade.buy_radical import radical_buy_data_manager, new_block_processor from trade.buy_radical.block_special_codes_manager import BlockSpecialCodesManager from trade.buy_radical.new_block_processor import BeforeBlocksComputer from trade.buy_strategy import OpenLimitUpGoodBlocksBuyStrategy from trade.buy_radical.radical_buy_data_manager import RadicalBuyBlockManager, BeforeSubDealBigOrderManager from utils import global_util, tool, data_export_util @@ -1135,9 +1136,11 @@ if b not in block_codes: block_codes[b] = set() block_codes[b].add(x[3]) # 所有代码的涨停原因 reasons = set(block_codes.keys()) reasons -= constant.KPL_INVALID_BLOCKS reasons -= LimitUpCodesBlockRecordManager().get_total_before_blocks() # 原来的老题材 reasons -= BeforeBlocksComputer().get_old_blocks() if reasons: # 新板块 update_new_block_plates = [] third_data/kpl_data_constant.py
@@ -71,9 +71,6 @@ # 原始数据 __radical_buy_reasons_origin_data_dict = {} # 所有的涨停原因 __all_limit_up_reasons = set() # 今日的新概念 __new_blocks = set() @@ -104,8 +101,6 @@ for r in kpl_results: # 取60个交易日之内的题材 if r[1] in days: cls.__all_limit_up_reasons.add(kpl_util.filter_block(r[2])) code = r[0] if code not in limit_up_reasons_dict: limit_up_reasons_dict[code] = [] @@ -242,13 +237,6 @@ async_log_util.info(logger_debug, f"今日新增概念:{code} - {block}") self.__radical_buy_reasons_dict[code] = old_blocks return True def get_total_before_blocks(self): """ 获取所有之前的板块 @return: """ return self.__all_limit_up_reasons def get_new_blocks(self): """ trade/buy_radical/new_block_processor.py
@@ -1,11 +1,83 @@ """ 新题材处理器 """ import constant from code_attribute import code_nature_analyse from code_attribute.gpcode_manager import HumanRemoveForbiddenManager from third_data import kpl_util from third_data.kpl_data_constant import LimitUpCodesBlockRecordManager from trade import l2_trade_util, trade_record_log_util from trade.buy_radical.block_special_codes_manager import BlockSpecialCodesManager from utils import tool from utils.kpl_data_db_util import KPLLimitUpDataUtil @tool.singleton class BeforeBlocksComputer: """ 往日题材计算器 """ def __init__(self): self.__before_blocks = set() self.__load_data() def __load_data(self): # kpl_results: [( r.`_code`, r.`_day`, r.`_hot_block_name`, r.`_blocks`, r.`_open`)] kpl_results = KPLLimitUpDataUtil.get_latest_block_infos() days = set() for r in kpl_results: # 取60个交易日之内的题材 days.add(r[1]) days = list(days) days.sort(key=lambda x: int(x.replace("-", "")), reverse=True) days = days[:60] # {"日期":{ "题材":{代码} }} day_block_codes_dict = {} for r in kpl_results: if r[1] not in days: continue if r[4]: # 不算炸板 continue # 统计每一天的题材 day = r[1] block = kpl_util.filter_block(r[2]) if block in constant.KPL_INVALID_BLOCKS: continue if day not in day_block_codes_dict: day_block_codes_dict[day] = {} if block not in day_block_codes_dict[day]: day_block_codes_dict[day][block] = set() day_block_codes_dict[day][block].add(r[0]) # 每一天走的板块 day_block_dict = {} for day in day_block_codes_dict: for b in day_block_codes_dict[day]: if len(day_block_codes_dict[day][b]) >= 3: if day not in day_block_dict: day_block_dict[day] = set() day_block_dict[day].add(b) day_block_list = [(d, day_block_dict[d]) for d in day_block_dict] day_block_list.sort(key=lambda x: x[0]) # 过去59天出现的题材 old_blocks = set() for d in day_block_list: if d[0] == days[0]: continue old_blocks |= d[1] self.__before_blocks |= old_blocks # 昨天出现的题材 # if days[0] == day_block_list[-1][0]: # # 昨天出现的题材 # yesterday_blocks = day_block_list[-1][1] def is_new_block(self, block): return block not in self.__before_blocks def get_old_blocks(self): return self.__before_blocks def process_new_block(code, block): trade/buy_radical/radical_buy_data_manager.py
@@ -1729,6 +1729,10 @@ total_lack_money_info = get_total_deal_big_order_info(code, limit_up_price, is_for_buy=for_buy) total_lack_money, total_deal_money, total_threshold_money = total_lack_money_info[0], total_lack_money_info[1], \ total_lack_money_info[2] if gpcode_manager.GreenListCodeManager().is_in_cache(code): # 加绿之后不考虑总大单 total_lack_money = 0 # ===========判断单次大单成交============== current_big_order_deal_money = 0 current_big_order_deal_money_info = EveryLimitupBigDealOrderManager.get_big_buy_deal_order_money_info(code)