| | |
| | | # 下单参数信息 |
| | | # 选股宝 |
| | | # 市场热度 |
| | | import logging |
| | | import sys |
| | | import time |
| | | import code_attribute |
| | |
| | | data = record[2] |
| | | if type == trade_record_log_util.TYPE_PLACE_ORDER: |
| | | records_new_data.append((time_, "开盘啦推荐原因", |
| | | f"{'、'.join(data['kpl_blocks'])}", |
| | | f"{'、'.join([k[1] for k in data['kpl_blocks']])}", |
| | | None)) |
| | | extra_datas = [] |
| | | if data['big_num_indexes']: |
| | |
| | | f"【{format_l2_data(total_datas[data['buy_single_index']])}】-【{format_l2_data(total_datas[data['buy_exec_index']])}】", |
| | | data)) |
| | | elif type == trade_record_log_util.TYPE_REAL_PLACE_ORDER_POSITION: |
| | | records_new_data.append((time_, "实际挂单位", f"【{format_l2_data(data['index'])}】", None)) |
| | | for i in range(data['index'], 0, -1): |
| | | if total_datas[i]['val']['num'] * float(total_datas[i]['val']['price']) >= 3000: |
| | | records_new_data.append( |
| | | (time_, "实际挂单位", f"【{format_l2_data(total_datas[i])}】", None)) |
| | | break |
| | | |
| | | elif type == trade_record_log_util.TYPE_CANCEL_WATCH_INDEXES: |
| | | indexes = data['watch_indexes'] |
| | | if indexes: |
| | |
| | | records_new_data.append((time_, "撤单", f"原因:{data['msg']}", None)) |
| | | if records_new_data: |
| | | for d in records_new_data: |
| | | records_new.append(f"【{d[0]}】"+"{:<10}".format(d[1])+d[2]) |
| | | except: |
| | | pass |
| | | records_new.append(f"【{d[0]}】" + "{:<10}".format(f'【{d[1]}】') + d[2]) |
| | | except Exception as e: |
| | | logging.exception(e) |
| | | |
| | | return break_time, records_new, records_new_data |
| | | |
| | | |
| | | if __name__ == '__main__': |
| | | ts = ("0", "1", "2", "3") |
| | | print(','.join(ts[:-1])) |
| | | code = '603131' |
| | | l2_data_util.load_l2_data(code) |
| | | __load_trade_record(code, l2_data_util.local_today_datas.get(code)) |
| | |
| | | @classmethod |
| | | def __is_block_can_buy(cls, code, block, current_limit_up_datas, code_limit_up_reason_dict, |
| | | yesterday_current_limit_up_codes, limit_up_record_datas): |
| | | log.logger_kpl_debug.info(f"判断板块是否可买:{block}") |
| | | # log.logger_kpl_debug.info(f"判断板块是否可买:{block}") |
| | | # is_top_8_record, top_8_record = kpl_block_util.is_record_top_block(code, block, limit_up_record_datas, |
| | | # yesterday_current_limit_up_codes, 50) |
| | | # is_top_4_current, top_4_current = kpl_block_util.is_current_top_block(code, block, current_limit_up_datas, |
| | |
| | | |
| | | # 获取目标代码板块 |
| | | keys, k1, k11, k2, k3, k4 = cls.__TargetCodePlateKeyManager.get_plate_keys(code) |
| | | log.logger_kpl_debug.info("{}关键词:今日-{},今日历史-{},历史-{},二级行业-{},代码板块-{}", code, k1, k11, k2, k3, k4) |
| | | # log.logger_kpl_debug.info("{}关键词:今日-{},今日历史-{},历史-{},二级行业-{},代码板块-{}", code, k1, k11, k2, k3, k4) |
| | | keys = set() |
| | | if k1: |
| | | for k in k1: |
| | |
| | | before_blocks_dict) |
| | | if not blocks: |
| | | return False, block_msg |
| | | log.logger_kpl_debug.info(f"{code}:获取委托/买入代码") |
| | | codes_delegate = set(cls.__CodesTradeStateManager.get_codes_by_trade_states_cache( |
| | | {trade_manager.TRADE_STATE_BUY_DELEGATED, trade_manager.TRADE_STATE_BUY_PLACE_ORDER})) |
| | | codes_success = set(cls.__CodesTradeStateManager.get_codes_by_trade_states_cache( |
| | |
| | | trade_codes_blocks_dict = {} |
| | | # 已经成交的板块 |
| | | trade_success_blocks_count = {} |
| | | log.logger_kpl_debug.info(f"{code}:获取代码板块") |
| | | for c in codes: |
| | | keys_, k1_, k11_, k2_, k3_, k4_ = cls.__TargetCodePlateKeyManager.get_plate_keys(c) |
| | | # 实时涨停原因 |
| | | trade_codes_blocks_dict[c] = k1_ | k4_ |
| | | # 统计板块中的代码 |
| | | log.logger_kpl_debug.info(f"{code}:统计板块中的代码") |
| | | trade_block_codes_dict = {} |
| | | for c in trade_codes_blocks_dict: |
| | | for b in trade_codes_blocks_dict[c]: |
| | |
| | | trade_block_codes_dict[b].add(c) |
| | | |
| | | # ---------------------------------加载已经下单/成交的代码信息------------end------------- |
| | | log.logger_kpl_debug.info(f"{code}:开始计算是否可以买") |
| | | msg_list = [] |
| | | for key in blocks: |
| | | # 板块中已经有成交的就不下单了 |
| | |
| | | __add_log(TYPE_FORBIDDEN_BUY, code, {"msg": msg}) |
| | | |
| | | |
| | | __latest_cant_place_order_log_msg_dict = {} |
| | | |
| | | |
| | | # 不能买 |
| | | def add_cant_place_order_log(code, msg): |
| | | if __latest_cant_place_order_log_msg_dict.get(code) == msg: |
| | | return |
| | | __latest_cant_place_order_log_msg_dict[code] = msg |
| | | __add_log(TYPE_CANT_PLACE_ORDER, code, {"msg": msg}) |
| | | |
| | | |