| | |
| | | from l2.l2_transaction_data_manager import HuaXinBuyOrderManager, HuaXinSellOrderStatisticManager, BigOrderDealManager |
| | | from l2.place_order_single_data_manager import L2TradeSingleDataProcessor |
| | | 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 log_module.log import hx_logger_l2_debug, logger_l2_trade_buy_queue, logger_debug, hx_logger_l2_upload, \ |
| | | logger_trade, logger_l2_trade |
| | | from trade import current_price_process_manager, trade_constant |
| | | import concurrent.futures |
| | | |
| | |
| | | limit_up_price = gpcode_manager.get_limit_up_price_as_num(code) |
| | | # =====格式化数据===== |
| | | # 整形数据,格式:[(数据本身, 是否主动买, 是否涨停, 总成交额, 不含ms时间,含ms时间)] |
| | | use_time_list = [] |
| | | __start_time = int(time.time()*1000) |
| | | fdatas = [ |
| | | [d, d[6] > d[7], limit_up_price == d[1], d[1] * d[2], '', ''] |
| | | for d in o_datas] |
| | |
| | | d[5] = temp_time_dict.get(d[0][3]) |
| | | d[4] = d[5][:8] |
| | | temp_time_dict.clear() |
| | | _start_time = int(time.time() * 1000) |
| | | use_time_list.append((_start_time - __start_time , "数据整形")) |
| | | |
| | | try: |
| | | |
| | |
| | | __process_placed_order() |
| | | else: |
| | | filter_datas = L2TradeSingleDataProcessor.filter_last_limit_up_sell_data(code, fdatas) |
| | | _start_time = int(time.time() * 1000) |
| | | use_time_list.append((_start_time - __start_time, "处理涨停卖")) |
| | | # 回调数据 |
| | | if filter_datas: |
| | | l2_log.info(code, logger_l2_trade, f"最后一笔涨停卖被吃:{filter_datas[0]}") |
| | | data_callback.l2_trade_single_callback.OnLastLimitUpSellDeal(code, filter_datas[0][0]) |
| | | |
| | | _start_time = int(time.time() * 1000) |
| | | use_time_list.append((_start_time - __start_time, "处理买入信号")) |
| | | |
| | | # 如果是被动买就更新成交进度 |
| | | if not fdatas[-1][1]: |
| | |
| | | cls.__statistic_thread_pool.submit(cls.statistic_big_order_infos, code, fdatas, order_begin_pos) |
| | | else: |
| | | cls.statistic_big_order_infos(code, fdatas, order_begin_pos) |
| | | |
| | | _start_time = int(time.time() * 1000) |
| | | use_time_list.append((_start_time - __start_time, "统计大单")) |
| | | except Exception as e: |
| | | hx_logger_l2_debug.exception(e) |
| | | hx_logger_l2_debug.exception(e) |
| | | finally: |
| | | _start_time = int(time.time() * 1000) |
| | | if _start_time - __start_time > 5: |
| | | l2_log.info(code, hx_logger_l2_upload, |
| | | f"{code}处理成交用时:{_start_time - __start_time} 数据数量:{len(fdatas)} 详情:{use_time_list}") |
| | |
| | | from log_module import async_log_util, log_export |
| | | from log_module.log import hx_logger_contact_debug, hx_logger_trade_callback, \ |
| | | hx_logger_l2_orderdetail, hx_logger_l2_market_data, logger_l2_g_cancel, logger_debug, \ |
| | | logger_system, logger_trade, logger_l2_radical_buy |
| | | logger_system, logger_trade, logger_l2_radical_buy, logger_l2_trade |
| | | from third_data import block_info, kpl_data_manager, history_k_data_manager, huaxin_l1_data_manager, kpl_api, kpl_util |
| | | from third_data.code_plate_key_manager import KPLCodeJXBlockManager, RealTimeKplMarketData, \ |
| | | KPLPlateForbiddenManager |
| | |
| | | # 清除大单委托数据 |
| | | EveryLimitupBigDelegateOrderManager.clear(code, '') |
| | | |
| | | l2_log.info(code, logger_l2_trade, f"计算完板块与大单,准备下单:{data}") |
| | | RadicalBuyDealCodesManager.buy_by_l2_delegate_expire_time_dict[code] = ( |
| | | time.time() + 1, latest_buy_no, buy_blocks, |
| | | latest_deal_time, buy_blocks_with_money, False) |