输入/搜索内容
入门
欢迎使用发明者量化交易平台
快速开始
密钥安全性
平台基础
账号与计费
实盘计费与充值
子账号
交易所
通用协议
本地凭据文件
交易所特殊说明
证券与期货
加密货币
托管者
策略库
实盘
编写策略
开发工具
回测系统
进阶专题
数据与研究
对外接口

回测用平台的历史行情驱动策略代码:回测引擎维护一个虚拟时钟,为每个交易所对象维护一个模拟账户,策略调用的行情、下单、账户等函数都由引擎按历史数据应答。回测结果只反映策略在历史行情下的表现,历史行情不能代表未来,对回测结果要理性、客观地看待。

发起回测

  • 网页:打开策略编辑页面,切换到「模拟回测」分页,设置回测配置和策略参数后点击「开始回测」(快捷键见回测页面快捷键)。回测配置可以保存进策略源码,见回测配置与保存。
  • AI助手:通过MCP工具run_backtest发起回测、get_backtest读取结果,见AI接入。MCP发起的回测只使用模拟级Tick模式。
  • 本机:使用开源的本地回测引擎,见本地回测引擎。

回测配置项

配置项说明
时间范围回测的开始时间和结束时间。
K线周期策略调用GetRecords()默认得到的K线周期。
底层K线周期模拟级Tick模式下用来生成tick的K线周期。越小越接近真实行情,回测也越慢;策略K线由底层K线合成,不能小于底层K线周期。
模式模拟级Tick或实盘级Tick,见回测模式与撮合。
交易所、交易对每个交易所对象有各自的模拟账户;交易对写成BTC_USDT的形式。期货交易所需要在策略中先调用exchange.SetContractType()设置合约,才能获取行情、下单。
初始资金计价币(如USDT)和交易币(如BTC)的初始余额。币本位合约以交易币作保证金,需要设置交易币余额。
手续费挂单(maker)和吃单(taker)费率,单位为百分比,默认取该交易所市场的配置。限价单下单时立即成交按吃单费率计算,挂在盘口上之后才成交按挂单费率计算。
滑点单位为价格最小变动单位(一跳)的个数,加在模拟盘口买一价、卖一价的外侧,默认为0。
网络延迟单位为毫秒,策略每调用一次交易所接口,虚拟时钟前进相应时间,默认为200。
深度档位、每档数量GetDepth()返回的档位数(1~20)和模拟盘口每档的数量;实盘级Tick模式下深度档位是向数据源请求的真实深度档数。
K线最大条数第一次调用GetRecords()时返回的历史K线条数上限(100~5000,默认300)。
日志条数回测保留的运行日志、收益日志、图表数据的条数上限。
数据源默认使用平台的历史数据,也可以使用自定义数据源,见自定义数据源。

容错测试

回测页面另外提供「容错测试」:按一定概率(默认0.5)让交易所接口调用失败,并且每种接口的第一次调用一定失败,失败时记录错误日志FaultTolerant Test。用于检验策略对接口失败的处理,例如是否用_C()重试。

回测中的策略

  • IsVirtual()返回true,不应在回测中执行的逻辑可以据此跳过,见IsVirtual。
  • 时间是虚拟时间:Unix()、_D()等读取的是回测时钟,Sleep()推动时钟前进。时钟越过结束时间时,引擎抛出EOF异常结束回测,此时不会调用onexit()。
  • 回测中GetCommand()收不到交互命令,不支持onerror(),网络请求类功能受限。