# 虚拟买成功
|
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
|
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.trade_data_manager import PlaceOrderCountManager
|
from trade.trade_queue_manager import THSBuy1VolumnManager
|
from utils import tool, 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)
|
|
# 如果是扫入下单,下单之后就加红
|
if order_begin_pos.mode == OrderBeginPosInfo.MODE_RADICAL:
|
MustBuyCodesManager().add_code(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 not GreenListCodeManager().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
|