Administrator
2023-09-25 0fd1666f871c7a808d40af24f207d1ea42928ea3
防止重复处理同一订单的同一状态
3个文件已修改
20 ■■■■ 已修改文件
trade/huaxin/huaxin_trade_api.py 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
trade/huaxin/huaxin_trade_data_update.py 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
trade/huaxin/huaxin_trade_order_processor.py 13 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
trade/huaxin/huaxin_trade_api.py
@@ -60,9 +60,10 @@
                                orderSysID = data["orderSysID"]
                                insertTime = data.get("insertTime")
                                acceptTime = data.get("acceptTime")
                                insertDate=data.get("insertDate")
                                order = HuaxinOrderEntity(code, orderStatus, orderRef, accountID, orderSysID,
                                                          insertTime=insertTime, acceptTime=acceptTime)
                                                          insertTime=insertTime, acceptTime=acceptTime, insertDate=insertDate)
                                TradeResultProcessor.process_order(order)
                                # 订单相关回调
                                # 重新请求委托列表与资金
trade/huaxin/huaxin_trade_data_update.py
@@ -49,9 +49,11 @@
                                    accountID = d["accountID"]
                                    insertTime = d.get('insertTime')
                                    acceptTime = d.get('acceptTime')
                                    insertDate = d.get('insertDate')
                                    order = HuaxinOrderEntity(code, orderStatus, orderRef, accountID, orderSysID,
                                                              insertTime=insertTime, acceptTime=acceptTime)
                                                              insertTime=insertTime, acceptTime=acceptTime,
                                                              insertDate=insertDate)
                                    TradeResultProcessor.process_order(order)
                                    if huaxin_util.is_can_cancel(orderStatus):
                                        codes.append(code)
trade/huaxin/huaxin_trade_order_processor.py
@@ -16,13 +16,15 @@
class HuaxinOrderEntity:
    def __init__(self, code, orderStatus, orderRef, accountID, orderSysID, insertTime=None, acceptTime=None):
    def __init__(self, code, orderStatus, orderRef, accountID, orderSysID, insertDate=None, insertTime=None,
                 acceptTime=None):
        self.code = code
        self.orderStatus = orderStatus
        self.orderRef = orderRef
        self.accountID = accountID
        self.orderSysID = orderSysID
        self.insertTime = insertTime
        self.insertDate = insertDate
        self.acceptTime = acceptTime
@@ -103,9 +105,16 @@
class TradeResultProcessor:
    __TradeOrderIdManager = TradeOrderIdManager()
    __processed_keys = set()
    @classmethod
    def process_order(cls, order: HuaxinOrderEntity):
        # 同一订单号只有状态变化了才需要处理
        key = f"{order.insertDate}_f{order.code}_{order.orderSysID}_{order.orderStatus}"
        if key in cls.__processed_keys:
            return
        async_log_util.info(hx_logger_trade_debug, f"处理华鑫订单:{key}")
        cls.__processed_keys.add(key)
        if huaxin_util.is_can_cancel(order.orderStatus):
            # 设置下单成功
            new_place_order_index = cls.order_success(order)
@@ -168,11 +177,11 @@
        cls.__TradeOrderIdManager.remove_order_id(code, accountId, orderSysID)
def cancel_order(direction, code, orderSysID, orderRef=None, blocking=False, sinfo=None, request_id=None,
                 recancel=False):
    pass
if __name__ == "__main__":
    CancelOrderManager().start_cancel("000333", 1, "123123")
    # CancelOrderManager().cancel_success("000333", 1, "123123")