| | |
| | | from l2.huaxin import l2_huaxin_util, huaxin_delegate_postion_manager |
| | | from l2.l2_limitup_sell_data_manager import L2LimitUpSellDataManager |
| | | from l2.l2_sell_manager import L2MarketSellManager, L2LimitUpSellManager |
| | | from l2.l2_transaction_data_manager import HuaXinSellOrderStatisticManager, BigOrderDealManager |
| | | from l2.l2_transaction_data_manager import HuaXinSellOrderStatisticManager, BigOrderDealManager, HuaXinBuyOrderManager |
| | | from l2.place_order_single_data_manager import L2TradeSingleDataProcessor |
| | | from log_module import async_log_util, log_export |
| | | from third_data import kpl_data_manager, block_info |
| | |
| | | max_num_set=set(), |
| | | buy_volume_rate=buy_volume_rate, |
| | | mode=OrderBeginPosInfo.MODE_RADICAL, |
| | | mode_desc=f"总抛压小扫入", |
| | | mode_desc=f"总抛压小扫入:{radical_result[2]}", |
| | | sell_info=sell_info, |
| | | threshold_money=threshold_money) |
| | | order_begin_pos_info.at_limit_up = cls.__is_at_limit_up_buy(code) |
| | |
| | | if cls.__is_at_limit_up_buy(code, start_index): |
| | | return False, None, "板上放量" |
| | | total_datas = local_today_datas[code] |
| | | min_num = int(29900 / gpcode_manager.get_limit_up_price_as_num(code)) |
| | | limit_up_price = gpcode_manager.get_limit_up_price_as_num(code) |
| | | bigger_money = l2_data_util.get_big_money_val(limit_up_price, tool.is_ge_code(code)) |
| | | min_num = int(bigger_money / limit_up_price / 100) |
| | | # 如果有大单成交就不需要看大单 |
| | | deal_money_list = BigOrderDealManager().get_total_buy_money_list(code) |
| | | if deal_money_list: |
| | | for m in deal_money_list: |
| | | if m >= 2990000: |
| | | min_num = int(5000 / gpcode_manager.get_limit_up_price_as_num(code)) |
| | | break |
| | | total_deal_money = BigOrderDealManager().get_total_buy_money(code) |
| | | THRESHOLD_MONEY = 2990000 |
| | | if total_deal_money >= THRESHOLD_MONEY: |
| | | min_num = int(5000 / limit_up_price) |
| | | |
| | | single_index = None |
| | | for i in range(start_index, end_index + 1): |
| | |
| | | continue |
| | | if val["num"] < min_num: |
| | | continue |
| | | # 上证有可能是部分成交的大单 |
| | | if i == start_index and tool.is_sh_code(code): |
| | | dealing_active_order_info = HuaXinBuyOrderManager().get_dealing_active_order_info(code) |
| | | if dealing_active_order_info and dealing_active_order_info[0] == int(val["orderNo"]): |
| | | # 判断是否为大单 |
| | | order_money = dealing_active_order_info[2] + round(val["price"], 2) * val["num"] * 100 |
| | | if order_money >= bigger_money: |
| | | total_deal_money += order_money |
| | | if total_deal_money >= THRESHOLD_MONEY: |
| | | single_index = i |
| | | break |
| | | |
| | | if int(val["orderNo"]) <= radical_data[1]: |
| | | # 主动买单后的数据不算 |
| | | continue |
| | | single_index = i |
| | | break |
| | | |
| | | total_deal_money += round(val["price"], 2) * val["num"] * 100 |
| | | if total_deal_money >= THRESHOLD_MONEY: |
| | | single_index = i |
| | | break |
| | | if single_index is not None: |
| | | return True, single_index, "有大单" |
| | | return False, None, "无大单" |
| | |
| | | return False, None, "超过生效时间" |
| | | result = __can_order() |
| | | l2_log.debug(code, f"L2扫入判断:{result}") |
| | | if result[0]: |
| | | return True, result[1], f"扫入板块:{radical_data[2]}" |
| | | return result |
| | | |
| | | @classmethod |