【MQL4テクニック】指定した範囲内での最高値や最安値を取得する方法

MQL4テクニック

レジスタンスラインやサポートラインを意識しているトレーダーは、指定した期間内での最高値、最安値を知りたい場面が多くあると思います。

ある関数を使用することで、簡単に取得することができるのでご紹介いたします。

iHighest関数、iLowest関数を使用する

iHighest()関数、iLowest()関数を使用して、最高値を保持しているバーのシフト数を取得します。

int iHighest(string symbol, int timeframe, int type, int count, int start);
int iLowest(string symbol, int timeframe, int type, int count, int start);

引数の意味は以下です。

引数名詳細
symbol通貨ペアを指定します。
timeframe時間足を指定します。
typeデータタイプを指定します。
MODE_OPEN:始値
MODE_LOW:安値
MODE_HIGH:高値
MODE_CLOSE:終値
count遡って検索を行うバー数
省略をした場合、スタート地点から読み込める全ての足で検索をします。
start検索のスタート地点
省略した場合、今足を指定します。

実際に取得してみる

コードを書いて、実際に取得してみます。

//今足から過去足10本分での最高値を取得する
int highestBar = iHighest(Symbol(), Period(), MODE_HIGH, 10, 0);
double highest = iHigh(Symbol(), Period(), highestBar);

//今足から読み込める全ての足での最安値を取得する
int lowestBar =  iLowest(Symbol(), Period(), MODE_LOW);
double lowest = iLow(Symbol(), Period(), lowestBar);

iHighest()関数などはあくまでも該当するバーのシフト数を返すだけなので、実際に価格を取得するにはiHigh()関数などに、取得したシフト数を渡す必要があることを注意してください。

POINT

こちらの記事で悩みが解決されない場合は、
MQL4 User Community に参加してお気軽にご質問ください。

MQL4初心者の方や開発に行き詰った方の悩みを、 様々なソフトウェアやツールを開発してきた経験豊富なエンジニアたちが解決いたします。