| | |
| | | import constant |
| | | import l2_data_util |
| | | from code_attribute.code_volumn_manager import CodeVolumeManager |
| | | from l2 import l2_data_util as l2_data_util_new, l2_log |
| | | from l2 import l2_data_util as l2_data_util_new, l2_log, l2_data_manager |
| | | from code_attribute import code_nature_analyse, code_volumn_manager, gpcode_manager |
| | | from code_attribute.code_l1_data_manager import L1DataManager |
| | | from code_attribute.gpcode_manager import WantBuyCodesManager |
| | |
| | | @param count: |
| | | @return: |
| | | """ |
| | | cls.__process_add_white(code) |
| | | if gpcode_manager.MustBuyCodesManager().is_in_cache(code): |
| | | return |
| | | total_deal_big_order_result = get_total_deal_big_order_info(code, |
| | |
| | | @classmethod |
| | | def place_order_success(cls, code): |
| | | # 如果是加想,且成交大单足够就加红 |
| | | total_deal_big_order_result = get_total_deal_big_order_info(code, |
| | | gpcode_manager.get_limit_up_price_as_num(code)) |
| | | if WantBuyCodesManager().is_in_cache(code): |
| | | big_order_deal_enough_result = is_big_order_deal_enough(code, |
| | | code_volumn_manager.CodeVolumeManager().get_volume_rate_refer_in_5days( |
| | | code), |
| | | 0) |
| | | if big_order_deal_enough_result[6] <= 0: |
| | | if total_deal_big_order_result[0] <= 0: |
| | | # 累计大单足够需要加红 |
| | | gpcode_manager.MustBuyCodesManager().add_code(code) |
| | | trade_record_log_util.add_must_buy(code, "累计成交大单足够") |
| | | cls.__process_add_white(code) |
| | | |
| | | @classmethod |
| | | def __process_add_white(cls, code): |
| | | """ |
| | | 处理加白 |
| | | @param code: |
| | | @return: |
| | | """ |
| | | if gpcode_manager.WhiteListCodeManager().is_in_cache(code): |
| | | return |
| | | try: |
| | | total_deal_big_order_result = get_total_deal_big_order_info(code, |
| | | gpcode_manager.get_limit_up_price_as_num(code)) |
| | | if total_deal_big_order_result[0] <= 0 and total_deal_big_order_result[2] >= 1e8: |
| | | # 1个亿以上的且本批次成交的大单金额大于2倍大单金额就加白 |
| | | order_begin_pos = TradePointManager().get_buy_compute_start_data_cache(code) |
| | | is_placed_order = l2_data_manager.TradePointManager.is_placed_order(order_begin_pos) |
| | | if not is_placed_order: |
| | | # 没有下过单 |
| | | return |
| | | if order_begin_pos and order_begin_pos.min_order_no is not None: |
| | | # 在 min_order_no 之后成交的大单金额 |
| | | total_buy_data_list = BigOrderDealManager().get_total_buy_data_list(code) |
| | | min_order_no = order_begin_pos.min_order_no |
| | | if min_order_no is None: |
| | | async_log_util.warning(logger_debug, "处理成交大单足够加白: 最小订单号为空") |
| | | return |
| | | bigger_money = l2_data_util.get_big_money_val(gpcode_manager.get_limit_up_price_as_num(code), |
| | | tool.is_ge_code(code)) |
| | | deal_money = sum( |
| | | [x[2] for x in total_buy_data_list if x[0] >= min_order_no and x[2] >= bigger_money]) |
| | | # 获取均大单 |
| | | THRESHOLD_MONEY, is_temp_threshold_money = BeforeSubDealBigOrderManager().get_big_order_threshold_info( |
| | | code) |
| | | if deal_money >= 2 * THRESHOLD_MONEY: |
| | | gpcode_manager.WhiteListCodeManager().add_code(code) |
| | | trade_record_log_util.add_common_msg(code, "加白", f"{code}大单成交足够加白, 本批次成交金额-{deal_money}/{THRESHOLD_MONEY * 2} 累计大单金额:{total_deal_big_order_result[1]}/{total_deal_big_order_result[2]}") |
| | | except Exception as e: |
| | | logger_debug.exception(e) |
| | | async_log_util.info(logger_debug, f"处理成交大单足够加白的问题:{str(e)}") |
| | | |
| | | @classmethod |
| | | def market_info_change(cls, code): |
| | |
| | | |
| | | @classmethod |
| | | def get_big_buy_deal_order_money_info(cls, code): |
| | | """ |
| | | 获取成交大单的信息 |
| | | @param code: |
| | | @return: (总共大单成交金额, 最近成交大单的最后成交时间) |
| | | """ |
| | | if cls.__deal_big_order_infos_dict.get(code): |
| | | return sum([x[1] for x in cls.__deal_big_order_infos_dict[code]]), l2_huaxin_util.convert_time( |
| | | cls.__deal_big_order_infos_dict[code][-1][2]) |
| | | return None |
| | | |
| | | @classmethod |
| | | def list_big_buy_deal_orders(cls, code): |
| | | """ |
| | | |
| | | @param code: |
| | | @return:[(订单号,金额, 最后成交时间)] |
| | | """ |
| | | return cls.__deal_big_order_infos_dict.get(code, []) |
| | | |
| | | |
| | | class EveryLimitupBigDelegateOrderManager: |
| | | """ |