添加控制限价单超时后是否撤单并挂市价单补单的功能
This commit is contained in:
parent
65f91c56b2
commit
64c88dcc24
@ -55,6 +55,7 @@ class Config:
|
|||||||
# RealTraderManager配置
|
# RealTraderManager配置
|
||||||
RTM_ORDER_TIMEOUT = 10 # 订单超时时间(秒)
|
RTM_ORDER_TIMEOUT = 10 # 订单超时时间(秒)
|
||||||
RTM_USE_MARKET_ORDER = True # 是否使用市价单进行补单
|
RTM_USE_MARKET_ORDER = True # 是否使用市价单进行补单
|
||||||
|
RTM_AUTO_MARKET_ORDER = True # 限价单超时后是否撤单并挂市价单补单
|
||||||
|
|
||||||
# 撤销订单超时时间(秒)
|
# 撤销订单超时时间(秒)
|
||||||
RTM_CANCEL_TIMEOUT = 10
|
RTM_CANCEL_TIMEOUT = 10
|
||||||
|
@ -188,6 +188,7 @@ class RealTraderManager:
|
|||||||
strategy_name: 策略名称
|
strategy_name: 策略名称
|
||||||
duration: 订单持续时间(秒)
|
duration: 订单持续时间(秒)
|
||||||
"""
|
"""
|
||||||
|
|
||||||
self.trader.cancel(order_id)
|
self.trader.cancel(order_id)
|
||||||
|
|
||||||
# 使用轮询等待撤销完成,并设置超时
|
# 使用轮询等待撤销完成,并设置超时
|
||||||
@ -206,7 +207,7 @@ class RealTraderManager:
|
|||||||
logger.info(f"检测到限价单被撤销,准备进行市价单补单: ID={order_id}")
|
logger.info(f"检测到限价单被撤销,准备进行市价单补单: ID={order_id}")
|
||||||
self.trader.place_market_order_for_remainder(order_info, strategy_name)
|
self.trader.place_market_order_for_remainder(order_info, strategy_name)
|
||||||
else:
|
else:
|
||||||
logger.warning(f"限价单撤销超时或失败: ID={order_id}, 策略={strategy_name}")
|
logger.error(f"限价单撤销超时或失败: ID={order_id}, 策略={strategy_name}")
|
||||||
self.trader.handle_order_update(order_id, strategy_name) # 即使撤销失败,也更新一下状态
|
self.trader.handle_order_update(order_id, strategy_name) # 即使撤销失败,也更新一下状态
|
||||||
|
|
||||||
|
|
||||||
@ -226,12 +227,15 @@ class RealTraderManager:
|
|||||||
|
|
||||||
# 如果订单类型为限价单,则检查是否超时
|
# 如果订单类型为限价单,则检查是否超时
|
||||||
if order_info.order_type == ORDER_TYPE_LIMIT:
|
if order_info.order_type == ORDER_TYPE_LIMIT:
|
||||||
|
# 检查是否配置为自动撤单并挂市价单补单
|
||||||
|
if not Config.RTM_AUTO_MARKET_ORDER:
|
||||||
|
return
|
||||||
|
|
||||||
now = datetime.now()
|
now = datetime.now()
|
||||||
duration = (now - order_info.created_time).total_seconds()
|
duration = (now - order_info.created_time).total_seconds()
|
||||||
if duration > Config.RTM_ORDER_TIMEOUT:
|
if duration > Config.RTM_ORDER_TIMEOUT:
|
||||||
# 将处理超时限价单的逻辑委托给新的私有方法
|
# 将处理超时限价单的逻辑委托给新的私有方法
|
||||||
logger.info(f'订单创建时间: {order_info.created_time} 当前时间: {now}')
|
logger.warning(f"限价单超时: ID={order_id}, 策略={strategy_name}, 持续时间={duration}秒, 订单创建时间: {order_info.created_time} 当前时间: {now}")
|
||||||
logger.info(f"限价单超时: ID={order_id}, 策略={strategy_name}, 持续时间={duration}秒")
|
|
||||||
self._handle_timed_out_limit_order(order_id, order_info, strategy_name, duration)
|
self._handle_timed_out_limit_order(order_id, order_info, strategy_name, duration)
|
||||||
else:
|
else:
|
||||||
# 市价单未完成,更新状态
|
# 市价单未完成,更新状态
|
||||||
|
Loading…
x
Reference in New Issue
Block a user