Administrator
4 天以前 48fb7a00951f91bdc707e5dd2d196e5bccb752c3
trade/trade_result_manager.py
@@ -1,17 +1,23 @@
# 虚拟买成功
import logging
from code_attribute.gpcode_manager import MustBuyCodesManager
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 HourCancelBigNumComputer, SCancelBigNumComputer, \
    LCancelBigNumComputer, DCancelBigNumComputer, GCancelBigNumComputer, FCancelBigNumComputer, NewGCancelBigNumComputer
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, local_today_num_operate_map, L2DataUtil
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 tool
from utils import buy_condition_util
__thsBuy1VolumnManager = THSBuy1VolumnManager()
@@ -31,6 +37,8 @@
    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)
@@ -85,6 +93,8 @@
    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)
        # 记录卖盘统计时间被用
@@ -92,7 +102,20 @@
    # 下单成功
    PlaceOrderCountManager().place_order(code)
    # 下单成功之后移除红名单
    MustBuyCodesManager().remove_code(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)
@@ -117,16 +140,29 @@
    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
    if L2DataUtil.time_sub_as_ms(buy_exec_data["val"], __latest_cancel_l2_data_dict[code]["val"]) >= 1000:
    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