Administrator
2023-09-04 acd3f8f4d658f8261f3a592d7943c065e0b6fc71
huaxin_client/trade_client.py
@@ -69,6 +69,8 @@
TYPE_LIST_TRADED = 3
TYPE_LIST_POSITION = 4
TYPE_LIST_MONEY = 5
# 成交
TYPE_DEAL = 6
ENABLE_ORDER = True
@@ -521,7 +523,8 @@
                logger.info('OnRspOrderInsert: Error! [%d] [%d] [%s]'
                            % (nRequestID, pRspInfoField.ErrorID, pRspInfoField.ErrorMsg))
                threading.Thread(target=lambda: self.__data_callback(TYPE_ORDER, nRequestID,
                                                                     {"sinfo": pInputOrderField.SInfo, "orderStatus": -1,
                                                                     {"sinfo": pInputOrderField.SInfo,
                                                                      "orderStatus": -1,
                                                                      "orderStatusMsg": pRspInfoField.ErrorMsg}),
                                 daemon=True).start()
        except:
@@ -595,6 +598,16 @@
                   pOrderField.OrderStatus, pOrderField.InsertTime))
            OrderIDManager.set_system_order_id(pOrderField.SecurityID, pOrderField.SInfo, pOrderField.OrderSysID)
            # 上报订单状态
            if pOrderField.OrderStatus == traderapi.TORA_TSTP_OST_AllTraded or pOrderField.OrderStatus == traderapi.TORA_TSTP_OST_PartTradeCanceled:
                threading.Thread(target=lambda: self.__data_callback(TYPE_DEAL, 0, {"sinfo": pOrderField.SInfo,
                                                                                    "securityId": pOrderField.SecurityID,
                                                                                    "orderLocalId": pOrderField.OrderLocalID,
                                                                                    "orderStatus": pOrderField.OrderStatus,
                                                                                    "statusMsg": pOrderField.StatusMsg,
                                                                                    "orderSysID": pOrderField.OrderSysID,
                                                                                    "accountID": pOrderField.AccountID}),
                                 daemon=True).start()
            if pOrderField.OrderStatus != traderapi.TORA_TSTP_OST_Unknown:
                threading.Thread(target=lambda: self.__data_callback(TYPE_ORDER, 0, {"sinfo": pOrderField.SInfo,
@@ -770,9 +783,11 @@
                self.__temp_order_list_dict[nRequestID].append(
                    {"tradeID": pTradeField.TradeID, "securityID": pTradeField.SecurityID,
                     "orderLocalID": pTradeField.OrderLocalID,
                     "direction": pTradeField.Direction, "orderSysID": pTradeField.OrderSysID, "price": pTradeField.Price,
                     "direction": pTradeField.Direction, "orderSysID": pTradeField.OrderSysID,
                     "price": pTradeField.Price,
                     "tradeTime": pTradeField.TradeTime,
                     "volume": pTradeField.Volume, "tradeDate": pTradeField.TradeDate, "tradingDay": pTradeField.TradingDay,
                     "volume": pTradeField.Volume, "tradeDate": pTradeField.TradeDate,
                     "tradingDay": pTradeField.TradingDay,
                     "pbuID": pTradeField.PbuID, "accountID": pTradeField.AccountID})
            else:
                threading.Thread(target=lambda: self.__data_callback(TYPE_LIST_TRADED, nRequestID,
@@ -781,7 +796,6 @@
                self.__temp_order_list_dict.pop(nRequestID)
        except:
            pass
# 获取响应发送socket
@@ -1005,8 +1019,14 @@
                logger_local_huaxin_trade_debug.info(f"执行等待撤单,{code}:{local_order_id} {orderSystemId}")
                # 执行撤单
                cls.not_canceled_local_order_ids.discard(local_order_id)
                cls.__TradeSimpleApi.cancel_buy(code, orderSystemId,
                                                f"local_cancel_buy-{code}-{round(time.time() * 1000)}")
                for i in range(3):
                    try:
                        cls.__TradeSimpleApi.cancel_buy(code, orderSystemId,
                                                        f"lcb-{code}-{round(time.time() * 1000)}")
                        break
                    except Exception as e:
                        logger_local_huaxin_trade_debug.exception(e)
                        time.sleep(0.01)
    @classmethod
    def add_need_cancel_local_order_id(cls, local_order_id):