| | |
| | | data = data_json["data"] |
| | | code = data["code"] |
| | | order_no = data["data"] |
| | | is_normal = l2_data_util.load_l2_data(code, load_latest=False) |
| | | volume_rate = code_volumn_manager.get_volume_rate(code) |
| | | volume_rate_index = code_volumn_manager.get_volume_rate_index(volume_rate) |
| | | m_val = \ |
| | | L2PlaceOrderParamsManager(code, True, volume_rate, volume_rate_index, None).get_m_val()[ |
| | | 0] |
| | | limit_up_price = gpcode_manager.get_limit_up_price(code) |
| | | m_val_num = int(m_val / (float(limit_up_price) * 100)) |
| | | |
| | | try: |
| | | need_cancel, msg = self.__GCancelBigNumComputer.start_cancel(code, f"{order_no}", |
| | | l2_data_util.local_today_datas.get( |
| | | code), |
| | | l2_data_util.local_today_buyno_map.get( |
| | | code), |
| | | l2_data_util.local_today_num_operate_map.get( |
| | | code), m_val_num) |
| | | if need_cancel: |
| | | # 需要撤单 |
| | | l2_data_manager_new.L2TradeDataProcessor.cancel_buy(code, "G撤撤单", "G撤") |
| | | logger_l2_g_cancel.info(f"{code}-需要撤单:{msg}") |
| | | else: |
| | | logger_l2_g_cancel.info(f"{code}-不需要撤单:{msg}") |
| | | except Exception as e: |
| | | logger_l2_g_cancel.error(f"{code}-撤单异常:{str(e)}") |
| | | TradeServerProcessor.trading_order_canceled(code,order_no) |
| | | finally: |
| | | sk.sendall(socket_util.load_header(json.dumps({"code": 0}).encode(encoding='utf-8'))) |
| | | |
| | |
| | | class TradeServerProcessor: |
| | | __TradeBuyQueue = transaction_progress.TradeBuyQueue() |
| | | __KPLCodeJXBlockManager = KPLCodeJXBlockManager() |
| | | __GCancelBigNumComputer = GCancelBigNumComputer() |
| | | |
| | | # 设置目标代码 |
| | | @classmethod |
| | |
| | | |
| | | hx_logger_l2_market_data.info(f"{code}#{data}") |
| | | |
| | | @classmethod |
| | | def trading_order_canceled(cls, code, order_no): |
| | | is_normal = l2_data_util.load_l2_data(code, load_latest=False) |
| | | volume_rate = code_volumn_manager.get_volume_rate(code) |
| | | volume_rate_index = code_volumn_manager.get_volume_rate_index(volume_rate) |
| | | m_val = \ |
| | | L2PlaceOrderParamsManager(code, True, volume_rate, volume_rate_index, None).get_m_val()[ |
| | | 0] |
| | | limit_up_price = gpcode_manager.get_limit_up_price(code) |
| | | m_val_num = int(m_val / (float(limit_up_price) * 100)) |
| | | |
| | | try: |
| | | need_cancel, msg = cls.__GCancelBigNumComputer.start_cancel(code, f"{order_no}", |
| | | l2_data_util.local_today_datas.get( |
| | | code), |
| | | l2_data_util.local_today_buyno_map.get( |
| | | code), |
| | | l2_data_util.local_today_num_operate_map.get( |
| | | code), m_val_num) |
| | | if need_cancel: |
| | | # 需要撤单 |
| | | l2_data_manager_new.L2TradeDataProcessor.cancel_buy(code, "G撤撤单", "G撤") |
| | | logger_l2_g_cancel.info(f"{code}-需要撤单:{msg}") |
| | | else: |
| | | logger_l2_g_cancel.info(f"{code}-不需要撤单:{msg}") |
| | | except Exception as e: |
| | | logger_l2_g_cancel.error(f"{code}-撤单异常:{str(e)}") |
| | | |
| | | def clear_invalid_client(): |
| | | while True: |
| | |
| | | def OnMarketData(self, code, datas): |
| | | TradeServerProcessor.l2_market_data(code, datas) |
| | | |
| | | def OnTradingOrderCancel(self, code, buy_no): |
| | | TradeServerProcessor.trading_order_canceled(code, buy_no) |
| | | |
| | | |
| | | |
| | | class MyTradeResponse(TradeResponse): |
| | | |