问题描述
解决方案
根据 Ptrade 官方 API 文档,平台本身并没有在代码层面明确规定每天进行“低代码策略回测”或普通策略回测的绝对次数限制。
但是,在实际使用中,您可能会遇到以下几种隐性或显性的限制:
1. 券商或服务器配置限制
虽然 Ptrade 引擎没有限制回测次数,但您所使用的具体券商环境可能会为了保证服务器的稳定性,对单个用户的并发回测任务数或每日总回测次数进行限制。如果遇到无法回测的情况,建议咨询您开户的券商客服。
2. API 数据获取的频率限制(流控)
在编写回测策略时,如果您频繁调用某些获取数据的 API,可能会触发流控限制。例如:
- 财务数据接口 (
get_fundamentals):该接口有严格的流量限制,每秒不得调用超过100次,单次最大调用量是500条数据。如果在回测中频繁调用且不加控制,可能会导致数据获取失败或策略报错。建议在大量获取数据时加入time.sleep()进行缓冲。
3. 回测运行周期的机制
了解回测的运行机制有助于您更高效地进行回测:
- 日线级别:回测每天运行一次,运行时间为每个交易日的 15:00。
- 分钟级别:回测每分钟运行一次,运行时间为 9:31 ~ 15:00(跳过非交易时间)。
💡 提高回测效率的建议
- 避免在
handle_data中进行大量重复计算:尽量将只需计算一次的数据(如历史长周期均线、财务数据)放在before_trading_start或通过全局变量g缓存。 - 注意数据获取接口的合理使用:
get_history和get_price接口不支持多线程同时调用,避免在run_daily或run_interval中与handle_data同一时刻调用。 - 合理设置滑点和手续费:使用
set_slippage和set_commission让回测结果更贴近实盘,减少无效的参数调优回测次数。
总结来说,您可以多次进行回测,但请注意代码的执行效率和 API 的调用频率,以免因资源占用过高而影响回测体验。