| | |
| | | now_limit_up_codes = set([d[0] for d in now_limit_up_codes_info]) |
| | | # 获取历史涨停 |
| | | record_limit_up_datas = KPLLimitUpDataRecordManager.total_datas |
| | | if not record_limit_up_datas or len(record_limit_up_datas) == len(now_limit_up_codes_info): |
| | | if not record_limit_up_datas: |
| | | KPLLimitUpDataRecordManager.load_total_datas() |
| | | record_limit_up_datas = KPLLimitUpDataRecordManager.total_datas |
| | | |
| | |
| | | if gpcode_manager.BuyOpenLimitUpCodeManager().is_in_cache(d[0]): |
| | | # 09:19:50 到 09:20:00判断是否要撤单 |
| | | if int("091950") <= int(d[9].replace(":", "")) < int("092000"): |
| | | async_log_util.info(logger_debug, f"排1撤单:{d}") |
| | | async_log_util.info(logger_debug, f"排1撤单:{d},封单:{d[8] * d[5]}") |
| | | if d[8] * d[5] < 1e8: |
| | | code = d[0] |
| | | current_delegates = DelegateRecordManager().list_current_delegates(code) |
| | |
| | | if not constant.TRADE_ENABLE: |
| | | return |
| | | try: |
| | | result = huaxin_trade_api.order(1, code, 100, limit_up_price, blocking=True, |
| | | volume = tool.get_buy_volume_by_money(limit_up_price, constant.AVAILABLE_BUY_MONEYS[0]) |
| | | result = huaxin_trade_api.order(1, code, volume, limit_up_price, blocking=True, |
| | | shadow_price=shadow_price) |
| | | async_log_util.info(logger_trade, f"{code}下单结束:{result}") |
| | | except Exception as e: |
| | |
| | | history_index, history_before_codes_info = cls.__get_history_index(code, block, |
| | | yesterday_limit_up_codes, |
| | | exclude_codes=exclude_codes) |
| | | # 过滤不正的原因 |
| | | history_index, history_before_codes_info = cls.__filter_before_codes(block, history_index, history_before_codes_info, yesterday_limit_up_codes) |
| | | |
| | | # 买首板老大/老二 |
| | | # 首板老大不能买时可买老二 |
| | | if history_index > 1: |
| | |
| | | return False, f"开1数量:{count},前排代码可买:{history_before_codes_info[0]}" |
| | | return True, f"开1数量:{count},前排代码不可买:{history_before_codes_info[0]},历史前排-{history_before_codes_info},开1代码-{open_limit_up_block_codes}" |
| | | return True, f"开1数量:{count},历史-{history_index + 1} 实时-{current_index + 1}, 前排代码-{current_before_codes_info}, 开1代码-{open_limit_up_block_codes}" |
| | | |
| | | @classmethod |
| | | def __filter_before_codes(cls, block, index, before_codes_info, yesterday_codes): |
| | | """ |
| | | 过滤前排涨停原因不正的代码 |
| | | @param code: |
| | | @param block:板块 |
| | | @param index: 目标代码位置 |
| | | @param before_codes_info: [(代码, 涨停时间戳)] |
| | | @return: 过滤之后的 (index, before_codes_info) |
| | | """ |
| | | try: |
| | | if index == 0 or not before_codes_info: |
| | | return index, before_codes_info |
| | | temp_index = index |
| | | temp_before_codes_info = [] |
| | | for b in before_codes_info: |
| | | # 当作目标票获取扫入板块 |
| | | blocks = LimitUpCodesBlockRecordManager().get_radical_buy_blocks(b[0]) |
| | | blocks = BlockMapManager().filter_blocks(blocks) |
| | | if block not in blocks and b[0] not in yesterday_codes: |
| | | # 首板涨停原因不正 |
| | | temp_index -= 1 |
| | | else: |
| | | temp_before_codes_info.append(b) |
| | | |
| | | return temp_index, temp_before_codes_info |
| | | except Exception as e: |
| | | async_log_util.error(logger_debug, f"扫入板块过滤出错:{str(e)}") |
| | | return index, before_codes_info |
| | | |
| | | @classmethod |
| | | def __is_radical_buy_with_block_up(cls, code, block, yesterday_limit_up_codes): |
| | |
| | | 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) |
| | | |
| | | # 过滤不正的原因 |
| | | history_index, history_before_codes_info = cls.__filter_before_codes(block, history_index, |
| | | history_before_codes_info, |
| | | yesterday_limit_up_codes) |
| | | |
| | | # 获取本板块买入代码的最大数量 |
| | | max_count = RadicalBuyBlockCodeCountManager().get_block_code_count(block) |
| | | if history_index > max_count: |
| | |
| | | log.close_print() |
| | | while True: |
| | | try: |
| | | if (tool.is_trade_time() and int(tool.get_now_time_str().replace(':', '')) > int("092530")) or True: |
| | | if (tool.is_trade_time() and int(tool.get_now_time_str().replace(':', '')) > int("092530")): |
| | | results = kpl_api.getLimitUpInfoNew() |
| | | result = json.loads(results) |
| | | start_time = time.time() |