如何使用代码精确调整“回测系统默认设置”

Author: 小小梦, Created: 2017-05-05 19:03:55, Updated: 2020-03-30 13:51:24

如何使用代码精确调整“回测系统默认设置”

部分内容已经调整,最新参看API 文档。

在策略的参数测试,不同时间段回测,多个标的物回测等,回测策略时由于参数需要反复调整,而且不能记录,下次回测时又要重新设置。平台为了方便参数调整,新增加功能 – 使用代码精确调整“回测系统默认设置”。

  • 1、没有使用该功能的时候

    img

    可以看到这是一个测试 策略,代码如下:

    function main(){
        while(true){
            LogStatus("测试默认参数!");
            Sleep();
        }
    }
    

    策略参数是这样的:

    img

    此时的【回测界面】中参数是如下图的默认设置

    img

  • 2、使用代码 调整回测默认设置

    • 回测系统参数部分:
      /*backtest
        start: 2017-03-01        
        end: 2017-03-02           
        period: 15                
        mode: 1                 
      */
      

      img

      注意:

      • period : 15 15指的是15分钟, 平台支持的周期为 1分钟、5分钟、15分钟、30分钟、 1小时、1天 那么1小时怎么表示? 1小时 = 60分钟, 写成 period : 60 就可以了。 那么1天怎么表示? 1天 = 24 * 60 分钟, 写成 period : 1440 就可以了。

      • mode: 1 mode 指的是 回测的模式, 回测系统支持 模拟级别回测实盘级别回测 。 这里1代表的是下拉框的索引, 0 为 模拟级别回测 , 1为实盘级别回测

    • 回测策略参数部分:
      /*defaults
        number : 0
        bool: false
        string: Hello BotVS!
        comboBox : 2
      */
      

      img

      注意:

      • comboBox : 2 这个2 指的是 下拉框的索引, 下拉框第一个选项的索引是0, 第二个选项的索引是1,第三个选项的索引是2。
      • 加密串 类型参数 和 字符串类型 相同操作设置。
    • 完整的测试代码

Javascript

/*backtest
  start: 2017-03-01        
  end: 2017-03-02           
  period: 15              
  mode: 1                 
*/

/*defaults
  number : 0
  bool: false
  string: Hello BotVS!
  comboBox : 2
*/

function main(){
    while(true){
        LogStatus("测试默认参数!");
        Sleep();
    }
}

Python

'''
/*backtest
  start: 2017-03-01        
  end: 2017-03-02           
  period: 15              
  mode: 1                 
*/

/*defaults
  number : 0
  bool: false
  string: Hello BotVS!
  comboBox : 2
*/
'''
def main():
  Log("OK")  

刷新一下,然后看看回测页面 与 之前有没有变化。(注意: 代码修改的默认参数设置在第一次进入页面时生效,中途修改不生效,保存后刷新即生效)。

img

可以看到,不论是 “回测系统的默认参数” ,还是 “策略的默认参数” ,都根据代码做出了相应的修改。 保存需要的设置,再也不用点来点去设置回测参数了。

  • 3、使用 MATE 按钮 将回测页面设置的参数 以代码形式 插入到策略代码中:

    img

    这样在第一次 以代码形式 设置 默认回测参数 时就不用手写了, 可以在回测页面设置好,直接插入到代码中。

  • 测试策略地址:

    img

    https://www.fmz.com/strategy/40155

注: 改动 args 调整为 defaults

  • 2017.12.17 优化 “保存回测设置” 功能 (按钮控件原名为 META )

    img

    例如: 在设置完回测选项时(比如 时间、交易所、K线周期 等等) 可以点击 策略编辑页面的 “保存回测设置” 按钮, 将回测配置 以代码形式保存在策略中,下次回测会以此代码 默认配置回测选项。

    img

    代码会自动添加到编辑区最开始,以注释形式保存。

    img

    这样 随手保存下,下次就不用再配置回测信息了。

    如果调整了 回测 的交易所对象的 费率设置:

    img

    然后 保存回测设置 ,就可以看到 回测的 设置 中出现了 一个费率设置。

    # 注意: 尽量不要手动修改 或者 设置 回测设置 (即 backtest 段代码) 代码。
    

More

kaizi1231 生成了这个配置信息,在策略里面可以直接调用的吗?比如说这个费率,余额余币做收益计算呢?

hokshelato `mode: 1` 似乎无效,界面上始终显示的是 **模拟级 Tick**。

edwardgyw nice work!是不是把添加交易所和买入卖出手续费设置一并给代码化了,每次都要调这几个

水生 要是能设置 余额 和余币 那就更好了。

小小梦 费率 直接 在 策略界面上 设置一个参数 指定就可以了。

kaizi1231 梦神,有办法在策略中获得回测平台设置的费率参数吗?

小小梦 这个不行 , 这个只是给回测系统 配置的 参数的代码。

小小梦 好的 明白了 ^^ , 这个 本身是 注释代码,可能里面再注释 就引起解析错误了。

hokshelato 倒不是刷新的问题,原来是我在语句后面还加了注释,BotVS 无法正确解析的原因。比如: ```js /*backtest mode: 1 // 实盘级 tick */ ``` 带了注释,`mode` 始终被设置为 **0**(模拟级)。

小小梦 哦 您说的 这几个 在 代码中设置不了。

小小梦 设置 后需要刷新下 页面 才生效,估计是这个问题,您试下。

hokshelato 同问,不知现在**余额**、**余币**、**买入**、**卖出**能否在 `/*backtest` 中设置了?

Zero 可以保存手续费配置了

J +1

edwardgyw 简单啊,设置一个按钮,功能为保存当前设置为默认设置选项。弄完之后你们自己生成这串代码插入,还是后台记录也好,都比现在方便的多

小小梦 这个因为 有些复杂,暂时还在设计中,看怎么设计最合理、方便、高效。

小小梦 感谢提出建议,确实这个也需要设置,我已记录下报告Z大。