【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関数で時間足まで指定するのが良いと思います。