不管你想做什么,这可能不是获得它的方法。
请看"Custiom指标、专家和策略测试"-- 我解释了使用iCustom的方法...
我认为你应该改变指标,做两个额外的缓冲区来获得这些数据。
例如,低值是LOWbuff[] 。
高值是HIGHbuff[]
现在,如果你有一个新的高点(在指标内),那么你要检查这个值是否与现在存储的值不同......如果是,你就有一个新的值......
例如,1.2815 ZigZag最大值
bar1
bar2
bar3
...
barx的新值为1.2755
你将会得到类似HIGHBUFF[1.2815,1.2815,....,1.2815,1.2755,1.2755...]这样的结果。
然后你用Icustom(NULL,0, "ZigZag",3,0); --> 然后就可以得到你的数字了。
希望你能明白我在说什么......
zolero
请看"Custiom指标、专家和策略测试"-- 我解释了使用iCustom的方法...
我认为你应该改变指标,做两个额外的缓冲区来获得这些数据。
例如,低值是LOWbuff[] 。
高值是HIGHbuff[]
现在,如果你有一个新的高点(在指标内),那么你要检查这个值是否与现在存储的值不同......如果是,你就有一个新的值......
例如,1.2815 ZigZag最大值
bar1
bar2
bar3
...
barx的新值为1.2755
你将会得到类似HIGHBUFF[1.2815,1.2815,....,1.2815,1.2755,1.2755...]这样的结果。
然后你用Icustom(NULL,0, "ZigZag",3,0); --> 然后就可以得到你的数字了。
希望你能明白我在说什么......
zolero
zolero:
不管你想做什么,这可能不是获得它的方法。
请看"Custiom指标、专家和策略测试"-- 我解释了使用iCustom的方法...
我认为你应该改变指标,做两个额外的缓冲区来获得这些数据。
例如,低值是LOWbuff[] 。
高值是HIGHbuff[]
现在,如果你有一个新的高点(在指标内),那么你要检查这个值是否与现在存储的值不同......如果是,你就有一个新的值......
例如,1.2815 ZigZag最大值
bar1
bar2
bar3
...
barx的新值为1.2755
你将会得到类似HIGHBUFF[1.2815,1.2815,....,1.2815,1.2755,1.2755...]这样的结果。
然后你用Icustom(NULL,0, "ZigZag",3,0); --> 然后就可以得到你的数字了。
希望你能明白我在说什么......
zolero
不,我实际上不明白。 不管你想做什么,这可能不是获得它的方法。
请看"Custiom指标、专家和策略测试"-- 我解释了使用iCustom的方法...
我认为你应该改变指标,做两个额外的缓冲区来获得这些数据。
例如,低值是LOWbuff[] 。
高值是HIGHbuff[]
现在,如果你有一个新的高点(在指标内),那么你要检查这个值是否与现在存储的值不同......如果是,你就有一个新的值......
例如,1.2815 ZigZag最大值
bar1
bar2
bar3
...
barx的新值为1.2755
你将会得到类似HIGHBUFF[1.2815,1.2815,....,1.2815,1.2755,1.2755...]这样的结果。
然后你用Icustom(NULL,0, "ZigZag",3,0); --> 然后就可以得到你的数字了。
希望你能明白我在说什么......
zolero
我想要的是让我的EA知道人字形指标指向哪个方向(上升或下降)。我怎样才能做到这一点呢?
zolero:
如果(zag>zig)指标显示下跌
如果(zig>zag)指标显示为上升
zolero
谢谢你,明白了,工作起来很顺利
我只想让我的EA知道人字形指标指向哪一个方向(上升或下降)。 我该如何做呢?
可能你想知道的是最后两个值(因为之字形并不总是有一个值)。 所以你必须读取一个指标的最后两个值。int n, i; double zag, zig; i=0; while(n<2) { if(zig>0) zag=zig; zig=iCustom(NULL, 0, "ZigZag", 0, i); if(zig>0) n+=1; i++; }现在你有两个数字zig--最后一个值和zag--之前的值
如果(zag>zig)指标显示下跌
如果(zig>zag)指标显示为上升
zolero
c0d3:
经过测试。
如果(zag<zig)指标显示下降
如果(zig<zag)指标显示上升
我认为这是对的,它在(zag>zig)、(zig>zag)时给出了相反的方向。
zolero:
如果(zag>zig)指标显示下跌
如果(zig>zag)指标显示为上升
zolero
谢谢你,我知道了,效果很好。 我只想让我的EA知道人字形指标指向哪一个方向(上升或下降)。 我该如何做呢?
可能你想知道的是最后两个值(因为之字形并不总是有一个值)。 所以你必须读取一个指标的最后两个值。int n, i; double zag, zig; i=0; while(n<2) { if(zig>0) zag=zig; zig=iCustom(NULL, 0, "ZigZag", 0, i); if(zig>0) n+=1; i++; }现在你有两个数字zig--最后一个值和zag--之前的值
如果(zag>zig)指标显示下跌
如果(zig>zag)指标显示为上升
zolero
经过测试。
如果(zag<zig)指标显示下降
如果(zig<zag)指标显示上升
我认为这是对的,它在(zag>zig)、(zig>zag)时给出了相反的方向。
c0d3:
我已经在图表上看了最后一条线。这意味着最后一条线是向下[或向上]的。这应该意味着现在预计会出现上升[或下降]的走势。 但是把它当作上升或下降的信号有一个小问题:之字形可以[而且经常]重新划定。这意味着如果两点之间的线显示为南方(从1.2900到1.2850),那么这并不意味着价格会上升。它可能会上升,但有一个很大的机会,在一些运动后,你有新的线下降(从1.2900到1.2820),等等。我的观点是,图表上有一条线并不意味着向这个方向的运动已经结束。
我认为这是对的,它给出的是相反的方向,即(zag>zig),(zig>zag)。
int n, i; double zag, zig;
i=0;
while(n<2)
{
if(zig>0) zag=zig;
zig=iCustom(NULL, 0, "ZigZag", 0, i);
如果(zig>0) n+=1;
i++;
}
&nbint n, i; double zag, zig; i=0; while(n<2) { if(zig>0) zag=zig; zig=iCustom(NULL, 0, "ZigZag", 0, i); if(zig>0) n+=1; i++;}sp;int n, i; double zag, zig; i=0; while(n<2) { if(zig>0) zag=zig; zig=iCustom(NULL, 0, "ZigZag", 0, i); if(zig>0) n+=1; i++; }
我修改了一点之字形的代码,以显示我所说的假信号。就像他们说的:一张图片可以说明1000个字以上....
![](https://c.mql5.com/mql4/forum/2006/09/zigzag_modified.gif)
红线是原始的 "之 "字形,它从底部到顶部,然后在最好的时刻再回来...至少看起来是这样。但是,如果你正在编写EA的代码,那么EA就会得到接近黄线的信号。这可能更糟糕,因为我做了非常快速的黑客...
代码是重新画出向上或向下的线,直到下一条线被画出来,这样一步一步地改变黄线(删除最大和最小值),直到你得到一条红线...
![](https://c.mql5.com/mql4/forum/2006/09/zigzag_modified.gif)
红线是原始的 "之 "字形,它从底部到顶部,然后在最好的时刻再回来...至少看起来是这样。但是,如果你正在编写EA的代码,那么EA就会得到接近黄线的信号。这可能更糟糕,因为我做了非常快速的黑客...
代码是重新画出向上或向下的线,直到下一条线被画出来,这样一步一步地改变黄线(删除最大和最小值),直到你得到一条红线...
这是我目前的情况。
ZigZagHigh=iCustom(NULL,0, "ZigZag",MODE_HIGH,0)。
ZigZagLow=iCustom(NULL,0, "ZigZag",MODE_LOW,0)。
线条画在了图表上,但是当我运行程序时,ZigZagHigh和ZigZagLow都等于零。
我如何用icustom函数确定ZigZag指标的趋势?
谢谢