回测配置与保存
「模拟回测」分页中的回测配置(时间范围、交易所、手续费等)和策略参数可以随策略保存,再次打开策略时自动载入。
保存
- 点击「保存回测设置」:把回测配置和策略参数以注释(
backtest注释块)的形式写在策略源码开头。 - 点击「保存策略」:平台同时记录当前的回测配置和策略参数。
载入
- 打开或刷新策略编辑页面时,优先载入源码中
backtest注释块记录的配置。 - 源码中没有
backtest注释块时,载入最后一次「保存策略」时记录的配置。 - 在源码中手动修改了
backtest注释块后,点击注释块上方的「回测设置」按钮,把修改同步到回测页面的选项中。
注释块格式
在该语言的块注释起始符后紧接着写backtest,之后每行一个键: 值:
javascript
/*backtest
start: 2024-01-01 00:00:00
end: 2024-03-01 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Binance","currency":"BTC_USDT","balance":10000,"stocks":0,"fee":[0.1,0.1]}]
args: [["fast",5],["slow",20]]
*/
各语言的注释写法:JavaScript、TypeScript、Rust、PINE语言使用/*backtest ... */;Python使用'''backtest ... ''';My语言使用(*backtest ... *)。
| 键 | 格式 | 说明 |
|---|---|---|
| start、end | YYYY-MM-DD HH:mm:ss | 开始、结束时间,按浏览器所在时区解析。 |
| period | 1m、1h、1d等,或秒数 | 策略K线周期。 |
| basePeriod | 同上 | 底层K线周期,不写时与period相同;实盘级Tick模式下忽略。 |
| mode | 1 | 实盘级Tick模式;不写为模拟级Tick模式。 |
| exchanges | JSON数组 | 每个元素对应一个交易所对象,字段见下表。 |
| args | JSON数组 | 策略参数,[["参数名", 值], ...];第三个元素为模板Id时设置该模板的参数:["参数名", 值, 模板Id]。 |
exchanges元素的字段,除eid、currency外都可以省略:
| 字段 | 说明 |
|---|---|
| eid | 交易所Id,例如Binance、Futures_OKX。 |
| currency | 交易对,例如BTC_USDT。 |
| balance、stocks | 计价币、交易币的初始余额。 |
| fee | [挂单费率, 吃单费率],单位为百分比。 |
| feeMin | 每笔成交的最低手续费,只对部分市场生效。 |
| depthDeep、depthAmount | 深度档位、模拟盘口每档的数量。 |
| tradesMode | 实盘级Tick模式下是否回放逐笔成交:"0"回放,"1"不回放。 |
| feeder | 自定义数据源地址,见自定义数据源。 |
「保存回测设置」还会写入一些以bt开头的键(例如btSlipPoint滑点、btNetDelay网络延迟、btFaultTolerant容错概率、btMaxBarLenK线最大条数),记录回测页面上其他选项的取值,不建议手工修改。本地回测引擎也读取同样的注释块,见本地回测引擎。