【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()
関数などに、取得したシフト数を渡す必要があることを注意してください。