一、前言
虽然极星9.5量化自带了一个boll回测的策略,但缺少一些说明,这里我就把回测说的详细点供大家回测时参考
二、代码修改
原生的代码自然不符合我们期望,所以做一些修改。
1、合约订阅和触发方式全部在代码里实现
只是习惯问题,而且要避免重复设置导致的不可预测问题。
所以在启动时的属性设置页面啥都不要选,默认选择的能取消的就取消掉。
合约设置里不要选合约。
资金设置这里需要按实际情况设置,滑点损耗可以设置个1-3个点,看合约是否活跃的,还有就是你的网速如何。不过我在代码里自己做了滑点损耗,所以这里也可以不设置。
其他不用管了,代码写好直接启动即可。
2、关于“触发方式”的额外说明
在回测时设置为“K线触发”即可,K线触发就是来一个K线就触发一次handle_data函数。
实盘时你设置“K线触发”或“即时行情触发”都是一样的,为啥呢?因为实盘的K线触发不是等一个bar生成完毕才触发,而是K线有了变化就触发。以下面两个图片为例,K线的周期为5分钟,这个bar要5分钟才生成完全,这个过程中bar柱会时大时小,每一次变化都会触发handle_data,那其实跟即时行情触发有啥区别呢?区别不大(区别肯定还是有的...)。
然而在回测阶段,bar柱是一次性生成的,所以不存在一个bar柱导致多次的handle_data触发。
3、关于发单时机的额外说明
“实时发单”和“K线稳定后发单”有啥区别?在回测阶段是没有区别的,还是跟实盘中bar柱生成的问题有关。实盘一个bar柱生成过程中,很可能行情从100涨到120,触发了买入策略,接着又跌到80触发卖出策略,那岂不是一个bar柱就导致了原地爆亏?而且还有可能它一会120触发买入,一会80又触发卖出(这个情况是出现过的),你可能就来回亏损。所以在实盘中选择K线稳定后发单是非常有必要的,然而回测时bar柱都是直接生成的,所以选那个没有影响。
4、策略代码
主要修改的是将买卖价格修改为Close而不是Open,同时增加了两个滑点
5、买卖价格的额外说明
需要注意现在是做历史回测,这个阶段是没有行情的,也就是买一、卖一这些数据是没有的,我们只知道一个bar柱的开盘价、收盘价,所以在回测时一般认为成交价是bar柱的收盘价,同时加上两个滑点确保即使在实盘也能以这个价格成交。
还需要注意的是历史回测阶段建仓操作是100%成功的,即时你价格设置为1也会当你以1元成交了。所以回测就是个模拟,不要把回测和模拟交易搞混了(模拟交易时价格不合要求是不会成交的)。
三、运行
运行后K线上的小箭头就表明了买入卖出的时机
1、运行状态解读
运行阶段会从“历史”变为“实时”,因为我们在代码里做了限制,所以实时阶段是不做测试的。如果不在代码做特殊处理,回测完历史行情后,会继续使用实时行情做模拟。
运行模式这里是虚拟,因为我们没有开启实盘运行。运行模式不设置为“实盘运行”则不能在即时行情阶段发单(同时还得登陆账户,如果是实盘账户就真的交易了,如果是模拟账户则是模拟交易,不登录账户则是用实时行情做回测)。
策略刚运行时会发现可用资金一下少很多,而回撤可能并不多,这是因为买卖要交保证金的嘛。
胜率只是统计了平仓的盈亏次数,胜率大但总体亏钱是常见的。
2、投资报告解读
右键策略可以选择投资报告,投资报告是你每次选择时生成的,也就是点几次就生成几个,太多的话可以考虑删除些。回测里比较重要的就是看下资金变化,下单的详情
3、运行模式的特别说明
有一个特别的情况需要注意,就是你的运行模式选择了“实盘运行”,然而你又订阅了历史行情,同时在历史行情阶段建仓了,那你现在就处于“回测”和“实盘”中间这么个状态。当历史行情走完后,按理来说你应该是在“实盘运行”了,但并没有,即时行情导致的建仓依然认为属于“回测”,也就是即时行情导致的建仓并不会产生一个真实的委托。但此时的持仓可以在“组合监控”中看到,而且你可以将持仓的信息“同步”到真实的账户中(自动产生委托)。
这种同步建议是不要使用的,因为用不好问题多多。比如有个童鞋选择了自动同步,结果由于价格并没有优势(默认是当时的对盘价+1跳)导致一直无法成交,所以系统就一直帮他下委托单,一会就下了十几个。
四、回顾
本篇我把近期关于回测的经验都总结在这里了,希望对大家会有帮助,接着我会再写一篇关于实盘的总结,大家可以关注公众号“零基础爱学习”。
这里的示例代码可以关注公众号后回复“LH9”获取。
来源:https://www.cnblogs.com/cation/p/12552510.html