求助:ZIGZAG的最近值和最近的两个拐点值怎么求?

 
ZIGZAG的最近值和最近的两个拐点值怎么求?查遍了代码基地,都没有完整的答案。谢谢。
 

double p0,p1,p2;

for(i=0;i<=bars,i++)

{

if(zigzagbuffer(i))>0 && p0==0) p0=zigzagbuffer(i);

if(zigzagbuffer(i))>0 && p1==0 && p0>0) p1=zigzagbuffer(i);

if(zigzagbuffer(i))>0 && p2==0 && p1>0) p2=zigzagbuffer(i);

}

 

谢谢你。我还没完全理解。是不是要用到iCustom函数? 为什么要设 zigzagbuffer(i)>0 呢?我的理解,价格都是大于零的,自然 zigzagbuffer(i) 就是大于零的,不是吗?

我再看看,不行还得请教。

 

//---- indicator buffers
double ZigzagBuffer[];

以上是ZIGZAG指标定义的划线所依据的变量数组,这个数组的存储高低点价格,其他的非高低点值为零,所以只要从右往左找三个>0的值就依次是你要的三个数据。

不用ICUSTOME。

 
首先,谢谢你的回复和指导,Temp1234。按你上面说的,p0就是最近的Zigzag,p1就是最近的拐点,p2就是次近的拐点。这样理解行吗?其实我不是要画线,就是要这三个数,在主图区域表示出来就行。
 

不用客气,我个人正巧使用这个指标。

三个值你说的没错,好事做到底了。

double ZigV(int VNum,int ExtDepth,int ExtDeviation,int ExtBackstep)
{

double p0,p1,p2,tmp;

for(int i=0;i<=10000;i++)

{
tmp=iCustom(Symbol(),0,"ZigZag",ExtDepth,ExtDeviation,ExtBackstep,0,i);
if(tmp>0 && p2==0 && p1>0) p2=tmp;
if(tmp>0 && p1==0 && p0>0) p1=tmp;
if(tmp>0 && p0==0) p0=tmp;
if(p0>0 && p1>0 && p2>0) break;
}

if(VNum==0) return(p0);
if(VNum==1) return(p1);
if(VNum==2) return(p2);

}

上面是完整的求三值的函数,复制到你的指标最后的空白地区就行了。

下面是调用三个值并用注释方式显示三值在屏幕左上角即Z0,Z1,Z2,你可以根据需要修改;

这个要放在START{}里面的return语句前。

Comment("Z0:",ZigV(0,12,5,3),"\n","Z1:",ZigV(1,12,5,3),"\n","Z2:",ZigV(2,12,5,3));

 
太感谢了,我做出来了。真是太棒了。
 
别客气,祝你交易顺利,挣到大美元。
 
Temp1234 好人一个,新年快乐!
 
请问各位朋友这个 ZIGZAG 指标有什么实际的使用价值?我什么有好多人,认为它含有未来的函数而弃置不用那
原因: