| | |
| | | from l2 import l2_data_util, l2_data_manager, transaction_progress |
| | | from l2.cancel_buy_strategy import FCancelBigNumComputer, LCancelBigNumComputer, LCancelRateManager, \ |
| | | GCancelBigNumComputer, SCancelBigNumComputer, HourCancelBigNumComputer, NewGCancelBigNumComputer |
| | | from l2.huaxin import l2_huaxin_util |
| | | from l2.l2_data_manager import OrderBeginPosInfo |
| | | from l2.l2_data_manager_new import L2TradeDataProcessor |
| | | from l2.l2_data_util import L2DataUtil |
| | |
| | | from trade import current_price_process_manager |
| | | from trade.deal_big_money_manager import DealOrderNoManager |
| | | import concurrent.futures |
| | | |
| | | from utils import tool |
| | | |
| | | |
| | | class HuaXinTransactionDatasProcessor: |
| | |
| | | return buy_progress_index |
| | | |
| | | @classmethod |
| | | def statistic_big_order_infos(cls, code, datas, order_begin_pos:OrderBeginPosInfo): |
| | | def statistic_big_order_infos(cls, code, datas, order_begin_pos: OrderBeginPosInfo): |
| | | """ |
| | | 统计大单成交 |
| | | @param code: |
| | |
| | | for buy_data in bigger_buy_datas: |
| | | order_no = f"{buy_data[0]}" |
| | | if order_no in buyno_map: |
| | | LCancelBigNumComputer().add_deal_index(code, buyno_map[order_no]["index"], order_begin_pos.buy_single_index) |
| | | LCancelBigNumComputer().add_deal_index(code, buyno_map[order_no]["index"], |
| | | order_begin_pos.buy_single_index) |
| | | except Exception as e: |
| | | logger_debug.exception(e) |
| | | |
| | |
| | | _start_time = time.time() |
| | | use_time_list.append(("处理卖单成交数据", _start_time - __start_time)) |
| | | if is_placed_order: |
| | | |
| | | need_cancel, cancel_msg = SCancelBigNumComputer().set_big_sell_order_info_for_cancel(code, |
| | | big_sell_order_info, |
| | | order_begin_pos) |
| | |
| | | if not need_cancel: |
| | | need_cancel, cancel_msg = FCancelBigNumComputer().need_cancel_for_p(code, big_sell_order_info, |
| | | order_begin_pos) |
| | | # 判断时间是否与本地时间相差5s以上 |
| | | if tool.trade_time_sub(tool.get_now_time_str(), l2_huaxin_util.convert_time(datas[-1][3])) >= 5: |
| | | need_cancel, cancel_msg = True, f"成交时间与本地时间相差5S以上,{l2_huaxin_util.convert_time(datas[-1][3])}" |
| | | |
| | | if need_cancel: |
| | | L2TradeDataProcessor.cancel_buy(code, cancel_msg) |
| | | |
| | |
| | | logger_debug.exception(e) |
| | | |
| | | _start_time = time.time() |
| | | # 计算已经成交的大单 |
| | | # big_money_count = 0 |
| | | # for d in datas: |
| | | # data = buyno_map.get(f"{d[6]}") |
| | | # buy_num = None |
| | | # if data: |
| | | # buy_num = data["val"]["num"] * 100 |
| | | # # 统计成交单 |
| | | # deal_info = HuaXinBuyOrderManager.statistic_deal_desc(code, d, buy_num) |
| | | # if deal_info and deal_info[1]: |
| | | # data = buyno_map.get(f"{deal_info[0]}") |
| | | # print("已经成交索引:", data["index"]) |
| | | # val = data["val"] |
| | | # if l2_data_util.is_big_money(val) and L2DataUtil.is_limit_up_price_buy(val): |
| | | # big_money_count += 1 |
| | | # DealOrderNoManager().add_orderno(code, f"{deal_info[0]}") |
| | | # # L后是否有成交,如果有成交就需要除去当前笔数,然后重新囊括一笔 |
| | | # # 暂时不需要这种复杂的机制 |
| | | # # LCancelBigNumComputer().add_deal_index(code, data["index"], order_begin_pos.buy_single_index) |
| | | cls.__statistic_thread_pool.submit(cls.statistic_big_order_infos, code, datas, order_begin_pos) |
| | | |
| | | use_time_list.append(("统计买单数据", time.time() - _start_time)) |
| | |
| | | finally: |
| | | use_time = int((time.time() - __start_time) * 1000) |
| | | if use_time > 5: |
| | | async_log_util.info(hx_logger_l2_upload, f"{code}处理成交用时:{use_time} 详情:{use_time_list}") |
| | | async_log_util.info(hx_logger_l2_upload, |
| | | f"{code}处理成交用时:{use_time} 数据数量:{len(datas)} 详情:{use_time_list}") |