| | |
| | | import logging |
| | | import time |
| | | |
| | | import constant |
| | | from code_attribute import gpcode_manager |
| | | from l2 import l2_data_util, l2_data_manager, transaction_progress |
| | | from l2.cancel_buy_strategy import FCancelBigNumComputer, LCancelBigNumComputer, LCancelRateManager, \ |
| | | GCancelBigNumComputer, SCancelBigNumComputer, HourCancelBigNumComputer |
| | | from l2.l2_data_manager_new import L2TradeDataProcessor |
| | | from l2.l2_data_util import L2DataUtil |
| | | from l2.l2_transaction_data_manager import HuaXinBuyOrderManager, HuaXinSellOrderStatisticManager |
| | | from l2.l2_transaction_data_manager import HuaXinBuyOrderManager, HuaXinSellOrderStatisticManager, BigOrderDealManager |
| | | from log_module import async_log_util |
| | | from log_module.log import hx_logger_l2_debug, logger_l2_trade_buy_queue, logger_debug, hx_logger_l2_upload |
| | | from trade import current_price_process_manager |
| | | from trade.deal_big_money_manager import DealOrderNoManager |
| | | import concurrent.futures |
| | | |
| | | |
| | | class HuaXinTransactionDatasProcessor: |
| | | __statistic_thread_pool = concurrent.futures.ThreadPoolExecutor(max_workers=constant.HUAXIN_L2_MAX_CODES_COUNT + 2) |
| | | __TradeBuyQueue = transaction_progress.TradeBuyQueue() |
| | | |
| | | # 计算成交进度 |
| | |
| | | buy_progress_index = buyno_map[buy_no]["index"] |
| | | break |
| | | return buy_progress_index |
| | | |
| | | @classmethod |
| | | def statistic_big_order_infos(cls, code, datas): |
| | | """ |
| | | 统计大单成交 |
| | | @param code: |
| | | @param datas: |
| | | @return: |
| | | """ |
| | | buy_datas = HuaXinBuyOrderManager.statistic_big_buy_data(code, datas) |
| | | if buy_datas: |
| | | BigOrderDealManager().add_buy_datas(code, buy_datas) |
| | | |
| | | sell_datas = HuaXinSellOrderStatisticManager.statistic_big_sell_data(code, datas) |
| | | if sell_datas: |
| | | BigOrderDealManager().add_sell_datas(code, sell_datas) |
| | | |
| | | if buy_datas or sell_datas: |
| | | buy_money = BigOrderDealManager().get_total_buy_money(code) |
| | | sell_money = BigOrderDealManager().get_total_sell_money(code) |
| | | LCancelRateManager.set_big_num_deal_info(code, buy_money, sell_money) |
| | | |
| | | @classmethod |
| | | def process_huaxin_transaction_datas(cls, code, datas): |
| | |
| | | |
| | | _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) |
| | | # 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) |
| | | |
| | | use_time_list.append(("统计买单数据", time.time() - _start_time)) |
| | | _start_time = time.time() |
| | | if big_money_count > 0: |
| | | LCancelRateManager.compute_big_num_deal_rate(code) |
| | | # if big_money_count > 0: |
| | | # LCancelRateManager.compute_big_num_deal_rate(code) |
| | | |
| | | buy_progress_index = cls.__compute_latest_trade_progress(code, buyno_map, datas) |
| | | |