【MQL4勉強プログラミング】一定の範囲内の最高値の位置を取得する方法!

ザフナーラボブログ

iHighest()関数は、一定の範囲内のバーのうち、最高値を示現したバーの位置を取得するために使用します。

iHighest()関数は、以下のように定義されています。

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

各引数の意味は、以下のとおりです。

  • string symbol
    最高値を示現したバーの位置を取得したい通貨ペア名を指定します。
    通貨ペア名は、「気配値表示ウィンドウ」に表示されているとおりに記述します。
    特定の通貨ペア名を指定せず、EA等を適用したチャートの通貨ペアの最高値を示現したバーの位置を取得したい場合は、「NULL」と記述します。
  • int timeframe
    以下の表に従って、最高値を示現したバーの位置を取得する時間軸を指定します。

    timeframeの種類

    種 類
    定 数
    内 容
    PERIOD_CURRENT
    現在の時間足
    PERIOD_M1
    1分足
    PERIOD_M5
    5分足
    PERIOD_M15
    15
    15分足
    PERIOD_M30
    30
    30分足
    PERIOD_H1
    60
    1時間足
    PERIOD_H4
    240
    4時間足
    PERIOD_D1
    1440
    日 足
    PERIOD_W1
    10080
    週 足
    PERIOD_MN1
    43200
    月 足
  • int type
    以下の表に従って、最高値を判定するデータを格納している配列を指定します。

    計算に使用する配列の種類

    種 類
    定数
    内 容
    MODE_OPEN
    始 値
    MODE_LOW
    安 値
    MODE_HIGH
    高 値
    MODE_CLOSE
    終 値
    MODE_VOLUME
    出来高

    iLowest()関数iHighest()関数で使用
    MODE_TIME
    バーの形成開始時刻

    ArrayCopySeries()関数で使用
  • int count
    最高値を検索するバーの数を指定します。
    バーの数は現在から過去へ向かって数えます。
    すべてのバーを対象として最高値を検索する場合は、「0」と記述します。
  • int start
    最高値の検索を始めるバーの位置を指定します。

具体例

USD/JPY(=ドル/円)の1時間足のチャートにおいて、4本前のバーから20本前のバー(=現在のバーの24本前のバー)の間の最高値を取得したい場合は、以下のように記述します。


int Index
= iHighest(“USDJPY”,PERIOD_H1,MODE_HIGH,20,4);

double High_Price = High[Index];
  • iLowest()関数の詳細については「こちら」を参照してください。
  • ArrayCopySeries()関数の詳細については「こちら」を参照してください。
  • High[]の詳細については「こちら」を参照してください。