代码一(按照wh8默认背离函数编写,不采纳):
DIFF: EMA(CLOSE,SHORT)-EMA(CLOSE,LONG);//短周期与长周期的收盘价的指数平滑移动平均值做差。
DEA: EMA(DIFF,M);//DIFF的M个周期指数平滑移动平均
MACD: 2*(DIFF-DEA),COLORSTICK;//DIFF减DEA的2倍画柱状线为MACD值
LEN: CONDBARS(CROSSUP(DIFF, DEA), CROSSDOWN(DIFF, DEA));//记录这次金叉到上一次死叉之间的周期数
BKTJ: DIVERGENCE(C,MACD,2,20,-1);//买入条件:从这次金叉到上一次死叉之间,收盘价与MACD存在底背离
BLTJ: COUNT(BKTJ, LEN)>0;//判断存在底背离的条件
BLTJ AND CROSSUP(DIFF,DEA),BK;//存在底背离且金叉时买入
CROSSDOWN(DIFF,DEA),SP;//顶背离或死叉时卖出
AUTOFILTER;
缺点:wh8默认函数DIVERGENCE(X1,X2,S,L,HL),L不可以为变量,所以设了固定值20,回测下来效果不佳。
代码二:(自编代码,比采用默认函数好)
DIFF:EMA(CLOSE,SHORT)-EMA(CLOSE,LONG);//短周期与长周期的收盘价的指数平滑移动平均值做差。
DEA:EMA(DIFF,M);//DIFF的M个周期指数平滑移动平均
MACD:2*(DIFF-DEA),COLORSTICK;//DIFF减DEA的2倍画柱状线为MACD值
LEN:CONDBARS(CROSSUP(DIFF, DEA), CROSSDOWN(DIFF, DEA));//记录这次金叉到上一次死叉之间的周期数
BLTJ:REF(C, LEN)>C;//当前收盘价低于上次死叉时的收盘价
BLTJ AND CROSSUP(DIFF,DEA),BK;//存在底背离且金叉时买入
CROSSDOWN(DIFF,DEA),SP;//死叉时卖出
AUTOFILTER;
|