refactor check limit order
This commit is contained in:
parent
0f23e5d6ba
commit
8f2ea1c260
@ -196,6 +196,15 @@ class RealTraderManager:
|
|||||||
if duration > Config.RTM_ORDER_TIMEOUT:
|
if duration > Config.RTM_ORDER_TIMEOUT:
|
||||||
logger.info(f"限价单超时: ID={order_id}, 策略={strategy_name}, 持续时间={duration}秒")
|
logger.info(f"限价单超时: ID={order_id}, 策略={strategy_name}, 持续时间={duration}秒")
|
||||||
self.trader.cancel(order_id)
|
self.trader.cancel(order_id)
|
||||||
|
time.sleep(1)
|
||||||
|
order = self.trader.get_order(order_id)
|
||||||
|
if order.order_status == xtconstant.ORDER_CANCELED:
|
||||||
|
logger.info(f"限价单已撤销: ID={order_id}, 策略={strategy_name}")
|
||||||
|
self.trader.handle_order_update(order_id, strategy_name)
|
||||||
|
logger.info(f"检测到限价单被撤销,准备进行市价单补单: ID={order_id}")
|
||||||
|
self.trader.place_market_order_for_remainder(order_info, strategy_name)
|
||||||
|
else:
|
||||||
|
logger.warning(f"限价单撤销失败: ID={order_id}, 策略={strategy_name}")
|
||||||
else:
|
else:
|
||||||
logger.info(f"限价单未超时: ID={order_id}, 策略={strategy_name}, 持续时间={duration}秒")
|
logger.info(f"限价单未超时: ID={order_id}, 策略={strategy_name}, 持续时间={duration}秒")
|
||||||
|
|
||||||
|
@ -56,6 +56,7 @@ class MyXtQuantTraderCallback:
|
|||||||
def on_stock_asset(self, asset):
|
def on_stock_asset(self, asset):
|
||||||
logger.info(f"资金变动: {asset.account_id} {asset.cash} {asset.total_asset}")
|
logger.info(f"资金变动: {asset.account_id} {asset.cash} {asset.total_asset}")
|
||||||
def on_stock_order(self, order):
|
def on_stock_order(self, order):
|
||||||
|
logger.warning(f"委托回报变化: ID={order.order_id} 状态={order.order_status}")
|
||||||
if order.order_status == xtconstant.ORDER_PART_SUCC:
|
if order.order_status == xtconstant.ORDER_PART_SUCC:
|
||||||
strategy_name = self.trader_instance.get_strategy_name(order.order_id)
|
strategy_name = self.trader_instance.get_strategy_name(order.order_id)
|
||||||
logger.info(f"委托部分成交: code={order.stock_code} id={order.order_id} strategy={strategy_name}")
|
logger.info(f"委托部分成交: code={order.stock_code} id={order.order_id} strategy={strategy_name}")
|
||||||
@ -65,29 +66,6 @@ class MyXtQuantTraderCallback:
|
|||||||
strategy_name = self.trader_instance.get_strategy_name(order.order_id)
|
strategy_name = self.trader_instance.get_strategy_name(order.order_id)
|
||||||
logger.info(f"委托全部成交: code={order.stock_code} id={order.order_id} strategy={strategy_name}")
|
logger.info(f"委托全部成交: code={order.stock_code} id={order.order_id} strategy={strategy_name}")
|
||||||
self.trader_instance.handle_order_update(order.order_id, strategy_name)
|
self.trader_instance.handle_order_update(order.order_id, strategy_name)
|
||||||
|
|
||||||
elif order.order_status in [xtconstant.ORDER_CANCELED, xtconstant.ORDER_PART_CANCEL]:
|
|
||||||
strategy_name = self.trader_instance.get_strategy_name(order.order_id)
|
|
||||||
logger.info(f"委托撤单成功: code={order.stock_code} id={order.order_id} strategy={strategy_name}")
|
|
||||||
# 撤单后, 如果position manager中订单为pedding, 且为限价单, 则需要补单
|
|
||||||
position_manager = self.trader_instance.get_position_manager(strategy_name)
|
|
||||||
if position_manager and strategy_name:
|
|
||||||
# 先获取已经撤单的order
|
|
||||||
order_info = position_manager.get_pending_order(order.order_id)
|
|
||||||
if order_info:
|
|
||||||
# 更新订单状态
|
|
||||||
self.trader_instance.handle_order_update(order.order_id, strategy_name)
|
|
||||||
|
|
||||||
# 如果order_info为限价单, 则进行市价单补单
|
|
||||||
if order_info.order_type == ORDER_TYPE_LIMIT:
|
|
||||||
logger.info(f"检测到限价单被撤销,准备进行市价单补单: ID={order.order_id}")
|
|
||||||
self.trader_instance.place_market_order_for_remainder(order_info, strategy_name)
|
|
||||||
else:
|
|
||||||
logger.warning(f"撤单成功但未找到订单信息: ID={order.order_id}")
|
|
||||||
else:
|
|
||||||
logger.warning(f"撤单成功但未找到策略或持仓管理器: ID={order.order_id}, strategy={strategy_name}")
|
|
||||||
else:
|
|
||||||
logger.warning(f"委托回报变化: ID={order.order_id} 状态={order.order_status}")
|
|
||||||
def on_stock_trade(self, trade):
|
def on_stock_trade(self, trade):
|
||||||
logger.info(f"成交变动: {trade.account_id} {trade.stock_code} {trade.order_id}")
|
logger.info(f"成交变动: {trade.account_id} {trade.stock_code} {trade.order_id}")
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user