如何只提取Zigzag指标提取的底部转折点? - 页 3 123 新评论 Tjipke de Vries 2013.10.22 08:33 #21 jackprobe: 谢谢你deVries。将尝试它... 如果你把像这样的东西 这个在你的代码里面 .... Fa Cao 2013.12.04 08:26 #22 ubzen: 这是我得出的结果。我还没有检查上面deVries的结果[他发帖时正在做这个]。 你好,ubzen,我刚刚看到你的代码如下。 我不知道这两行代码是什么意思:if(Bottoms[shift]>0.1) Bottoms[shift]=Bottoms[shift]; if(Toppers[shift]>0.1) Toppers[shift]=Toppers[shift]。 我发现,当我删除这两行代码时,几乎没有任何变化,所以我不知道你为什么要加这两行。 #property indicator_chart_window #property indicator_buffers 2 #property indicator_color1 Green #property indicator_width1 1 #property indicator_color2 Yellow #property indicator_width2 1 double Bottoms[]; double Toppers[]; int init() { IndicatorBuffers(2); SetIndexStyle(0,DRAW_SECTION); SetIndexBuffer(0,Bottoms); SetIndexEmptyValue(0,0.0); SetIndexStyle(1,DRAW_SECTION); SetIndexBuffer(1,Toppers); SetIndexEmptyValue(1,0.0); IndicatorShortName("zz show top & bottom"); return(0); } int deinit() { return(0); } int start() { int counted_bars=IndicatorCounted(); int limit=0; limit = Bars-counted_bars; for(int shift=limit-1;shift>=0;shift--) { int ExtDepth=12; int ExtDeviation=5; int ExtBackstep=3; int ZigzagBuffer=0; int HighMapBuffer=1; int LowMapBuffer=2; Bottoms[shift]=iCustom( Symbol(),0,"ZigZag", ExtDepth, ExtDeviation, ExtBackstep, LowMapBuffer, shift ); Toppers[shift]=iCustom( Symbol(),0,"ZigZag", ExtDepth, ExtDeviation, ExtBackstep, HighMapBuffer, shift ); if(Bottoms[shift]>0.1) Bottoms[shift]=Bottoms[shift]; if(Toppers[shift]>0.1) Toppers[shift]=Toppers[shift]; } return(0); } Tjipke de Vries 2013.12.04 08:45 #23 vx0532: 你好,ubzen,我刚刚看到你的代码如下。 我不知道这两行代码是什么意思:if(Bottoms[shift]>0.1) Bottoms[shift]=Bottoms[shift]; if(Toppers[shift]>0.1) Toppers[shift]=Toppers[shift]。 我发现,当我删除这两行代码时,它几乎没有任何变化,所以我不知道你为什么要加这两行。 低点有线,高点有线的 "之 "字形。 Fa Cao 2013.12.04 08:56 #24 deVries: 在低点和高点都有线的 "之"字形结构 我在EA中写了下面这些代码 但当我在历史数据中测试它时,"打印 "显示全部为0,为什么? for(int shift=99;shift>=0;shift--) { int ExtDepth=12; int ExtDeviation=5; int ExtBackstep=3; int ZigzagBuffer=0; int HighMapBuffer=1; int LowMapBuffer=2; Bottoms[shift]=iCustom( Symbol(),0,"ZigZag", ExtDepth, ExtDeviation, ExtBackstep, LowMapBuffer, shift ); Toppers[shift]=iCustom( Symbol(),0,"ZigZag", ExtDepth, ExtDeviation, ExtBackstep, HighMapBuffer, shift ); if(Bottoms[shift]>0.1) Bottoms[shift]=Bottoms[shift]; if(Toppers[shift]>0.1) Toppers[shift]=Toppers[shift]; } shift=0; while(shift<100) { Print("Bottoms,Toppers:",Bottoms[shift]," , ",Toppers[shift]); shift++; } Tjipke de Vries 2013.12.04 09:10 #25 请看我在后面1页的帖子 deVries 2013.10.19 12:13 # https://www.mql5.com/en/forum/144092/page2#854926 //+------------------------------------------------------------------+ //| ZigZag practise.mq4 | //| Copyright © 2012, Tjipke de Vries | //| | //+------------------------------------------------------------------+ #property copyright "Copyright © 2012, Tjipke de Vries" #property link "" //---- input parameters ZigZag extern int ExtDepth=12; extern int ExtDeviation=5; Fa Cao 2013.12.04 09:46 #26 deVries: 谢谢deVries,我在看了你的帖子后知道了这个问题。 所以我得到的结论是,我们可以在指标代码中使用双数组和变量来接收iCustom()的返回值;但我们只能在EA的代码中使用变量来接收iCustom()的返回值。 你的解释是:"那是错误的缓冲区,你必须找到i的值,在哪个栏的顶部或底部将是" 我的理解是,在EA中,当我们使用数组x[i]来接收iCustom()时,赋值是可以的,但赋值的小节是不确定的。 所以iCustom()不仅仅是简单地返回一个值,还有其他东西,是吗? 但我还是不明白这段代码的意义:"if(Bottoms[shift]>0.1) Bottoms[shift]=Bottoms[shift]; if(Toppers[shift]>0.1) Toppers[shift]=Toppers[shift];" Tjipke de Vries 2013.12.05 14:41 #27 vx0532: 谢谢deVries,我在看了你的帖子后知道了这个问题。 所以我得到的结论是,我们可以在指标代码中使用双数组和变量来接收iCustom()的返回值;但我们只能在EA的代码中使用变量来接收iCustom()的返回值。 你的解释是:"那是错误的缓冲区,你必须找到i的值,在哪个栏的顶部或底部将是" 我的理解是,在EA中,当我们使用数组x[i]来接收iCustom()时,赋值是可以的,但赋值的小节是不确定的。 所以iCustom()不仅仅是简单地返回一个值,还有其他东西,是吗? 但我还是不明白这段代码的意义:"if(Bottoms[shift]>0.1) Bottoms[shift]=Bottoms[shift]; if(Toppers[shift]>0.1) Toppers[shift]=Toppers[shift];" 你还在为从ZigZag指标中获取数据而苦恼吗? 为什么你要我解释我的代码中没有的东西? 你为什么不研究一下这段代码呢? //+------------------------------------------------------------------+ //| ZigZag practise.mq4 | //| Copyright © 2012, Tjipke de Vries | //| | //+------------------------------------------------------------------+ #property copyright "Copyright © 2012, Tjipke de Vries" #property link "" //---- input parameters ZigZag extern int ExtDepth=12; extern int ExtDeviation=5; 整个代码你可以在后面找到一页....https://www.mql5.com/en/forum/144092/page2#854926。 如果你了解该代码的工作原理,那么它只是在EA中使用了同样的方法。 William Roeder 2013.12.05 16:41 #28 deVries: 整个代码你可以在后面一页找到.... 不要说返回一页,要贴出确切的帖子链接。就是你名字右边的#号(点击右键,复制链接),在后面 一页。 vx0532: 但我还是不明白这段代码的意义:"if(Bottoms[shift]>0.1) Bottoms[shift]=Bottoms[shift]; if(Toppers[shift]>0.1) Toppers[shift]=Toppers[shift);" 你认为 "if(x> 0.1) x=x; "的意义是什么?什么也不是!更正 后的代码说。 if(ZigZag[shift]>0.1 && Low[shift]==ZigZag[shift]) Bottoms[shift]=ZigZag[shift]; if(ZigZag[shift]>0.1 && High[shift]==ZigZag[shift]) Toppers[shift]=ZigZag[shift]; Tjipke de Vries 2013.12.05 18:48 #29 WHRoeder: deVries:整个代码你可以在后面一页找到.... 不要说后面一页,要贴出确切的帖子的链接。就是你名字右边的#号(点击右键,复制链接),在 后面 一页。 vx0532:但我还是不明白这段代码的意义:"if(Bottoms[shift]>0.1) Bottoms[shift]=Bottoms[shift]; if(Toppers[shift]>0.1) Toppers[shift]=Toppers[shift];" 你认为 "if(x> 0.1) x=x; "的意义是什么?什么也不是!更正 后的代码说。 完成https://www.mql5.com/en/forum/144092/page2#854926 spjuliman 2015.03.05 13:17 #30 亲爱的各位。 感谢对ZigZag和代码的精彩讨论。我想在讨论中加入一个新的内容 对我来说,如果我能够将ZigZag 指标计算出的高/低值(给定的、特定的参数 集)连同它们的出现时间提取到一个文本或csv文件中,将具有很大的价值,,像这样。- 日,时间,高值,高(布尔值)- 日,时间,低值,低(布尔值)。我想提取这些值在MS Excel中作进一步分析,以确定图表中时间段和振幅的 出现的概率。最后,直方图将从 这一数据中创建,通过识别内在的时间段和,以及内在的摆动幅度来表明图表中数值的 "特征"。也许我在这里试图重新发明轮子,而外面有一些代码可以做我想做的。如果没有,开发这样的代码也是值得的。我每天都在用大量的图表进行这种类型的分析,我可以清楚地指出,了解一个价值的内在特征,可以大大提高预测方向改变的机会。在我看来,这个过程可以很容易地实现 自动化......但我需要一些有编程经验的人的帮助。 结果将是一个方便的指标,甚至是一个自动的MT4 EA(专家顾问),在重大转折点进行交易。如果能在这里找到有兴趣合作的人,那就更好了。但如果有一些关于如何从ZigZag指标中提取数据的提示,也会有帮助。非常感谢!- spjuliman 123 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
谢谢你deVries。将尝试它...
如果你把像这样的东西
这是我得出的结果。我还没有检查上面deVries的结果[他发帖时正在做这个]。
你好,ubzen,我刚刚看到你的代码如下。
我不知道这两行代码是什么意思:if(Bottoms[shift]>0.1) Bottoms[shift]=Bottoms[shift]; if(Toppers[shift]>0.1) Toppers[shift]=Toppers[shift]。
我发现,当我删除这两行代码时,几乎没有任何变化,所以我不知道你为什么要加这两行。
你好,ubzen,我刚刚看到你的代码如下。
我不知道这两行代码是什么意思:if(Bottoms[shift]>0.1) Bottoms[shift]=Bottoms[shift]; if(Toppers[shift]>0.1) Toppers[shift]=Toppers[shift]。
我发现,当我删除这两行代码时,它几乎没有任何变化,所以我不知道你为什么要加这两行。
低点有线,高点有线的 "之 "字形。
在低点和高点都有线的 "之"字形结构
我在EA中写了下面这些代码
但当我在历史数据中测试它时,"打印 "显示全部为0,为什么?
请看我在后面1页的帖子
deVries 2013.10.19 12:13 #
https://www.mql5.com/en/forum/144092/page2#854926
谢谢deVries,我在看了你的帖子后知道了这个问题。
所以我得到的结论是,我们可以在指标代码中使用双数组和变量来接收iCustom()的返回值;但我们只能在EA的代码中使用变量来接收iCustom()的返回值。
你的解释是:"那是错误的缓冲区,你必须找到i的值,在哪个栏的顶部或底部将是"
我的理解是,在EA中,当我们使用数组x[i]来接收iCustom()时,赋值是可以的,但赋值的小节是不确定的。
所以iCustom()不仅仅是简单地返回一个值,还有其他东西,是吗?
但我还是不明白这段代码的意义:"if(Bottoms[shift]>0.1) Bottoms[shift]=Bottoms[shift]; if(Toppers[shift]>0.1) Toppers[shift]=Toppers[shift];"
谢谢deVries,我在看了你的帖子后知道了这个问题。
所以我得到的结论是,我们可以在指标代码中使用双数组和变量来接收iCustom()的返回值;但我们只能在EA的代码中使用变量来接收iCustom()的返回值。
你的解释是:"那是错误的缓冲区,你必须找到i的值,在哪个栏的顶部或底部将是"
我的理解是,在EA中,当我们使用数组x[i]来接收iCustom()时,赋值是可以的,但赋值的小节是不确定的。
所以iCustom()不仅仅是简单地返回一个值,还有其他东西,是吗?
但我还是不明白这段代码的意义:"if(Bottoms[shift]>0.1) Bottoms[shift]=Bottoms[shift]; if(Toppers[shift]>0.1) Toppers[shift]=Toppers[shift];"
你还在为从ZigZag指标中获取数据而苦恼吗?
为什么你要我解释我的代码中没有的东西?
你为什么不研究一下这段代码呢?
整个代码你可以在后面找到一页....https://www.mql5.com/en/forum/144092/page2#854926。
如果你了解该代码的工作原理,那么它只是在EA中使用了同样的方法。
完成https://www.mql5.com/en/forum/144092/page2#854926
亲爱的各位。
感谢对ZigZag和代码的精彩讨论。我想在讨论中加入一个新的内容
对我来说,如果我能够将ZigZag
指标计算出的高/低值(给定的、特定的参数 集)连同它们的出现时间提取到一个文本或csv文件中,将具有很大的价值,
,像这样。
- 日,时间,高值,高(布尔值)
- 日,时间,低值,低(布尔值)。
我想提取这些值在MS Excel中作进一步分析,以确定图表中时间段和振幅的
出现的概率。最后,直方图将从
这一数据中创建,通过识别内在的时间段和
,以及内在的摆动幅度来表明图表中数值的 "特征"。
也许我在这里试图重新发明轮子,而外面有一些代码可以做我想做的
。如果没有,开发这样的代码也是值得的。我每天都在用大量的图表进行这种类型的分析
,我可以清楚地指出,了解一个价值的内在特征
,可以大大提高预测方向改变的机会。在我看来,这个过程可以很容易地实现
自动化......但我需要一些有编程经验的人的帮助。
结果将是一个方便的指标,甚至是一个自动的MT4 EA(专家顾问)
,在重大转折点进行交易。
如果能在这里找到有兴趣合作的人,那就更好了。但如果有一些关于如何从ZigZag指标中提取数据的提示
,也会有帮助。非常感谢!
- spjuliman