l2/l2_data_manager_new.py | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
test/test.py | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
third_data/kpl_limit_up_data_manager.py | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
l2/l2_data_manager_new.py
@@ -908,7 +908,7 @@ # 判断是否为板上放量: # 1.当前成交价为涨停价 # 2.总卖额为0 if abs(float(limit_up_price) - float(trade_price)) < 0.001: if abs(limit_up_price - float(trade_price)) < 0.001: # 获取最近的非涨停价成交时间 not_limit_up_info = current_price_process_manager.get_trade_not_limit_up_info(code) if not not_limit_up_info or tool.trade_time_sub(total_data[-1]['val']['time'], @@ -919,8 +919,18 @@ if deal_list: total_deal_volume = sum([x[1] for x in deal_list]) total_deal_money = int(total_deal_volume * float(limit_up_price)) if total_deal_money < 200000: return False, True, f"板上放量成交金额不足,近2s总成交金额:{total_deal_money}小于20w" # 获取买1的封单额 buy1_money = code_price_manager.Buy1PriceManager().get_latest_buy1_money(code) buy1_price = code_price_manager.Buy1PriceManager().get_buy1_price(code) if buy1_price and abs(limit_up_price - buy1_price) > 0.0001: # 买1未涨停 buy1_money = 0 if not buy1_money: buy1_money = 1 deal_rate = round(total_deal_money / buy1_money, 2) if deal_rate < 0.05: return False, True, f"板上放量成交金额不足,近2s总成交比例({deal_rate}):{total_deal_money}/{buy1_money}小于0.05" # 判断成交进度是否距离我们的位置很近 trade_index, is_default = cls.__TradeBuyQueue.get_traded_index(code) if False and not is_default and trade_index: @@ -2249,6 +2259,11 @@ # 9:31之前下单,安全笔数最小为5笔 if int(tool.get_now_time_str().replace(":", "")) < int("093100"): safe_count = max(safe_count, 5) # 深证的票,第一次下单必须要有3笔安全笔数 if tool.is_sz_code(code): place_order_count = trade_data_manager.PlaceOrderCountManager().get_place_order_count(code) if place_order_count == 0: safe_count = max(safe_count, 3) if buy_count < safe_count: not_buy_msg = f"【{i}】安全笔数不足,{buy_count}/{safe_count}" test/test.py
@@ -20,6 +20,4 @@ if __name__ == "__main__": __days = HistoryKDatasUtils.get_latest_trading_date_cache(6) __days.insert(0, tool.get_now_date_str()) print(__days) pass third_data/kpl_limit_up_data_manager.py
@@ -35,6 +35,55 @@ return kpl_data_manager.KPLLimitUpDataRecordManager.total_datas class CodeLimitUpSequenceManager: """ 代码身位管理 """ # 首板身位 __first_block_sequence_dict = {} def set_current_limit_up_datas(self, current_limit_up_datas): """ 设置目前的涨停代码 @param current_limit_up_datas: @return: """ records = get_today_history_limit_up_datas_cache() # 按代码排序 # {"代码":(代码,涨停原因, 涨停时间, 几版)} current_code_block_dict = {x[0]: (x[0], x[2], x[5], x[4]) for x in current_limit_up_datas} record_code_block_dict = {x[3]: (x[3], x[2], x[5], x[12]) for x in records} # 根据涨停原因统计 # {"板块":{代码}} block_codes = {} limit_up_codes = set() for code in current_code_block_dict: b = current_code_block_dict[code][1] if b not in block_codes: block_codes[b] = set() block_codes[b].add(code) limit_up_codes.add(code) for code in record_code_block_dict: b = record_code_block_dict[code][1] if b not in block_codes: block_codes[b] = set() block_codes[b].add(code) for code in limit_up_codes: # 计算身位 b = current_code_block_dict[code][1] codes = block_codes[b] total_count = len(codes) # 统计真正涨停数 limit_up_count = 0 for c in codes: if c in limit_up_codes: limit_up_count += 1 # TODO 获取首板代码的排位 class LatestLimitUpBlockManager: """ 最近涨停的板块管理 @@ -184,7 +233,7 @@ max_rate_info = None for code in block_codes_dict[d[0]]: if max_rate_info is None: max_rate_info = (code, self.__k_max_rate.get(code), self.__code_name_dict.get(code)) max_rate_info = (code, self.__k_max_rate.get(code), self.__code_name_dict.get(code)) if max_rate_info[1] < self.__k_max_rate.get(code): max_rate_info = (code, self.__k_max_rate.get(code), self.__code_name_dict.get(code)) fdata.append(max_rate_info) @@ -234,5 +283,3 @@ rate = int((volumes_data[0]["close"] - min_price) * 100 / min_price) cls.__k_max_rate[code] = rate return cls.__k_datas.get(code)