| | |
| | | TYPE_LIST_TRADED = 3 |
| | | TYPE_LIST_POSITION = 4 |
| | | TYPE_LIST_MONEY = 5 |
| | | # 成交 |
| | | TYPE_DEAL = 6 |
| | | |
| | | ENABLE_ORDER = True |
| | | |
| | |
| | | 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: |
| | |
| | | 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, |
| | |
| | | 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, |
| | |
| | | self.__temp_order_list_dict.pop(nRequestID) |
| | | except: |
| | | pass |
| | | |
| | | |
| | | |
| | | # 获取响应发送socket |
| | |
| | | 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): |