# 虚拟买成功 import logging from cancel_strategy.s_l_h_cancel_strategy import HourCancelBigNumComputer from cancel_strategy.s_l_h_cancel_strategy import LCancelBigNumComputer from cancel_strategy.s_l_h_cancel_strategy import SCancelBigNumComputer from code_attribute.gpcode_manager import MustBuyCodesManager, GreenListCodeManager, WantBuyCodesManager, \ WhiteListCodeManager from l2 import l2_data_manager, place_order_single_data_manager from l2.cancel_buy_strategy import FCancelBigNumComputer, \ NewGCancelBigNumComputer, JCancelBigNumComputer, NBCancelBigNumComputer from l2.l2_data_manager import OrderBeginPosInfo from l2.l2_data_util import local_today_datas, L2DataUtil from l2.l2_sell_manager import L2MarketSellManager from log_module.log import logger_l2_error from trade import trade_record_log_util from trade.buy_radical.radical_buy_data_manager import RadicalBuyDataManager from trade.trade_data_manager import PlaceOrderCountManager from trade.trade_queue_manager import THSBuy1VolumnManager from utils import buy_condition_util __thsBuy1VolumnManager = THSBuy1VolumnManager() def virtual_buy_success(code): # 已经不需要了,暂时注释掉 # 增加下单计算 # trade_data_manager.PlaceOrderCountManager().place_order(code) # 删除之前的板上卖信息 # L2LimitUpSellStatisticUtil().delete(code) pass # 虚拟撤成功 def virtual_cancel_success(code, buy_single_index, buy_exec_index, total_datas): l2_data_manager.TradePointManager().delete_buy_point(code) SCancelBigNumComputer().cancel_success(code) LCancelBigNumComputer().cancel_success(code) NewGCancelBigNumComputer().cancel_success(code) JCancelBigNumComputer().cancel_success(code) NBCancelBigNumComputer().cancel_success(code) # dask.compute(f1, f2, f5, f6, f7, f8) # 真实买成功 def real_buy_success(code, tradePointManager): def clear_max_buy1_volume(code): # 下单成功,需要删除最大买1 __thsBuy1VolumnManager.clear_max_buy1_volume(code) def h_cancel(code, buy_single_index, buy_exec_index): try: HourCancelBigNumComputer().place_order_success(code, buy_single_index, buy_exec_index, local_today_datas.get(code)) except Exception as e: logging.exception(e) logger_l2_error.exception(e) def l_cancel(code): try: LCancelBigNumComputer().place_order_success(code) except Exception as e: logging.exception(e) logger_l2_error.exception(e) def s_cancel(code): try: SCancelBigNumComputer().place_order_success(code) except Exception as e: logging.exception(e) logger_l2_error.exception(e) def f_cancel(code): try: FCancelBigNumComputer().place_order_success(code) except Exception as e: logging.exception(e) logger_l2_error.exception(e) def g_cancel(code): try: NewGCancelBigNumComputer().place_order_success(code) except Exception as e: logging.exception(e) logger_l2_error.exception(e) order_begin_pos = tradePointManager.get_buy_compute_start_data_cache( code) clear_max_buy1_volume(code) s_cancel(code) # H撤暂时不生效 h_cancel(code, order_begin_pos.buy_single_index, order_begin_pos.buy_exec_index) l_cancel(code) g_cancel(code) JCancelBigNumComputer().place_order_success(code) NBCancelBigNumComputer().place_order_success(code) if order_begin_pos.mode == OrderBeginPosInfo.MODE_FAST: f_cancel(code) # 记录卖盘统计时间被用 L2MarketSellManager().set_sell_time_used(code, order_begin_pos.sell_info[0]) # 下单成功 PlaceOrderCountManager().place_order(code) # 下单成功之后移除红名单 if not GreenListCodeManager().is_in_cache(code): MustBuyCodesManager().remove_code(code) # 如果是绿名单,下单之后就加红 # if GreenListCodeManager().is_in_cache(code): # MustBuyCodesManager().add_code(code) # trade_record_log_util.add_must_buy(code, "如果是绿名单,下单之后就加红") # 如果是扫入下单,下单之后就加红 if order_begin_pos.mode == OrderBeginPosInfo.MODE_RADICAL: # 移除人为移白 WhiteListCodeManager().clear_huamn_info(code) RadicalBuyDataManager.place_order_success(code) # 清除下单信号 place_order_single_data_manager.L2TradeSingleDataManager.clear_data(code) __latest_cancel_l2_data_dict = {} # 真实撤成功 def real_cancel_success(code, buy_single_index, buy_exec_index, total_datas, from_real_cancel=False): """ 撤单 @param code: @param buy_single_index: @param buy_exec_index: @param total_datas: @param from_real_cancel: 是否是真实撤单 @return: """ # 取消买入标识 l2_data_manager.TradePointManager().delete_buy_point(code) SCancelBigNumComputer().cancel_success(code) LCancelBigNumComputer().cancel_success(code) FCancelBigNumComputer().cancel_success(code) NewGCancelBigNumComputer().cancel_success(code) JCancelBigNumComputer().cancel_success(code) NBCancelBigNumComputer().cancel_success(code) # 记录最近的撤单时间 if from_real_cancel: __latest_cancel_l2_data_dict[code] = total_datas[-1] if from_real_cancel: # 撤单成功需要移除红名单 if GreenListCodeManager().is_in_cache(code): GreenListCodeManager().remove_code(code) if WantBuyCodesManager().is_in_cache(code): WantBuyCodesManager().remove_code(code) if MustBuyCodesManager().is_in_cache(code): MustBuyCodesManager().remove_code(code) # 根据撤单时间判断是否可以下单 def can_place_order_for_cancel_time(code, buy_exec_data): if code not in __latest_cancel_l2_data_dict: return True threshold_time_space = buy_condition_util.get_cancel_and_buy_space_time(code) if L2DataUtil.time_sub_as_ms(buy_exec_data["val"], __latest_cancel_l2_data_dict[code]["val"]) >= threshold_time_space: return True return False if __name__ == "__main__": pass