| | |
| | | import logging |
| | | import random |
| | | import time as t |
| | | |
| | | from code_attribute import big_money_num_manager, code_volumn_manager, code_data_util, industry_codes_sort, \ |
| | |
| | | __SecondCancelBigNumComputer = SecondCancelBigNumComputer() |
| | | __HourCancelBigNumComputer = HourCancelBigNumComputer() |
| | | __LCancelBigNumComputer = LCancelBigNumComputer() |
| | | __DCancelBigNumComputer = DCancelBigNumComputer() |
| | | __TradeStateManager = trade_manager.TradeStateManager() |
| | | __CodesTradeStateManager = trade_manager.CodesTradeStateManager() |
| | | __PauseBuyCodesManager = gpcode_manager.PauseBuyCodesManager() |
| | |
| | | cls.unreal_buy_dict.pop(code) |
| | | |
| | | @classmethod |
| | | def set_real_place_order_index(cls, code, index, buy_single_index): |
| | | trade_record_log_util.add_real_place_order_position_log(code, index, buy_single_index) |
| | | need_cancel = FastCancelBigNumComputer().set_real_order_index(code, index) |
| | | if need_cancel: |
| | | cls.cancel_buy(code, msg="F撤不够2笔触发撤单") |
| | | else: |
| | | cancel_buy_strategy.set_real_place_position(code, index, buy_single_index) |
| | | def set_real_place_order_index(cls, code, index, order_begin_pos:OrderBeginPosInfo): |
| | | trade_record_log_util.add_real_place_order_position_log(code, index, order_begin_pos.buy_single_index) |
| | | if order_begin_pos.mode == OrderBeginPosInfo.MODE_FAST: |
| | | need_cancel = FastCancelBigNumComputer().set_real_order_index(code, index) |
| | | if need_cancel: |
| | | cls.cancel_buy(code, msg="F撤不够2笔触发撤单") |
| | | return |
| | | cancel_buy_strategy.set_real_place_position(code, index, order_begin_pos.buy_single_index) |
| | | |
| | | # 处理华鑫L2数据 |
| | | @classmethod |
| | |
| | | if place_order_index: |
| | | order_begin_pos = cls.__get_order_begin_pos( |
| | | code) |
| | | cls.set_real_place_order_index(code, place_order_index, order_begin_pos.buy_single_index) |
| | | cls.set_real_place_order_index(code, place_order_index, order_begin_pos) |
| | | async_log_util.info(logger_l2_process, "code:{} 获取到下单真实位置:{}", code, place_order_index) |
| | | except: |
| | | async_log_util.error(logger_l2_error, f"{code} 处理真实下单位置出错") |
| | |
| | | jx_blocks, jx_blocks_by = KPLCodeJXBlockManager().get_jx_blocks_cache( |
| | | code), KPLCodeJXBlockManager().get_jx_blocks_cache(code, by=True) |
| | | info = cls.__trade_log_placr_order_info_dict[code] |
| | | info.mode = order_begin_pos.mode |
| | | info.set_buy_index(order_begin_pos.buy_single_index, order_begin_pos.buy_exec_index) |
| | | if jx_blocks: |
| | | info.set_kpl_blocks(list(jx_blocks)) |
| | |
| | | @classmethod |
| | | def __compute_fast_order_begin_pos(cls, code, start_index, end_index): |
| | | limit_up_price = gpcode_manager.get_limit_up_price(code) |
| | | if float(limit_up_price) >= 10: |
| | | return False, -1, "股价大于10块" |
| | | # if float(limit_up_price) >= 10: |
| | | # return False, -1, "股价大于10块" |
| | | total_datas = local_today_datas[code] |
| | | start_time_str = total_datas[start_index]["val"]["time"] |
| | | if tool.trade_time_sub(start_time_str, "10:00:00") > 0: |
| | | return False, -1, "超过规定时间" |
| | | # if tool.trade_time_sub(start_time_str, "13:00:00") > 0: |
| | | # return False, -1, "超过规定时间" |
| | | refer_sell_data = cls.__L2MarketSellManager.get_refer_sell_data(code, start_time_str) |
| | | if refer_sell_data is None: |
| | | return False, -1, "总卖为空" |
| | | if cls.__L2MarketSellManager.is_refer_sell_time_used(code, refer_sell_data[0]): |
| | | return False, -1, "总卖统计时间已被使用" |
| | | # 是否大于500万 |
| | | if refer_sell_data[1] < 500 * 10000: |
| | | if refer_sell_data[1] <= 500 * 10000: |
| | | return False, -1, "总卖小于指定金额" |
| | | # 统计之前的卖 |
| | | threshold_money = refer_sell_data[1] |