以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  公式模型编写问题提交  (http://weistock.com/bbs/list.asp?boardid=4)
----  [求助]MACD背离的代码写法  (http://weistock.com/bbs/dispbbs.asp?boardid=4&id=59659)

--  作者:nameyang
--  发布时间:2013/12/8 21:52:17
--  [求助]MACD背离的代码写法
请教关于MACD背离的写法,想实现的效果如下:
底背离:MACD柱子拐头向上,and MACD柱子低点大于前一堆MACD柱子最小值,and (近几根K线收盘价最低价)小于(前一堆MACD柱子最小值对应的几根K线的最高价),则在本MACD上标注“买”;
顶背离:MACD柱子拐头向下,and MACD柱子高点小于前一堆MACD柱子最大值,and (近几根K线收盘价最高价)大于(前一堆MACD柱子最大值对应的几根K线的最高价),则在本MACD上标注“卖”。
如附件中图片所示
图片点击可在新窗口打开查看图片点击可在新窗口打开查看
两个细节问题:
1.MACD最小值不一定对应着股价(或收盘价)最低值,但在附近;
2.若MACD连续的几根柱子分别是1.1, 1.5,1.2, 1.3, 1.2,则两个高点考得很近, 如何忽略掉1.3这个高点,我希望两个高点之间至少要隔开个5根K线或以上
非常感谢!

--  作者:nameyang
--  发布时间:2013/12/8 21:57:19
--  
图片
--  作者:nameyang
--  发布时间:2013/12/8 22:00:07
--  
图片
图片点击可在新窗口打开查看此主题相关图片如下:macd背离.jpg
图片点击可在新窗口打开查看

--  作者:金鱼
--  发布时间:2013/12/9 6:02:52
--  
DIFF:EMA(CLOSE,S) - EMA(CLOSE,P);
DEA:EMA(DIFF,M),COLORYELLOW;
MACD:2*(DIFF-DEA), COLORSTICK;

A4:=BARSLAST(REF(CROSS(DIFF,DEA),1));
B1:=REF(H,A4+3)>REF(C,3) AND REF(DIFF,A4+3)<REF(DIFF,3) AND CROSS(DIFF,DEA);
DRAWTEXT(FILTER(B1>0,5),DIFF,\'←底背离\'),COLORYELLOW;
DRAWICON(FILTER(B1>0,5),DIFF-0.2,1);

A5:=BARSLAST(REF(CROSS(DEA,DIFF),1));
B2:=REF(H,A5+3)<REF(H,3) AND REF(DIFF,A5+3)>REF(DIFF,3) AND CROSS(DEA,DIFF);
DRAWTEXT(FILTER(B2>0,5),DIFF,\'←顶背离\'),COLORGREEN;
DRAWICON(FILTER(B2>0,5),DIFF+0.2,2);
P=26;S=12;M=9;{自己在看看修改}

--  作者:nameyang
--  发布时间:2013/12/9 10:26:47
--  
多谢金鱼兄弟,这还不完全是我想要的效果,我不是想等到金叉死叉之后才提示背离,而是想在MACD上拐或者下拐的时候就提示背离,比如前一堆红柱最高值为2.0,最高价为10,现在出现最高价为11,但是连续的红柱值为1.5,1.7,1.6,此时红柱最高值1.7小于前一堆红柱的最高值2.0,那么在1.7的红柱上标注顶背离
--  作者:fly
--  发布时间:2013/12/9 14:42:02
--  

没有具体的量化标准,搞不成


--  作者:nameyang
--  发布时间:2013/12/9 15:09:24
--  
感觉还是很明确的呀,
拿顶背离来说,就是要满足3个条件:
1.MACD红柱下拐;
2.MACD红柱最大值小于上一堆MACD红柱的最大值;
3.本次最高价大于上一堆MACD红柱对应的最高价。
这里面是有一些细节的问题会干扰到实际的效果,但是写出这个框架感觉没有问题啊,烦请大家帮帮忙,感激不尽!

--  作者:fly
--  发布时间:2013/12/9 15:20:50
--  

MACD柱子高点小于前一堆MACD柱子最大值,and (近几根K线收盘价最高价)大于(前一堆MACD柱子最大值对应的几根K线的最高价),

 

象这些,人用眼睛看,脑子一下就能看出来.

但没有具体的标准量化呀


--  作者:nameyang
--  发布时间:2013/12/9 19:56:48
--  
下面是在网上找的一段代码,该代码将MACD的前高和前低大致地标注了出来,虽然不是很全,但感觉也可以了,
现在的任务就是需要将MACD前高前低对应的高低价格再标注出来,然后将MACD前高与本高、前高点价格与本高点价格做一下比较就行,不知道这个思路能否行得通?
DIF:EMA(CLOSE,12)-EMA(CLOSE,26);
DEA:EMA(DIF,9);
MACD:(DIF-DEA)*2,COLORSTICK;
VA1:=HHVBARS(MACD,BARSLAST(MACD<0)+1);
VA2:=CROSS(BACKSET(CROSS(0,MACD),REF(VA1,1)+2),0.5);
QG:=CROSS(BACKSET(CROSS(0,MACD) OR (ISLASTBAR AND MACD>0),REF(VA1,1)+2),0.5);
前高:DRAWLINE(VA2,MACD,REF(VA2,1),REF(MACD,1),1),COLORMAGENTA;
VA3:=LLVBARS(MACD,BARSLAST(MACD>0)+1);
VA4:=CROSS(BACKSET(CROSS(MACD,0),REF(VA3,1)+2),0.5);
QD:=BARSLAST(FILTERX(CROSS(0,MACD),BARSCOUNT(C)));
前低:DRAWLINE(VA4,MACD,REF(VA4,1),REF(MACD,1),1);


--  作者:nameyang
--  发布时间:2013/12/11 14:08:19
--  关于python和回测
顶上去,希望有人帮忙解答