朋友投稿:
编写一个横盘突破的指标,横盘的标准是:单根均线走平后,MACD处于0轴附近,突破的标准是看KDJ,当J值上穿0轴为多头,当J值下穿0轴为空头。均线走平要满足近期K线波动率。
整理需求:
要创建一个横盘突破的指标,我们需要结合多个技术指标:均线、MACD和KDJ。以下是一个基于他提供的思路整理的步骤和策略:
1.均线走平:
选择一个合适的均线周期,例如20日均线。
判断均线是否走平,可以通过计算均线的斜率或者观察均线在一定时间窗口(比如过去N天)内的变化范围来实现。如果斜率接近0或者变化范围很小,则可以认为均线走平。
同时,为了确保均线走平是在一个相对稳定的范围内,可以加上对近期K线波动率的限制。例如,可以计算过去M天(M < N)的最高价和最低价的差值,如果这个差值小于某个阈值,则认为是低波动率。
2.MACD处于0轴附近:
使用标准的MACD计算方法,包括快线(DIF)和慢线(DEA)以及柱状图(MACD柱)。
判断MACD是否处于0轴附近,可以通过观察DIF和DEA线是否接近0轴,并且MACD柱的长度是否很小(接近于0)来实现。
3.KDJ指标:
使用KDJ随机指标,包括K值、D值和J值。
判断KDJ的J值是否上穿或下穿0轴。
4.策略整合:
当均线走平且MACD处于0轴附近时,开始关注KDJ指标的J值。
如果J值上穿0轴,则认为是多头突破,可以发出买入信号。
如果J值下穿0轴,则认为是空头突破,可以发出卖出信号。
5.编程实现:
编写代码来计算均线、MACD和KDJ指标。
添加逻辑来检测均线走平和MACD处于0轴附近的条件。
添加逻辑来处理KDJ指标的J值上穿或下穿0轴的情况,并发出相应的交易信号。
6.测试和优化:
在历史数据上进行回测,验证指标的有效性。
根据回测结果调整参数(如均线周期、N和M的值、MACD和KDJ的参数等),以优化指标的性能。
效果展示:

源码展示:
M1:MA(C,60),COLORWHITE,LINETHICK2;DIF:=EMA(C,12)=EMA(C,26);DEA:=EMA(DIF,9);MACD:=2*(DIF-DEA);RSV:=(C-LLV(L,9))/(HHV(H,9)-LLV(L,9))*100;K:=SMA(RSV,3,1);D:=SMA(K,3,1);J:=3*K-2*D;MTR:MAX(MAX((H-L),ABS(REF(C,1)-H)),ABS(REF(C,1)-L));ATR:MA(MTR,14);ZD:=HHV(M1,10);ZX:=LLV(M1,10);ZP:=ZD-ZX<ATR/2;DIF0:=ABS(DIF)<5;DEA0:=ABS(DEA)<5;MACD0:=ABS(MACD)<5;UPT:=CROSS(J,0);DOWNT:=CROSS(100,J);DRAWTEXT(ZP&&DIF0&&DEA0&&MACD0&&UPT,L*0.99,'多头');DRAWTEXT(ZP&&DIF0&&DEA0&&MACD0&&DOWNT,H*1.01,'空头')
夜雨聆风