Administrator
2023-10-13 77aca8775ba39db7dcfeb806de7f0d6337fed8fb
huaxin_client/trade_client.py
@@ -92,7 +92,7 @@
        cls.__front_id = front_id
    # sinfo char(32)
    def buy(self, code, count, price, sinfo, order_ref):
    def buy(self, code, count, price, sinfo, order_ref, need_shadedow_order = True):
        if not ENABLE_ORDER:
            return
        if sinfo in self.__buy_sinfo_set:
@@ -154,28 +154,37 @@
        '''
        # 给L2发送消息
        ret = api.ReqOrderInsert(req_field, self.req_id)
        if ret != 0:
            raise Exception('ReqOrderInsert fail, ret[%d]' % ret)
        if queue_trade_w_l2_r is not None:
            queue_trade_w_l2_r.put_nowait(
                json.dumps({"type": "listen_volume", "data": {"code": code,
                                                              "volume": count}}).encode(
                    'utf-8'))
        async_log_util.info(logger_trade, f"{code}华鑫本地真实下单结束")
        # --------------------------------影子订单--------------------------------
        if order_ref:
            # 下一个影子订单
            shadow_order_ref = order_ref + 1
            shadow_sinfo = f"s_b_{order_ref}"
            shadow_price = price - 0.05
            req_field.LimitPrice = shadow_price
            req_field.SInfo = shadow_sinfo
            req_field.OrderRef = shadow_order_ref
            ret = api.ReqOrderInsert(req_field, self.req_id)
            if ret != 0:
                raise Exception('ReqOrderInsert fail, ret[%d]' % ret)
            # 影子订单撤单
            # 撤掉影子单
            shadow_cancel_order_ref = shadow_order_ref + 1
            self.cancel_buy(code, f"s_c_{shadow_order_ref}", order_sys_id=None,
                            order_ref=shadow_order_ref,
                            order_action_ref=shadow_cancel_order_ref, delay_s=0.05)
        if need_shadedow_order:
            if order_ref:
                # 下一个影子订单
                shadow_order_ref = order_ref + 1
                shadow_sinfo = f"s_b_{order_ref}"
                shadow_price = price - 0.05
                req_field.LimitPrice = shadow_price
                req_field.SInfo = shadow_sinfo
                req_field.OrderRef = shadow_order_ref
                req_field.VolumeTotalOriginal = constant.SHADOW_ORDER_VOLUME
                self.req_id += 1
                ret = api.ReqOrderInsert(req_field, self.req_id)
                if ret != 0:
                    raise Exception('ReqOrderInsert fail, ret[%d]' % ret)
                # 影子订单撤单
                # 撤掉影子单
                shadow_cancel_order_ref = shadow_order_ref + 1
                self.cancel_buy(code, f"s_c_{shadow_order_ref}", order_sys_id=None,
                                order_ref=shadow_order_ref,
                                order_action_ref=shadow_cancel_order_ref, delay_s=0.05)
        return ret
@@ -643,11 +652,12 @@
                                   pOrderField.LimitPrice, pOrderField.VolumeTotalOriginal, pOrderField.OrderSysID,
                                   pOrderField.OrderStatus, pOrderField.InsertTime))
            if pOrderField.OrderStatus == traderapi.TORA_TSTP_OST_Unknown:
                if queue_trade_w_l2_r is not None:
                    queue_trade_w_l2_r.put_nowait(
                        json.dumps({"type": "listen_volume", "data": {"code": pOrderField.SecurityID,
                                                                      "volume": pOrderField.VolumeTotalOriginal}}).encode(
                            'utf-8'))
                pass
            #     if queue_trade_w_l2_r is not None:
            #         queue_trade_w_l2_r.put_nowait(
            #             json.dumps({"type": "listen_volume", "data": {"code": pOrderField.SecurityID,
            #                                                           "volume": pOrderField.VolumeTotalOriginal}}).encode(
            #                 'utf-8'))
            else:
                order_data = {"sinfo": pOrderField.SInfo, "securityID": pOrderField.SecurityID,
                              "orderLocalID": pOrderField.OrderLocalID,