3 分钟快速生成代码
输入想法,AI 即刻生成可运行代码
针对您在 JoinQuant 聚宽平台上遇到的模拟盘运行失败以及策略暂停后仍然发生交易的问题,根据官方 API 文档的说明,我们可以从以下几个方面进行排查和理解:
首先需要澄清的是,根据聚宽官方文档的最新说明:“聚宽目前没有提供任何形式的实盘及交易通道服务。一创聚宽已于2023-12-29停止维护。”
如果您使用的是早期的实盘通道或通过第三方工具进行的实盘绑定,其稳定性可能无法得到官方保障。以下排查主要针对模拟盘的运行机制。
如果您的模拟盘突然全部运行失败,通常与以下几个系统限制或代码逻辑有关,建议您查看策略的**运行日志(Log)**来精准定位:
handle_data 或 before_trading_start)运行时间不能超过 1800 秒。g 对象等),序列化之后的状态大小不能超过 30M。如果保存了大量不可序列化的对象(如数据库连接)或超大 DataFrame,会导致保存失败。这是许多量化交易者容易产生的误解。您提到“暂停了策略,过了3分钟左右还是把我所有持有的股票全部清仓了”,这其实是符合交易系统底层逻辑的。
“暂停策略”到底暂停了什么?
在聚宽中,暂停模拟交易意味着停止触发后续的策略事件。也就是说,系统不再定时调用您的 handle_data、run_daily 等函数,策略代码停止运行。
为什么还会成交?(订单撮合的独立性)
当您的策略代码执行了下单指令(例如 order_target(security, 0) 清仓指令)后,订单就已经被创建并发送到了撮合引擎。订单的处理流程是:订单创建 -> 订单检查 -> 报单 -> 确认委托 -> 撮合。
TimeoutError、MemoryError 或 FutureDataError 等明确报错。batch_cancel_orders(get_open_orders().values()))。g:检查是否在 g 中缓存了过大的历史数据,导致模拟盘休眠保存状态时崩溃。