Administrator
2024-05-28 517f6c8ce6c68bfcd652ceeb7b79f79408dfec76
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
# 虚拟买成功
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
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
 
__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)
    # 下单成功之后移除红名单
    MustBuyCodesManager().remove_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]
 
    # 撤单成功需要移除红名单
    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:
        return True
    return False
 
 
if __name__ == "__main__":
    pass