| | |
| | | NewGCancelBigNumComputer().set_real_place_order_index(code, index, buy_single_index, is_default) |
| | | FCancelBigNumComputer().set_real_order_index(code, index, is_default) |
| | | JCancelBigNumComputer().set_real_place_order_index(code, index, buy_single_index, is_default) |
| | | NBCancelBigNumComputer().set_real_place_order_index(code, index, buy_single_index, is_default) |
| | | |
| | | |
| | | class BaseCancel: |
| | |
| | | self.__clear_data(code) |
| | | |
| | | |
| | | class NBCancelBigNumComputer(BaseCancel): |
| | | """ |
| | | NB撤: |
| | | 大市值5分钟内前面没有大单撤 |
| | | """ |
| | | __real_place_order_index_info_dict = {} |
| | | |
| | | __instance = None |
| | | |
| | | def __new__(cls, *args, **kwargs): |
| | | if not cls.__instance: |
| | | cls.__instance = super(NBCancelBigNumComputer, cls).__new__(cls, *args, **kwargs) |
| | | return cls.__instance |
| | | |
| | | def set_real_place_order_index(self, code, index, buy_single_index, is_default): |
| | | self.__real_place_order_index_info_dict[code] = (index, is_default) |
| | | |
| | | def need_cancel(self, code, trade_index): |
| | | # [时间, 真实下单位置, 信号总手数, 目前手数, 最新计算的索引] |
| | | real_place_order_index_info = self.__real_place_order_index_info_dict.get(code) |
| | | if not real_place_order_index_info or real_place_order_index_info[1]: |
| | | return False, "没有找到真实下单位" |
| | | real_place_order_index = real_place_order_index_info[0] |
| | | |
| | | limit_up_price = round(float(gpcode_manager.get_limit_up_price(code)),2) |
| | | if limit_up_price < 3: |
| | | return False, "股价小于3块" |
| | | |
| | | zyltgb = l2_trade_factor.L2TradeFactorUtil.get_zyltgb(code) |
| | | zyltgb_unit_y = round(zyltgb / 100000000, 1) |
| | | if zyltgb_unit_y < 50: |
| | | return False, '自由流通股本小于50亿' |
| | | |
| | | # 计算剩余数量 |
| | | total_datas = local_today_datas.get(code) |
| | | if tool.trade_time_sub(tool.get_now_time_str(), total_datas[real_place_order_index]['val']['time']) > 300: |
| | | return False, "超过生效时间" |
| | | total_left_count, total_left_num = L2DataComputeUtil.compute_left_buy_order(code, trade_index, real_place_order_index,limit_up_price, 299*10000) |
| | | if total_left_count > 0: |
| | | return False, '有大单' |
| | | return True, f'无大单:{trade_index}-{real_place_order_index}' |
| | | |
| | | def __clear_data(self, code): |
| | | if code in self.__real_place_order_index_info_dict: |
| | | self.__real_place_order_index_info_dict.pop(code) |
| | | |
| | | def cancel_success(self, code): |
| | | self.__clear_data(code) |
| | | |
| | | def place_order_success(self, code): |
| | | self.__clear_data(code) |
| | | |
| | | |
| | | |
| | | |
| | | if __name__ == "__main__": |
| | | pass |
| | |
| | | from code_attribute import gpcode_manager |
| | | from l2 import l2_data_util, l2_data_manager, transaction_progress |
| | | from l2.cancel_buy_strategy import FCancelBigNumComputer, LCancelBigNumComputer, LCancelRateManager, \ |
| | | GCancelBigNumComputer, SCancelBigNumComputer, HourCancelBigNumComputer, NewGCancelBigNumComputer |
| | | GCancelBigNumComputer, SCancelBigNumComputer, HourCancelBigNumComputer, NewGCancelBigNumComputer, \ |
| | | NBCancelBigNumComputer |
| | | from l2.huaxin import l2_huaxin_util |
| | | from l2.l2_data_manager import OrderBeginPosInfo |
| | | from l2.l2_data_manager_new import L2TradeDataProcessor |
| | |
| | | cancel_result = FCancelBigNumComputer().need_cancel_for_deal_fast(code, buy_progress_index) |
| | | if cancel_result[0]: |
| | | L2TradeDataProcessor.cancel_buy(code, f"F撤:{cancel_result[1]}") |
| | | else: |
| | | try: |
| | | cancel_result = NBCancelBigNumComputer().need_cancel(code, buy_progress_index) |
| | | if cancel_result[0]: |
| | | L2TradeDataProcessor.cancel_buy(code, f"大市值无大单撤:{cancel_result[1]}") |
| | | except: |
| | | pass |
| | | |
| | | |
| | | SCancelBigNumComputer().set_transaction_index(code, order_begin_pos.buy_single_index, |
| | | buy_progress_index) |
| | |
| | | from l2 import l2_data_manager, place_order_single_data_manager |
| | | from l2.cancel_buy_strategy import HourCancelBigNumComputer, SCancelBigNumComputer, \ |
| | | LCancelBigNumComputer, DCancelBigNumComputer, GCancelBigNumComputer, FCancelBigNumComputer, \ |
| | | NewGCancelBigNumComputer, JCancelBigNumComputer |
| | | 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_sell_manager import L2MarketSellManager |
| | |
| | | LCancelBigNumComputer().cancel_success(code) |
| | | NewGCancelBigNumComputer().cancel_success(code) |
| | | JCancelBigNumComputer().cancel_success(code) |
| | | NBCancelBigNumComputer().cancel_success(code) |
| | | # dask.compute(f1, f2, f5, f6, f7, f8) |
| | | |
| | | |
| | |
| | | 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) |
| | | # 记录卖盘统计时间被用 |
| | |
| | | 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] |