欢迎使用金字塔普通技术服务论坛,您可以在相关区域发表技术支持贴。
我司技术服务人员将优先处理 VIP客服论坛 服务贴,普通区问题处理速度慢,请耐心等待。谢谢您对我们的支持与理解。


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件公式模型编写问题提交 → 如何取到macd上两个峰值

   

欢迎使用金字塔普通技术服务论坛,您可以在相关区域发表技术支持贴。
我司技术服务人员将优先处理 VIP客服论坛 服务贴,普通区问题处理速度慢,请耐心等待。谢谢您对我们的支持与理解。    


  共有3648人关注过本帖树形打印复制链接

主题:如何取到macd上两个峰值

帅哥哟,离线,有人找我吗?
popypopy
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:新手上路 帖子:82 积分:0 威望:0 精华:0 注册:2020/9/21 10:56:16
如何取到macd上两个峰值  发帖心情 Post By:2020/11/6 16:00:04    Post IP:111.200.53.18[只看该作者]

下面这段代码能取到上一个macd峰值,但是我还需要取到上上一个macd峰值,请大神帮忙看看该怎么写:
diff:=ema(close,12)-ema(close,26);
dea:=ema(diff,9);
macd:=(diff-dea)*2;
a:=barslast(filter(diff=hhv(diff,barslast(diff<dea)),barslast(diff<dea)));
tt:=a+1;
ztt:=ref(tt,tt)+tt;
kk:=ref(diff,ztt-1);
msgout(1,STKNAME()&'macd前高:'&numtostr(kk,3));

 回到顶部
帅哥哟,离线,有人找我吗?
FireScript
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:14496 积分:0 威望:0 精华:0 注册:2017/7/4 13:40:18
  发帖心情 Post By:2020/11/6 16:13:13    Post IP:58.246.57.26[只看该作者]

你这个峰值是怎么定义的?  从你这个代码去理解的话,思路不是很明确。 你用文字描述下你这个思路我看下吧。


命数如织,当如磐石。
 回到顶部
帅哥哟,离线,有人找我吗?
popypopy
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:新手上路 帖子:82 积分:0 威望:0 精华:0 注册:2020/9/21 10:56:16
  发帖心情 Post By:2020/11/6 21:03:20    Post IP:114.247.184.162[只看该作者]

每一次diff金叉dea然后再死叉dea就构成一次diff大于dea的区间,在该区间内最大的diff值就是我需要取到的的峰值,如下面截图中红圈标注的位置就构成了若干个峰值。我需要取到当前周期之前的上两个diff的峰值,并且获取到峰值所属的bar距离现在的周期。

图片点击可在新窗口打开查看此主题相关图片如下:wx20201106-205840@2xsde.png
图片点击可在新窗口打开查看



 回到顶部
帅哥哟,离线,有人找我吗?
FireScript
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:14496 积分:0 威望:0 精华:0 注册:2017/7/4 13:40:18
  发帖心情 Post By:2020/11/9 8:54:55    Post IP:58.246.57.26[只看该作者]

input:p(26,20,100,8),s(12,5,40,4),m(9,2,60,6);
DIFF :=EMA(CLOSE,S) - EMA(CLOSE,P);
DEA  :=EMA(DIFF,M);
MACD1 :2*(DIFF-DEA), COLORSTICK;
macdjc:=cross(diff,dea),NODRAW;//macd金叉
macdsc:=cross(dea,diff),NODRAW;

DRAWICON(macdjc,h,1);
DRAWICON(macdsc,l,1);
M1:=SUMBARS(macdsc,1);//最近一次死叉位置
M2:=SUMBARS(macdsc,2);


maxValue1:ref(HHV(diff,BARSLAST(macdjc)+2),M1-1);//最近一次金叉到死叉之间diff最大值
maxValue2:ref(HHV(diff,BARSLAST(macdjc)+2),M2-1);//上上一次金叉到死叉之间diff最大值
maxValue3:HHV(diff,BARSLAST(macdjc)+2);//如果当前是macd红柱,则最近一次最大值用这个取



recentHigh1:=ref(HHVBARS(diff,BARSLAST(macdjc)+2),M1-1);
recentHigh2:=ref(HHVBARS(diff,BARSLAST(macdjc)+2),M2-1);
recentHigh3:=HHVBARS(diff,BARSLAST(macdjc)+2);


len1:recentHigh1+M1-1;//最近一次金叉到死叉之间的diff最大值到当前的位置
len2:recentHigh2+M2-1;//上上一次金叉到死叉之间的diff最大值到当前的位置
len3:recentHigh3;

这里的统计要分情况。
如果当前是绿柱:
len1,len2 分别是2次最大值距离现在的位置
maxValue1,maxValue2 分别是2次的最大值


如果当前是红柱,把当前的红柱统计在内的话。

图片点击可在新窗口打开查看此主题相关图片如下:temp.png
图片点击可在新窗口打开查看
也就是从金叉位置到光标位置就是第一个diff最大值所在位置。

那么:
len2,len3 分别是2次最大值距离现在的位置
maxValue2,maxValue3 分别是2次的最大值






命数如织,当如磐石。
 回到顶部
帅哥哟,离线,有人找我吗?
popypopy
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:新手上路 帖子:82 积分:0 威望:0 精华:0 注册:2020/9/21 10:56:16
  发帖心情 Post By:2020/11/9 12:45:45    Post IP:114.247.184.162[只看该作者]

收到,多谢多谢!

 回到顶部
帅哥哟,离线,有人找我吗?
popypopy
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:新手上路 帖子:82 积分:0 威望:0 精华:0 注册:2020/9/21 10:56:16
  发帖心情 Post By:2021/1/27 3:00:49    Post IP:123.118.74.92[只看该作者]

遇到一个新的难题,识别连续两次或三次的顶背离的公式该怎么写?
我用macd的两个峰值和相对应位置的close值可以判断是否是顶背离,例如:
顶背离:=maxValue1<maxValue2 and ref(close,len1)>ref(close,len2);

但是下面的代码却不能每次都命中连续顶背离都情况:
Jcount:=count(顶背离,sumbars(macdsc,3));
连续顶背离:=顶背离 AND macdsc and COUNT(Jcount=2,21)=1;

 回到顶部
帅哥哟,离线,有人找我吗?
FireScript
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:14496 积分:0 威望:0 精华:0 注册:2017/7/4 13:40:18
  发帖心情 Post By:2021/1/27 9:17:18    Post IP:58.246.57.26[只看该作者]

 你的思路大致是怎样的?顶背离的代码能理解,但是就是你连续顶背离的判断方式我从你代码没推测出来。


命数如织,当如磐石。
 回到顶部
帅哥哟,离线,有人找我吗?
popypopy
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:新手上路 帖子:82 积分:0 威望:0 精华:0 注册:2020/9/21 10:56:16
  发帖心情 Post By:2021/1/27 16:38:58    Post IP:111.200.53.18[只看该作者]

大致思路就取前n个macd死叉位置起到当前时间内判断出现了几次顶背离,并且两个顶背离是相连的。
例如:
前5个死叉位置是60,在当前时间到前60个周期内,判断出现了2次顶背离,一次在第5个死叉位置,一次在第3个死叉位置,这两次顶背离中间隔着一个非顶背离的第4个死叉,就不算是连续顶背离;但如果是第3和第4个死叉的位置都命中了顶背离,则判断是在第4个死叉位置属于连续顶背离

 回到顶部
帅哥哟,离线,有人找我吗?
FireScript
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:14496 积分:0 威望:0 精华:0 注册:2017/7/4 13:40:18
  发帖心情 Post By:2021/1/28 9:35:19    Post IP:58.246.57.26[只看该作者]

 顶背离:maxValue1<maxValue2 and ref(close,len1)>ref(close,len2) and macdsc;

连续背离:顶背离 and ref(顶背离,M2-1);//M2是前面定义的一个变量
DRAWICON(顶背离,h,1);
DRAWICON(连续背离,l,2);

这样试下呢。
效果如下:

图片点击可在新窗口打开查看此主题相关图片如下:temp.png
图片点击可在新窗口打开查看


命数如织,当如磐石。
 回到顶部
帅哥哟,离线,有人找我吗?
popypopy
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:新手上路 帖子:82 积分:0 威望:0 精华:0 注册:2020/9/21 10:56:16
  发帖心情 Post By:2021/2/1 10:17:11    Post IP:114.249.133.23[只看该作者]

连续顶背离的识别按您讲的方法可以识别了,还有一个问题,如何过滤掉像下图红圈位置标注的持续时间只有2天的macd金叉?这种噪音会干扰指标的判断

图片点击可在新窗口打开查看此主题相关图片如下:20210201-dx1ddd.png
图片点击可在新窗口打开查看


 回到顶部
总数 13 1 2 下一页