ご存じのように、 UNIVERSAL ZIGZAGは完全なジグザグ エキスパートおよびインジケーターです。エキスパートでは、以下のように呼び出すことができます。
int handle=iCustom(Symbol(),Period(),"iUniZigZagSW",SrcSelect,
DirSelect,
RSIPeriod,
RSIPrice,
MAPeriod,
MAShift,
MAMethod,
MAPrice,
CCIPeriod,
CCIPrice,
ZZPeriod);
そして、これらの数行のコードによって、ジグザグの最後の高値と安値を取得できます。
double lhb[], zz[];
if(CopyBuffer(handle,4,0,**1**,lhb)<=0)
{
Print("Error obtaining data from the ZigZag 2");
return;
}
// index of the bar when counting to the right of zero
ind=bars-(int)lhb[0]-1;
// value of the ZigZag at the ind bar
if(CopyBuffer(handle,2,ind,**1**,zz)<=0)
{
Print("Error obtaining data from the ZigZag 3");
return;
}
...
太字の 1 の数字は、知りたい高値の数です。
問題は、ジグザグの最後の 3 つ以上の高値または安値を取得するにはどうすればよいかということです。
結果の配列の数を増やしてCopyBuffer(handle,4,0,**1**,lhb)
も正しくありません。
はCopyBuffer(handle,2,ind,1..X,zz)
間違った数値を返すか、ジグザグの最後の高値または安値のみを返します。