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


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

   

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


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

主题:如何取到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));

 回到顶部
帅哥哟,离线,有人找我吗?
popypopy
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | 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
图片点击可在新窗口打开查看



 回到顶部
帅哥哟,离线,有人找我吗?
popypopy
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | 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
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | 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;

 回到顶部
帅哥哟,离线,有人找我吗?
popypopy
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | 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个死叉位置属于连续顶背离

 回到顶部
帅哥哟,离线,有人找我吗?
popypopy
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | 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
图片点击可在新窗口打开查看


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


加好友 发短信
等级:新手上路 帖子:82 积分:0 威望:0 精华:0 注册:2020/9/21 10:56:16
  发帖心情 Post By:2021/2/1 18:03:43    Post IP:111.200.53.18[显示全部帖子]

请大神帮忙看看代码应该怎么写可以比较简练地过滤掉这样掉噪点,识别出符合条件掉diff高点和对应区间的close高点。这个复杂的公式我不知道该怎么写。
我的笨办法就是
if (SUMBARS(macdsc,2)-SUMBARS(macdsc,1))<3 then maxValue1=maxValue2,用maxValue2替换maxValue1;
然后再判断前高diff_2是否也存在(SUMBARS(macdsc,3)-SUMBARS(macdsc,2))<3, 但这样会带来新的问题。

如何用filter或filterx过滤掉(SUMBARS(macdsc,2)-SUMBARS(macdsc,1))<3的情况,然后找出符合条件的maxValue1和maxValue2?

 回到顶部