MACD添加标注及指令 (文华财经WH8赢智V8.2)

投资者咨询:MACD添加标注及指令 (文华财经WH8赢智V8.2)
来源:文华财经  日期:2018-10-24 10:27
 一、请老师根据下面原理和语句增加:”高位死叉“,”二次死叉“,还有 ”高位金叉“,”低位死叉“ 并标注,谢谢!
DIFF:EMA(CLOSE,12)-EMA(CLOSE,26);
DEA:EMA(DIFF,9);
MACD:2*(DIFF-DEA),LINETHICK1;
连续走强:LAST(MACD>REF(MACD,1) AND MACD>0,9,3),LINETHICK1,COLOR0030FF;
强势回调:LAST(MACD<REF(MACD,1) AND MACD>0,7,3),LINETHICK1,COLOR0030FF;
连续走弱:LAST(MACD<REF(MACD,1) AND MACD<0,9,5),LINETHICK1,COLOR00FF30;
连续反弹:LAST(MACD>REF(MACD,1) AND MACD<0,5,3),LINETHICK1,COLOR00FF30;
STICKLINE(MACD>=0,MACD,0,2,1),COLORF00FF0;
STICKLINE(MACD<0,MACD,0,2,1),COLORWHITE;
STICKLINE(MACD<REF(MACD,1) AND MACD>0,0,MACD,2.2,0 ),COLOR00CCFF;
STICKLINE(MACD<REF(MACD,1) AND MACD>0,0,MACD,1.65,0 ),COLOR00DDFF;
STICKLINE(MACD<REF(MACD,1) AND MACD>0,0,MACD,1.1,0 ),COLOR00EEFF;
STICKLINE(MACD<REF(MACD,1) AND MACD>0,0,MACD,0.55,0 ),COLOR00FFFF;
STICKLINE(MACD>=REF(MACD,1) AND MACD>0,0,MACD,2.2,0 ),COLOR0022CC;
STICKLINE(MACD>=REF(MACD,1) AND MACD>0,0,MACD,1.65 ,0 ),COLOR0033DD;
STICKLINE(MACD>=REF(MACD,1) AND MACD>0,0,MACD,1.1 ,0 ),COLOR0044EE;
STICKLINE(MACD>=REF(MACD,1) AND MACD>0,0,MACD,0.55 ,0 ),COLOR0055FF;
STICKLINE(MACD>REF(MACD,1) AND MACD<0,0,MACD,2.2,0 ),COLORCC22BB;
STICKLINE(MACD>REF(MACD,1) AND MACD<0,0,MACD,1.65,0 ),COLORDD33BB;
STICKLINE(MACD>REF(MACD,1) AND MACD<0,0,MACD,1.1,0 ),COLOREE44BB;
STICKLINE(MACD>REF(MACD,1) AND MACD<0,0,MACD,0.55 ,0 ),COLORFF55BB;
STICKLINE(MACD<=REF(MACD,1) AND MACD<0,0,MACD,2.2,0 ),COLORFFCC22;
STICKLINE(MACD<=REF(MACD,1) AND MACD<0,0,MACD,1.65 ,0 ),COLORFFDD33;
STICKLINE(MACD<=REF(MACD,1) AND MACD<0,0,MACD,1.1 ,0 ),COLORFFEE44;
STICKLINE(MACD<=REF(MACD,1) AND MACD<0,0,MACD,0.55 ,0 ),COLORFFFF55;
IF(DIFF<0,DIFF,0),COLORRED,LINETHICK1;
IF(DIFF<0,0,DIFF),COLORYELLOW,LINETHICK1;
IF(DIFF<DEA,DIFF,DEA),COLOR00FF00,LINETHICK1;
IF(DIFF>DEA,DEA,DEA),COLORBLUE,LINETHICK1;
低位金叉:=CROSS(DIFF,DEA) AND DIFF<-0.1;
STICKLINE(低位金叉,0,-0.10,6,0),COLORYELLOW;
DRAWTEXT(低位金叉,-0.05,' 低位金叉'),COLORYELLOW;
JCCOUNT:=COUNT(CROSS(DIFF,DEA),BARSLAST(DEA>=0));
二次金叉:=CROSS(DIFF,DEA) AND DEA<0 AND COUNT(JCCOUNT=2,21)=1;
STICKLINE(二次金叉,0,-0.10,6,0),COLORFF00FF;
DRAWICON(二次金叉,DEA*1.04,13) ;
DRAWTEXT(二次金叉,-0.08,' 二次金叉'),COLORFF00FF;
A11:=BARSLAST(REF(CROSS(DIFF,DEA),1));
底背离:=REF(CLOSE,A11+1)>CLOSE AND DIFF>REF(DIFF,A11+1) AND CROSS(DIFF,DEA);
STICKLINE(底背离,0,0.13,6,0),COLORRED;
DRAWTEXT(底背离,DEA,' 底背离'),COLORRED;
A22:=BARSLAST(REF(CROSS(DEA,DIFF),1));
顶背离:=REF(CLOSE,A22+1)<CLOSE AND REF(DIFF,A22+1)>DIFF AND CROSS(DEA,DIFF);
DRAWTEXT(顶背离,DEA,' 顶背离'),COLORGREEN;

二,如果第一位条件达成开仓,又出现第二或第三条件下要加仓,也许条件都是一样的,就好比第一金叉开仓,接着出现第二金叉加仓,第三金叉再加仓,中间未达到卖出条件,不然就不算;同理多空都是如此,语法怎么写?
老师,可按此示范写一下:
比如:0轴下第一金叉平买开,0轴下第二金叉加仓0轴下第三金叉再加仓,中间未上0轴;
         0轴上第一死叉平卖开,0轴上第二死叉加仓0轴上第三死叉再加仓,中间未下0轴;
        平仓模式,死叉后下0轴平金叉后上0轴平多,
 这是因为0轴下买开三次,上0轴只出现一次死叉,陆续平仓,不是第一点就全平,但必须在又下0轴前清空;

谢谢!
 
技术人员回复
日期:2018-10-24 10:36
红色参数为标注高度,您需要根据不同的合约和需求自行调整,参考:

DIFF:EMA(CLOSE,12)-EMA(CLOSE,26);
DEA:EMA(DIFF,9);
MACD:2*(DIFF-DEA),LINETHICK1;
连续走强:LAST(MACD>REF(MACD,1) AND MACD>0,9,3),LINETHICK1,COLOR0030FF;
强势回调:LAST(MACD<REF(MACD,1) AND MACD>0,7,3),LINETHICK1,COLOR0030FF;
连续走弱:LAST(MACD<REF(MACD,1) AND MACD<0,9,5),LINETHICK1,COLOR00FF30;
连续反弹:LAST(MACD>REF(MACD,1) AND MACD<0,5,3),LINETHICK1,COLOR00FF30;
STICKLINE(MACD>=0,MACD,0,2,1),COLORF00FF0;
STICKLINE(MACD<0,MACD,0,2,1),COLORWHITE;
STICKLINE(MACD<REF(MACD,1) AND MACD>0,0,MACD,2.2,0 ),COLOR00CCFF;
STICKLINE(MACD<REF(MACD,1) AND MACD>0,0,MACD,1.65,0 ),COLOR00DDFF;
STICKLINE(MACD<REF(MACD,1) AND MACD>0,0,MACD,1.1,0 ),COLOR00EEFF;
STICKLINE(MACD<REF(MACD,1) AND MACD>0,0,MACD,0.55,0 ),COLOR00FFFF;
STICKLINE(MACD>=REF(MACD,1) AND MACD>0,0,MACD,2.2,0 ),COLOR0022CC;
STICKLINE(MACD>=REF(MACD,1) AND MACD>0,0,MACD,1.65 ,0 ),COLOR0033DD;
STICKLINE(MACD>=REF(MACD,1) AND MACD>0,0,MACD,1.1 ,0 ),COLOR0044EE;
STICKLINE(MACD>=REF(MACD,1) AND MACD>0,0,MACD,0.55 ,0 ),COLOR0055FF;
STICKLINE(MACD>REF(MACD,1) AND MACD<0,0,MACD,2.2,0 ),COLORCC22BB;
STICKLINE(MACD>REF(MACD,1) AND MACD<0,0,MACD,1.65,0 ),COLORDD33BB;
STICKLINE(MACD>REF(MACD,1) AND MACD<0,0,MACD,1.1,0 ),COLOREE44BB;
STICKLINE(MACD>REF(MACD,1) AND MACD<0,0,MACD,0.55 ,0 ),COLORFF55BB;
STICKLINE(MACD<=REF(MACD,1) AND MACD<0,0,MACD,2.2,0 ),COLORFFCC22;
STICKLINE(MACD<=REF(MACD,1) AND MACD<0,0,MACD,1.65 ,0 ),COLORFFDD33;
STICKLINE(MACD<=REF(MACD,1) AND MACD<0,0,MACD,1.1 ,0 ),COLORFFEE44;
STICKLINE(MACD<=REF(MACD,1) AND MACD<0,0,MACD,0.55 ,0 ),COLORFFFF55;
IF(DIFF<0,DIFF,0),COLORRED,LINETHICK1;
IF(DIFF<0,0,DIFF),COLORYELLOW,LINETHICK1;
IF(DIFF<DEA,DIFF,DEA),COLOR00FF00,LINETHICK1;
IF(DIFF>DEA,DEA,DEA),COLORBLUE,LINETHICK1;
低位金叉:=CROSS(DIFF,DEA) AND DIFF<-0.1;
低位死叉:=CROSSDOWN(DIFF,DEA) AND DIFF<-0.1;
高位金叉:=CROSS(DIFF,DEA) AND DIFF>0.1;
高位死叉:=CROSSDOWN(DIFF,DEA) AND DIFF>0.1;
STICKLINE(低位金叉,0,-0.10,6,0),COLORYELLOW;
DRAWTEXT(低位金叉,-0.05,' 低位金叉'),COLORYELLOW;
DRAWTEXT(低位死叉,-0.07,' 低位死叉'),COLORYELLOW;
DRAWTEXT(高位金叉,0.05,' 高位金叉'),COLORYELLOW;
DRAWTEXT(高位死叉,0.07,' 高位死叉'),COLORYELLOW;
JCCOUNT:=COUNT(CROSS(DIFF,DEA),BARSLAST(DEA>=0));
SCCOUNT:=COUNT(CROSSDOWN(DIFF,DEA),BARSLAST(DEA<=0));
二次金叉:=CROSS(DIFF,DEA) AND DEA<0 AND COUNT(JCCOUNT=2,21)=1;
二次死叉:=CROSSDOWN(DIFF,DEA) AND DEA>0 AND COUNT(SCCOUNT=2,21)=1;
STICKLINE(二次金叉,0,-0.10,6,0),COLORFF00FF;
DRAWICON(二次金叉,DEA*1.04,13) ;
DRAWTEXT(二次金叉,-0.08,' 二次金叉'),COLORFF00FF;
DRAWTEXT(二次死叉,-0.1,'二次死叉'),COLORFF00FF;
A11:=BARSLAST(REF(CROSS(DIFF,DEA),1));
底背离:=REF(CLOSE,A11+1)>CLOSE AND DIFF>REF(DIFF,A11+1) AND CROSS(DIFF,DEA);
STICKLINE(底背离,0,0.13,6,0),COLORRED;
DRAWTEXT(底背离,DEA,' 底背离'),COLORRED;
A22:=BARSLAST(REF(CROSS(DEA,DIFF),1));
顶背离:=REF(CLOSE,A22+1)<CLOSE AND REF(DIFF,A22+1)>DIFF AND CROSS(DEA,DIFF);
DRAWTEXT(顶背离,DEA,' 顶背离'),COLORGREEN;
DIFF<0&&DEA<0&&CROSS(DIFF,DEA),BPK(1);
DIFF>0&&DEA>0&&CROSSDOWN(DIFF,DEA),SPK(1);
(CROSSDOWN(DIFF,0)||CROSSDOWN(DEA,0))&&BKVOL>0,SP(BKVOL);
(CROSS(DIFF,0)||CROSS(DEA,0))&&SKVOL>0,BP(SKVOL);
TRADE_AGAIN(3);
投资者咨询:MACD添加标注及指令 (文华财经WH8赢智V8.2)
来源:文华财经  日期:2018-10-24 10:27
 老师,这二句什么意思?感觉不对呀
(CROSSDOWN(DIFF,0)||CROSSDOWN(DEA,0))&&BKVOL>0,SP(BKVOL);
(CROSS(DIFF,0)||CROSS(DEA,0))&&SKVOL>0,BP(SKVOL);

我的意思是
如果在0轴上死叉卖开,连续死叉(中间未下0轴)就连续卖开加仓,下0轴出现金叉就卖平买开,连续金叉(中间未上0轴,一直在0轴下)就连续 买开加仓,要是在0轴下未形成金叉则上0轴时卖平(卖仓全部平仓);
反之一样,这样的意思!谢谢!
技术人员回复
日期:2018-10-25 12:12
这两就话的意思是:要是在0轴下未形成金叉则上0轴时卖平(卖仓全部平仓),您理解下
投资者咨询:MACD添加标注及指令 (文华财经WH8赢智V8.2)
来源:文华财经  日期:2018-10-24 10:27
 意思是0轴上死叉形成的卖开,正常要到0轴下且形成金叉才卖平,如果下了0轴,但在0轴下未形成金叉,则在DIFF或DEA上0轴时卖平,反之也是如此
技术人员回复
日期:2018-10-25 14:28
这样改下:

DIFF:EMA(CLOSE,12)-EMA(CLOSE,26);
DEA:EMA(DIFF,9);
MACD:2*(DIFF-DEA),LINETHICK1;
连续走强:LAST(MACD>REF(MACD,1) AND MACD>0,9,3),LINETHICK1,COLOR0030FF;
强势回调:LAST(MACD<REF(MACD,1) AND MACD>0,7,3),LINETHICK1,COLOR0030FF;
连续走弱:LAST(MACD<REF(MACD,1) AND MACD<0,9,5),LINETHICK1,COLOR00FF30;
连续反弹:LAST(MACD>REF(MACD,1) AND MACD<0,5,3),LINETHICK1,COLOR00FF30;
STICKLINE(MACD>=0,MACD,0,2,1),COLORF00FF0;
STICKLINE(MACD<0,MACD,0,2,1),COLORWHITE;
STICKLINE(MACD<REF(MACD,1) AND MACD>0,0,MACD,2.2,0 ),COLOR00CCFF;
STICKLINE(MACD<REF(MACD,1) AND MACD>0,0,MACD,1.65,0 ),COLOR00DDFF;
STICKLINE(MACD<REF(MACD,1) AND MACD>0,0,MACD,1.1,0 ),COLOR00EEFF;
STICKLINE(MACD<REF(MACD,1) AND MACD>0,0,MACD,0.55,0 ),COLOR00FFFF;
STICKLINE(MACD>=REF(MACD,1) AND MACD>0,0,MACD,2.2,0 ),COLOR0022CC;
STICKLINE(MACD>=REF(MACD,1) AND MACD>0,0,MACD,1.65 ,0 ),COLOR0033DD;
STICKLINE(MACD>=REF(MACD,1) AND MACD>0,0,MACD,1.1 ,0 ),COLOR0044EE;
STICKLINE(MACD>=REF(MACD,1) AND MACD>0,0,MACD,0.55 ,0 ),COLOR0055FF;
STICKLINE(MACD>REF(MACD,1) AND MACD<0,0,MACD,2.2,0 ),COLORCC22BB;
STICKLINE(MACD>REF(MACD,1) AND MACD<0,0,MACD,1.65,0 ),COLORDD33BB;
STICKLINE(MACD>REF(MACD,1) AND MACD<0,0,MACD,1.1,0 ),COLOREE44BB;
STICKLINE(MACD>REF(MACD,1) AND MACD<0,0,MACD,0.55 ,0 ),COLORFF55BB;
STICKLINE(MACD<=REF(MACD,1) AND MACD<0,0,MACD,2.2,0 ),COLORFFCC22;
STICKLINE(MACD<=REF(MACD,1) AND MACD<0,0,MACD,1.65 ,0 ),COLORFFDD33;
STICKLINE(MACD<=REF(MACD,1) AND MACD<0,0,MACD,1.1 ,0 ),COLORFFEE44;
STICKLINE(MACD<=REF(MACD,1) AND MACD<0,0,MACD,0.55 ,0 ),COLORFFFF55;
IF(DIFF<0,DIFF,0),COLORRED,LINETHICK1;
IF(DIFF<0,0,DIFF),COLORYELLOW,LINETHICK1;
IF(DIFF<DEA,DIFF,DEA),COLOR00FF00,LINETHICK1;
IF(DIFF>DEA,DEA,DEA),COLORBLUE,LINETHICK1;
低位金叉:=CROSS(DIFF,DEA) AND DIFF<-0.1;
低位死叉:=CROSSDOWN(DIFF,DEA) AND DIFF<-0.1;
高位金叉:=CROSS(DIFF,DEA) AND DIFF>0.1;
高位死叉:=CROSSDOWN(DIFF,DEA) AND DIFF>0.1;
STICKLINE(低位金叉,0,-0.10,6,0),COLORYELLOW;
DRAWTEXT(低位金叉,-0.05,' 低位金叉'),COLORYELLOW;
DRAWTEXT(低位死叉,-0.07,' 低位死叉'),COLORYELLOW;
DRAWTEXT(高位金叉,0.05,' 高位金叉'),COLORYELLOW;
DRAWTEXT(高位死叉,0.07,' 高位死叉'),COLORYELLOW;
JCCOUNT:=COUNT(CROSS(DIFF,DEA),BARSLAST(DEA>=0));
SCCOUNT:=COUNT(CROSSDOWN(DIFF,DEA),BARSLAST(DEA<=0));
二次金叉:=CROSS(DIFF,DEA) AND DEA<0 AND COUNT(JCCOUNT=2,21)=1;
二次死叉:=CROSSDOWN(DIFF,DEA) AND DEA>0 AND COUNT(SCCOUNT=2,21)=1;
STICKLINE(二次金叉,0,-0.10,6,0),COLORFF00FF;
DRAWICON(二次金叉,DEA*1.04,13) ;
DRAWTEXT(二次金叉,-0.08,' 二次金叉'),COLORFF00FF;
DRAWTEXT(二次死叉,-0.1,'二次死叉'),COLORFF00FF;
A11:=BARSLAST(REF(CROSS(DIFF,DEA),1));
底背离:=REF(CLOSE,A11+1)>CLOSE AND DIFF>REF(DIFF,A11+1) AND CROSS(DIFF,DEA);
STICKLINE(底背离,0,0.13,6,0),COLORRED;
DRAWTEXT(底背离,DEA,' 底背离'),COLORRED;
A22:=BARSLAST(REF(CROSS(DEA,DIFF),1));
顶背离:=REF(CLOSE,A22+1)<CLOSE AND REF(DIFF,A22+1)>DIFF AND CROSS(DEA,DIFF);
DRAWTEXT(顶背离,DEA,' 顶背离'),COLORGREEN;
DIFF<0&&DEA<0&&CROSS(DIFF,DEA),BPK(1);
DIFF>0&&DEA>0&&CROSSDOWN(DIFF,DEA),SPK(1);
(CROSSDOWN(DIFF,0)&&NOT(EXIST(DIFF=DEA,BARSLAST(CROSS(DIFF,0))))||CROSSDOWN(DEA,0)&&NOT(EXIST(DIFF=DEA,BARSLAST(CROSS(DEA,0)))))&&BKVOL>0,SP(BKVOL);
(CROSS(DIFF,0)&&NOT(EXIST(DIFF=DEA,BARSLAST(CROSSDOWN(DIFF,0))))||CROSS(DEA,0)&&NOT(EXIST(DIFF=DEA,BARSLAST(CROSSDOWN(DEA,0)))))&&SKVOL>0,BP(SKVOL);
TRADE_AGAIN(3);
投资者咨询:MACD添加标注及指令 (文华财经WH8赢智V8.2)
来源:文华财经  日期:2018-10-24 10:27
 回测结果一模一样,没有任何变化,可能是哪里有问题?
看下图,连续3次卖开加仓,但少了第4次加仓(看图形0轴上有4个死叉),另外竟然在下0轴时卖平了,这样就不对了,要等0轴下的金叉才能卖平,除非在0轴下未形成金叉,0轴上的金叉不能算
投资者咨询:MACD添加标注及指令 (文华财经WH8赢智V8.2)
来源:文华财经  日期:2018-10-24 10:27
 奇怪,图怎么没出来,不是点上传附件吗?

图片点击可在新窗口打开查看
投资者咨询:MACD添加标注及指令 (文华财经WH8赢智V8.2)
来源:文华财经  日期:2018-10-24 10:27
 TRADE_AGAIN(3);
里面的参数是限定几个信号,要是不定呢,有多少全部计算在内,应该怎么改?

谢谢老师!
技术人员回复
日期:2018-10-25 15:38
图片可以的看到的。

没有第四次加仓,是因为1楼要求了三次,没有说第四次,所以模型只写到3次加仓

如果需要0轴上无限次加仓需要把最后一行作如下更改,需要限制几次加仓,数值就写几:

TRADE_AGAIN(10000);

另外,您再仔细核对一下平仓信号,图中倒数第三根K线对应副图倒数第三个柱子

该柱子上的DIFF值(也就是绿线),是存在上穿0轴的情况的,并且在此次上穿之前一直到最近一次下穿0轴之间并未形成金叉

因此这个平仓信号也是没问题的,不能用肉眼判断,需要把鼠标光标调出来查看对应的数值才可以



图片点击可在新窗口打开查看