| | |
| | | from code_attribute.gpcode_manager import BlackListCodeManager |
| | | from l2.l2_transaction_data_manager import HuaXinBuyOrderManager |
| | | from log_module.log import logger_system, logger_debug, logger_kpl_limit_up, logger_request_api |
| | | from third_data.kpl_data_constant import LimitUpDataConstant |
| | | from third_data.kpl_data_constant import LimitUpDataConstant, LimitUpCodesBlockRecordManager |
| | | from third_data.kpl_limit_up_data_manager import LatestLimitUpBlockManager, CodeLimitUpSequenceManager |
| | | from third_data.third_blocks_manager import BlockMapManager |
| | | from trade.buy_strategy import OpenLimitUpGoodBlocksBuyStrategy |
| | | from utils import global_util, tool, data_export_util |
| | | from code_attribute import gpcode_manager |
| | |
| | | codes_info = [] |
| | | for d in record_limit_up_datas: |
| | | _code = d[3] |
| | | blocks = LimitUpDataConstant.get_blocks_with_history(_code) |
| | | # blocks = LimitUpDataConstant.get_blocks_with_history(_code) |
| | | blocks = LimitUpCodesBlockRecordManager().get_radical_buy_blocks(_code) |
| | | if not blocks: |
| | | blocks = set() |
| | | blocks = BlockMapManager().filter_blocks(blocks) |
| | | |
| | | if blocks is not None and plate not in blocks: |
| | | continue |
| | | if not tool.is_can_buy_code(d[3]): |
| | |
| | | radical_buy_data_manager.BlockPlaceOrderRecordManager().add_record(code, buy_blocks) |
| | | else: |
| | | RadicalBuyDealCodesManager.buy_by_l2_delegate_expire_time_dict[code] = ( |
| | | time.time() + 2, transaction_datas[-1][6], buy_blocks) |
| | | time.time() + 30, transaction_datas[-1][6], buy_blocks) |
| | | else: |
| | | async_log_util.info(logger_l2_radical_buy, f"不能下单:{code}-{result_by_volume}") |
| | | else: |
| | |
| | | need_delete = True |
| | | # 判断是不是扫了没有扫进入 |
| | | if not need_delete: |
| | | if code_ in BlockPlaceOrderRecordManager().get_codes() and code_ not in deal_codes: |
| | | if code_ in BlockPlaceOrderRecordManager().get_codes() and code_ not in deal_codes: |
| | | need_delete = True |
| | | |
| | | if need_delete: |
| | |
| | | open_limit_up_code_dict = kpl_data_constant.open_limit_up_code_dict_for_radical_buy |
| | | if open_limit_up_code_dict: |
| | | exclude_codes |= set(open_limit_up_code_dict.keys()) |
| | | history_index, history_before_codes_info = cls.__get_history_index(code, block, yesterday_limit_up_codes, |
| | | exclude_codes) |
| | | origin_history_index, origin_history_before_codes_info = cls.__get_history_index(code, block, |
| | | yesterday_limit_up_codes, |
| | | exclude_codes) |
| | | |
| | | # 过滤不正的原因 |
| | | history_index, history_before_codes_info = cls.__filter_before_codes(block, history_index, |
| | | history_before_codes_info, |
| | | history_index, history_before_codes_info = cls.__filter_before_codes(block, origin_history_index, |
| | | origin_history_before_codes_info, |
| | | yesterday_limit_up_codes) |
| | | |
| | | # 获取本板块买入代码的最大数量 |
| | |
| | | if tool.trade_time_sub(tool.timestamp_format(all_history_before_codes_info[i][1], '%H:%M:%S'), |
| | | tool.timestamp_format(all_history_before_codes_info[i - 1][1], |
| | | '%H:%M:%S')) >= 15 * 60: |
| | | return False, f"被顺位代码({pre_code}) 与上个代码涨停时间>=15分钟 ({all_history_before_codes_info[i]}##{all_history_before_codes_info[i - 1]})" |
| | | return False, f"被顺位代码({pre_code}) 与上个代码涨停时间>=15分钟 ({all_history_before_codes_info[i]}##{all_history_before_codes_info[i - 1]})原始队列:{origin_history_before_codes_info}" |
| | | else: |
| | | return True, f"被顺位代码({pre_code}) 与上个代码涨停时间<15分钟 ({all_history_before_codes_info[i]}##{all_history_before_codes_info[i - 1]})" |
| | | return True, f"被顺位代码({pre_code}) 与上个代码涨停时间<15分钟 ({all_history_before_codes_info[i]}##{all_history_before_codes_info[i - 1]})原始队列:{origin_history_before_codes_info}" |
| | | return False, f"没找到顺位代码({pre_code})的前排代码" |
| | | else: |
| | | # 代码为目标代码 |
| | |
| | | else: |
| | | # 代码为目标代码 |
| | | pass |
| | | return True, f"满足买入需求: 前排代码-{current_before_codes_info}" |
| | | return True, f"满足买入需求: 前排代码-{current_before_codes_info} 原始队列:{origin_history_before_codes_info}" |
| | | |
| | | @classmethod |
| | | def __is_re_limit_up(cls, code, block): |