下面我们来进行编程。编程的时候,能不引用,就尽量不引用,我们今天编MACD底背离,就不要去引用MACD指标,而是直接把MACD的代码拷贝过来,如下:—————SHORT:=12;LONG:=26;MID:=9;DIF:=EMA(CLOSE,SHORT)-EMA(CLOSE,LONG);DEA:=EMA(DIF,MID);MACD:=(DIF-DEA)*2;{上面这几句,是MACD指标的源代码,我把输出全部改为赋值,然后画线的语句全部删除,只留下了两条线,即DIF和DAE,以及MACD的赋值,MACD其实在本文里用不到,可以删除,也可以保留,不影响选股}金叉:=CROSS(DIF,DEA);{我们定义赋值MACD金叉,为简单起见,直接取名为金叉}金叉1:=BARSLAST(金叉);{金叉1,表示最近一次金叉,距离现在的K线数}金叉2:=BARSLAST(REF(金叉,1));{金叉2,表示前一次金叉,距离现在的K线数,注意,我这里用的是REF(金叉,1),表示前一次金叉,这个用法很多人不会,也就很难编写这个公式了}XG:金叉 AND REF(DIF,金叉1+1)>REF(DIF,金叉2+1) AND EVERY(DEA<0,金叉2) AND REF(C,金叉1+1)<REF(C,金叉2+1);{这里定义选股条件,首先是金叉,也就是选股当天,MACD形成金叉。REF(DIF,金叉1+1)>REF(DIF,金叉2+1) 表示金叉时,DIF值比前一次IDF的值大,也就是金叉点提高。EVERY(DEA<0,金叉2)表示,从前一次金叉以来,DEA一直小于0,即在零轴下方。REF(C,金叉1+1)<REF(C,金叉2+1)表示金叉时,收盘价比前一次金叉时的收盘价低,这里要注意,我在每个金叉距离现在的K线数上又加了1,然后把所有条件用AND进行连接。}—————-把上面分割线内的内容全部复制,做成选股公式。显然,我们通过观察,选到的股票,全部符合我们的思路模型。
思维延伸:
我们测试的是MACD底背离,那么其他指标的底背离也是一样的,把想要做底背离的指标代码拷贝过来,先定义金叉或者拐点,金叉或拐点抬高,股价下降。那么MACD使用的是0轴,一般KDJ底背离可以使用50轴,也就是50下方形成J值底背离,也就是那条紫色的线在50轴下方,金叉K或者D,也可以使用20轴下方,J线的拐点底背离。其他指标的底背离方法,也是大同小异的。最后,提供以下常用语句,以方便朋友们编写公式时参考使用:1)今收盘对于N日内最低收盘价的涨幅(%)(c-llv(c,n))/llv(c,n)*100;2)今收盘价对于N日最高收盘价的跌幅(%)(HHV(C,N)-C)/HHV(C,N)*100;3)股价在过去N日内运行空间的相对位置 (C-LLV(L,N))/(HHV(H,N)-LLV(L,N))*100;4)股价上方N1%至N2%处的筹码(%)aa:=winner(c+c*n2/100)*100;bb:=winner(c+c*n1/100)*100;aa-bb5)股价下方N1%至N2%处的筹码(%)(winner(c-c*n1/100)-winner(c-c*n2/100))*100;6)收盘价N%处的套牢盘 100-(winner(c*N/100))*100;7)收盘价N%处的获利盘 winner(c*N/100)*100;8)下影线 (MIN(O,C)-L)/L*100;9)上影线 (h-max(o,c))/max(o,c)*100;10)本周期的涨跌幅 (c-ref(c,1))/ref(c,1)*100;11)振幅 (h-l)/l*100;12)均线金叉(M.N为均线周期) cross(ma(c,m),ma(c,n))13)均线多头排列a1:=ma(c,n1);a2:=ma(c,n2);a3:=ma(c,n3);a4:=ma(c,n4);count(a1>a2 and a2>a3 and a3>a4,3);14) 均线空头排列a1:=ma(c,n1);a2:=ma(c,n2);a3:=ma(c,n3);a4:=ma(c,n4);count(a1<a2 and a2<a3 and a3<a4,3);15)N日均线向下aa:=ma(c,n);bb:=ref(aa,2);aa<bb16)向前N日至M日出现过均线死叉(P1<P2)aa:=ma(c,p1);bb:=ma(c,p2);cc:=ref(cross(bb,aa),n);count(cc,m);17)今日成交量大于N日以来的均量 VOL>MA(VOL,N);18)低位密集A1:=COST(85);A2:=COST(15);A3:=A1-A2;A4:=(A1+A2)/2;A5:=A3/A4*100<10;B1:=HHV(H,120);B2:=LLV(L,120);B3:=B1-B2;B4:=(A4-B2)<B3/2;A5 AND B4;19)换手率 VOL/CAPITAL*100;20)N日盈亏V1:=VOL/SUM(VOL,N);V2:=DMA(CLOSE,V1);V3: (CLOSE-V2)/V2*100;21)强势整理{参数M、N分别代表周期和幅度 m:1 20 2 n:1 20 5}a1:=abs(close-open)/open<0.015;a2:=count(a1,m)=m;a3:=ref(o,m)<ref(close,m) andref(close,m)/ref(close,m+1)>1+n/100;a2 and a322)高开大阴{参数m,n分别代表幅度 m:1 10 4 n:1 20 5}OPEN>CLOSE AND OPEN/REF(C,1) >= 1+M/100 AND CLOSE/OPEN<=1-N/10023)低开大阳线{参数m,n分别代表幅度 m:1 10 4 n:1 20 7}OPEN<CLOSE AND OPEN/REF(C,1) <= 1-M/100 AND CLOSE/OPEN>=1+N/100二、编写公式时常用的通式(这是在网上摘录的,仅供参考)常用的通式:{设A,B,R为三条曲线;N,M等为参数。如:A:ma(c,N) ; B:=ma(c,M); R:=c/ref(c,1)-1;等。。。}(一).曲线在N天内的平均变化率Fa:=(A/ref(A,N)-1)/N; Fb:=(B/ref(B,N)-1)/N; Fr:=(R/ref(R,N)-1)/N;(二).变动角∮a:=atan(Fa); ∮b:=atan(Fb); ∮r:=atan(Fr);(三).曲线上相距N天的两点的连线的斜率Ka:=(A-ref(A,N))/N; Kb:=(B-ref(B,N))/N; Kr:=(R-ref(R,N))/N;(四).倾角∠a:=atan(Ka); ∠b:=atan(Kb); ∠r:=atan(Kr);(五).交叉点Cab:=cross(A,B);{交叉} Jab:=longcross(A,B,N);{维持 -交叉}JYa:=between(A,N,M);{介于} FWa:=range(A,N,M);{范围}(六).下拐点(由下向上转)xD1:=llvbars(A,N)=M;{以N日最低点}xD2:=ref(count(A-ref(A,1)<=0,N)=N,M) and count(A-ref(A,1)>0,M)=M;{以M日变化量的正负}xD3:=ref(count(∠a-ref(∠a,1)<=0,N)=N,M) and ∠a>0;{以当日变化角的正负}(七).上拐点(由上向下转)sD1:=hhvbars(A,N)=M;{以N日最低点}sD2:=ref(count(A-ref(A,1)>=0,N)=N,M) and count(A-ref(A,1)<0,M)=M;{以当日变化量的正负}sD3:=ref(count(∠a-ref(∠a,1)>=0,N)=N,M) and ∠a<0;{以当日变化角的正负}(八).位置(求得交叉点/拐点到当前的周期)Wz1:=barslast(Cab);{第一(交叉)点的位置}Wz2:=ref(Wz1,Wz1+1)+Wz1+2;{第二(交叉)点的位置}Wz3:=ref(Wz1,Wz2+1)+Wz2+2;{第三(交叉)点的位置}Wz4:=ref(Wz1,Wz3+1)+Wz3+2;{第四(交叉)点的位置}Wz5:=ref(Wz1,Wz4+1)+Wz4+2;{第五(交叉)点的位置}{Wzn:=ref(Wz1,Wz(n-1)+1)+Wz(n-1)+2;}(九).曲线A叠加曲线BF:=A/ref(A,1)-1;{A的变化率}Js:=ref(B,barscount(c));{叠加位置(初始)}DJ:(sum(F,0)+1)*Js;{叠加曲线(初始位置)}Jd:=ref(B,barslast(条件));{叠加位置(定点)}Dj:=(sum(F,0)+1)*Jd;{叠加曲线(预定位置)}【韩薇近期整理了一些学习资料,其中包括《磁区理论.破译K线图中的密码》、《发现庄股秘密,防止中招》、《机构特训实战教材加强版》等学习资料,想免费领取学习的股友可以加微信:sylg899,快速解决你的选股、买卖点、跟庄、看盘问题!】
评论(0)