【MQL】特定期間の最大値/最小値を取得する

直近高値/安値を取得したい場合に一番手軽な方法です。

直近高値を取得する(OnTick内)

// 特定期間の最大値のローソク足の位置を取得
int indexH=iHighest(NULL,PERIOD_H1,MODE_CLOSE,20,4);

// 最大値
double PriceH=iHigh(NULL,PERIOD_H1,indexH);

iHighest関数で特定期間の最大値のローソク足の位置を取得しています。
20が検索するローソク足の数、4が検索を始めるローソク足の位置です。
ローソク足の位置がわかったらiHigh関数のシフトに指定すればOKです。

直近安値を取得する(OnTick内)

// 特定期間の最小値のローソク足の位置を取得
int indexL=iLowest(NULL,PERIOD_H1,MODE_CLOSE,20,4);

// 最小値
double PriceL=iLow(NULL,PERIOD_H1,indexL);

同じ要領で最小値も取得できます。

※ 注意
High[indexH]、Low[indexL]としてしまうと、時間足を変えると値が変わってしまいます。売買ロジックでよく使われるので、意図しない動きにならないようにiHigh関数、iLow関数で時間足まで指定するのが良いと思います。