【量化源码共学】之错误不少的正期望系统
哈喽大家好,我是源码分享者,今天来分享源码仓库里的一套程序化交易实战策略。
先看绩效图:
一小时周期40+品种
15分钟周期40+品种
可以看到这个策略长期来说是个可以盈利的策略,但是,中间回撤不创新高的时间很长,再就是收益回撤比不高,一般人很难坚持用下去。
下面我们来对源码进行剖析,看看核心结构以及进出场资金管理等部分的设计有没有可学的部分。但是在笔者的解析过程中,发现该策略的一些错误地方,也请大家一起判断。
首先是用了一个超长的均线进行多空判断
然后对走势进行类似布林带的一个处理
通过取一定周期内当天开盘价加上上一周期的最高价-收盘价 做上轨,取一定周期内当天开盘价加上上一周期的最低价-收盘价做下轨,引入一个动态轨道作为有效突破用,中线作为开仓判断条件之一。开仓部分没问题,亮点是该策略因为了一个振幅概念,当当前K比上一根突破K走势更强劲的时候判定为有效突破,如何判定强势呢,该策略这样写
也就是K线波动幅度更大,判定为更强势,但这里面用的是当前K的数据,如果实盘中直接用的话,我觉得应该是会造成信号闪烁的,毕竟除了开盘价,其它价位一直都是变动的,这是发现的问题一。
该策略中间引入了一个TBQ已经内置好的函数,就是求开仓以后的最高价和最低价,源码如下:
但是如果你认真看的话会发现这里面错误百出:
比如前面限制了BarSSinceentry == 0,这里还求个最低价,这不是多此一举吗?再就是这里求最低价为什么用max??,后面求最高价用了个min,实在是错的离谱,如果代码上看的不明显,我们输出一条开仓后的最高价看看,这是该策略发现的问题二。
PlotAuto("HigherAfterEntry",HigherAfterEntry);
如图,下面的横线是HigherAfterEntry输出后的值,开仓后最高价竟然比开仓价更低,实在是搞笑,上面的曲线是该策略的跟踪止损线,是通过HigherAfterEntry加上一定系数的开盘价作为跟踪止损标的。下面给出TBQ自带的计算表达式,大家参考一下。
好了,该策略分析完毕,总结一下,主要是两点问题需要考虑,开仓部分引用当前K的H和L,会在实盘时造成信号闪烁;再就是计算开仓后的极值部分函数错误,导致后面的跟踪止损模块发生根本性的错误,但是它加上了开盘价的修正,所以又导致了该跟踪模块相对来说还可以用。
该策略的亮点我觉得在开仓部分,运用了多重过滤,有大周期均线判断多空,有相邻K判断突破力度,有类似布林带的突破确认。该策略能实现正收益,我觉得主要就是开仓部分做到了严格的过滤,能够做到顺势,但是由此带来的缺点就是开仓次数很少,50000个小时竟然单品种平均开仓次数在50左右,这个开仓次数加上收益回撤比,我相信很少有人能坚持用下去的。但该策略在这么多问题的情况下能做到正期望,我觉得是值得我们思考的。
总的来说,该策略满分10分,我给5分吧,不及格。
好了,本次的分享就到这里,我是拥有海量高质量实盘源码的量化交易者,展现各种各样的量化策略和交易知识,提供无限的交易可能,欢迎大家多交流多分享。