在开拓者TBQuant中实现箱体突破(平台突破、上升矩形和下降矩形)自动交易

策略源码 / 3646人浏览 / 0人评论

近期,几个客户询问能不能写箱体突破(也可以说:平台突破、上升矩形和下降矩形),这样的经典图形技术分析的策略。这个问题很早之前也多次想到过,感觉有点困难,可能主要也是缺乏推动力吧,就一直没有实现过这样的策略。

直到最近杭州郑总过来交流期间,多次提到想实现平台突破、收敛三角形、趋势线类似的经典图形技术分析的策略,给我找了几张示例截图,说,要是能实现这些就好了。虽然这些图形都是我熟知的形态,要写起来还是有点愁的。恰好过了几天又有一个客户咨询能不能给他一个策略加个箱体突破过滤开仓,我感觉非写不可了,不假思索也就答应了。经过几天的写码和反复测试,终于在情人节那天下午写出了大体差不多的效果。

下面分享一下具体的实现过程,供大家参考:

1.求出转折高低点

在开拓者TBQuant中通过Pivot转折点函数,求出类似ZigZag函数那样的高低点,为什么不直接用ZigZag函数呢,ZigZag函数计算过程比较复杂,引用未来数据较多,而且很难确定箱体最后一个高低点的确认位置(注意是确认位置,而不是高低点位置本身),这关系到本策略是否含有未来数据的关键,所以,要自己通过Pivot转折点函数来计算高低点,这样各个后续计算环节都在自己可控之中。关键的计算转折点的代码如下:

//求转折高点
ret = Pivot(High,Length,LeftStrength,RightStrength,1,1,PivotPrice, PivotBar);

//求转折低点
ret = Pivot(Low,Length,LeftStrength,RightStrength,1,-1,PivotPrice, PivotBar);

2.分别找出高点和低点相近的区间

在找出高点和低点分别在一条线上的区间,即形成箱体。高点和低点是否在一条线上,不能精确的判断,可以允许一定的误差,我的做法是,计算出最近几条高点的平均值,判断最近几个高点都在平均值的千分之几以内,则认为高点在同一个条线上,低点同理,下面的部分关键代码截图:

图示求转折点是否在同一条线上部分关键代码

3.画出高低点线

求出高低点后,只有在高点和低点同时满足在一条线上时,才判定箱体形成。然后回溯输出,从箱体形成的第一个高低点开始输出高点线和低点线,输出到当前位置,并向后延伸,等待突破。关键代码如下:

    For jj=0 To CurrentBar-arrSwHighBar[N-1]
    {
        PlotString("BoxHLine","-",MAH,Red,jj);
    }

4.突破后箱体失效

直接上关键部分代码截图:

图示突破后箱体失效关键部分代码截图

5.入场及出场

在实际交易中,该策略最好是半自动交易,人工过滤一下虚假突破和识别出的形态不好的箱体,在本策略示例中,我直接用了突破即开仓,设置多头止损设在箱体的下沿,空头止损设在箱体的上沿,出场以跟踪止盈止损的方式出场。随便回测了几个品种,有指数,有主连,有的胜率高,有的胜率低,和允许误差的比例、计算转折点的周期、跟踪止盈止损的参数也有很大的关系,大家可以自行研究测试,加工作室微信也可以交流分享相关问题。

本工作室提供该策略源码,请加工作室微信联系或者直接在工作淘宝店购买!

淘宝店地址

6.部分效果截图

图示rb888 30分钟箱体突破(做多)

图示OI000 30分钟箱体突破(做多)

图示rb000 5分钟箱体突破(做空)

本文由君莅天下量化编写服务工作室原创编辑,转载请注明出处

2023年2月14日 漫天

0 条评论

还没有人发表评论

发表评论 取消回复

记住我的信息,方便下次评论
有人回复时邮件通知我