【零基础】极星量化入门九:找到boll的最优回测参数

一、前言

  极星量化入门是比较简单的,用起来便利但也有其局限性的地方,比如我发现某个策略在某个K线周期的表现好像还不错,但是不太确定哪一个参数是最优的,现在想要做批量测试看看效果。假如该指标就只有一个参数,但是这个参数取值可以是1-100。那我是不是要重复100次回测呢?

  先不说在极星上回测每次都需要读取行情,仅仅点击100次启动,并修改100次参数,想想都不想动了,好在能看到这里的童鞋肯定是有python基础的了,那么我们为什不用python来实现这个看似困难的任务呢?

二、实现过程

  1、获取行情

  批量回测中我们只获取一次行情,然后就使用这个行情来做回测,所以执行过程不能在handle_data中,而应该在hisover_callback(历史行情获取完毕后触发)。

  需要注意的是hisover_callback被触发时所有历史数据都已经获取完毕,所以我们需要修改一次参数后做一次行情的遍历。

  2、遍历参数

  我们使用boll指标来做测试,这里只对timeperiod(p)参数做修改,那我们可以设置一个p的最大值p_max,另外要注意的是p的最小值是2。

 

  3、遍历行情

  在hisover_callback中所有行情数据都已经存在Close()、Open()、High()、Low()中了,这里我们只用到了Close。在计算boll时,是获取一个行情就计算一次的,所以我们可以用singleCloseList来记录遍历的Close值。

   4、模拟交易

  根据计算的boll指标做模拟交易,这里就简单的将买入价、卖出价记录下来就好了,我另外加了一些滑点。注意需要区分有持仓和无持仓的情况。

   5、盈亏计算

  行情遍历完后,算出买价和卖价的均值,而后做个简单的减法运算就行了。对于CL合约,每涨1元就盈利1000美元,所以最后我们是乘以交易次数和1000就是最终的盈利了。另外需要注意遍历结束后肯定会有一个买持仓或一个卖持仓,所以要将多出来的那次买入或卖出剔除掉。

   6、结果分析

  最终输出如下

   放到excel里看看,我们可以得出结论,其他条件不变的情况下,p=70时boll指数的盈利能力最强。

 三、回顾

  这里只是做了个简单的批量回测,其实还可以算出最大回撤的,童鞋们可以自己试试看。然后你可能会发现这里算出来的盈利与在极星上单次回测的盈利有一点出入,那是因为我们这里最后的持仓被清除了,而单次回测时最后一个持仓要计算盈亏。

  另外我忘了做手续费的处理!只需要每次开平时在profit中减去手续费即可!

  完整代码:

https://share.weiyun.com/5INuZVZ

原文地址:https://www.cnblogs.com/cation/p/12571356.html