【MQL5】iATR関数について

MQL5リファレンス
スポンサーリンク
スポンサーリンク

iATR関数の働き・役割について

iATR関数は、ATRAverage True Range)の指標を計算するために使用されます。

ATRは金融商品の価格におけるボラティリティ(=値動きの大きさ)を測定する一般的な手法で、特に外国為替市場のトレーダーにとって有用な情報を提供します。

ATRに関する詳細は↓の記事をご参照ください

iATR関数の引数について

iATR関数引数構成は以下のようになっています

以下の3つの引数を指定します。

int  iATR(
  string          symbol,        // 銘柄名
  ENUM_TIMEFRAMES  period,        // 期間
  int              ma_period      // 平均期間
  );

symbol – 分析する市場のシンボルを指定する文字列NULLの場合は現在選択しているチャートのシンボルが使用されます。

periodATRを計算するために使用する期間を指定する時間枠です。これはENUM_TIMEFRAMESの値を使用します。0を指定した場合、現在の時間軸を示しています。

enum列挙型については↓の記事をご参照ください

ma_period移動平均の期間を記述します。これはATRを平滑化する際に使用される期間を指定します。

iATR関数の戻り値について

iATR関数戻り値は、ATRハンドル値です。

ハンドル値とは、インジケータの値にアクセスするための鍵のようなものです。

理解としてはそれで十分ですが、詳しい事を知りたい方は↓の記事をご参照ください

MQL5ではこのハンドル値を使用して、ATRなどへのインジケータ値にアクセスする権限を取得し、CopyBuffer関数などを用いて実際のATRのデータを取得することができます。

詳しくはこの後の「iATR関数を使う際の注意点」セクションをご覧ください

iATR関数を使う際の注意点

MQL4との違い

MQL4とは違い、MQL5では ATRの値の取得がiATR関数だけでは完結しません。

MQL4では戻り値として、指定されたインデックスATR値を直接返していましたが、MQL5iATR関数が返すのはあくまでATRハンドル値です。

↑以上の工程をたどる必要があります。

ハンドル値の適切な管理

iATR関数を使用する際には、取得したハンドルを適切に管理し、不要になったらIndicatorRelease関数を使用してリリースする必要があります。

iATR関数を使ったサンプルコード

以下のサンプルコードはiATR関数を使って、ATRハンドル値を取得し、その値及び値を取得した時間をログ出力する為のものです。

// iATR関数を使用してATR指標のハンドルを取得する関数
int GetATRHandle(string symbol, ENUM_TIMEFRAMES period, int ma_period)
{
    return iATR(symbol, period, ma_period);
}

// ハンドルを使用してATR値とその時間を取得する関数
double GetATRValue(int atr_handle, int shift, datetime &atr_time)
{
    double atr_buffer[];
    datetime time_buffer[];
    // ATR値を取得
    if(CopyBuffer(atr_handle, 0, shift, 1, atr_buffer) > 0)
    {
        // ATR値の時間を取得
        if(CopyTime(_Symbol, PERIOD_D1, shift, 1, time_buffer) > 0)
        {
            atr_time = time_buffer[0]; // 時間を参照渡しで返す
            return atr_buffer[0]; // ATR値を返す
        }
    }
    atr_time = 0; // エラーがあった場合の時間
    return -1; // エラー発生時
}

void OnStart()
{
    // EURUSDの1日足のATRハンドルを取得
    int atr_handle = GetATRHandle("EURUSD", PERIOD_D1, 14);
    
    datetime atr_time;
    // 最新のATR値を取得
    double atr_value = GetATRValue(atr_handle, 0, atr_time);
    if(atr_value != -1)
    {
        // 時間を文字列に変換
        string time_str = TimeToString(atr_time, TIME_DATE|TIME_MINUTES);
        Print("The current ATR value is: ", atr_value, " at ", time_str);
    }
    else
    {
        Print("Failed to get ATR value.");
    }
}

<参照:その他のインジケータ関数

iSAR関数/iStochastic関数/iMA関数/iBands関数/iRSI関数

————————————————————————————–

※当サイトでは、プログラミング経験ゼロの方でも、プログラミングの基礎から学べる

<MQL5でEAを作ろう講座>

をメインコンテンツとして展開しています。

【言語基礎編】

【中級実際にEAを作ろう編】

【発展編・MT5用EAを作る工程をカスタマイズしていく】

【クライマックス編・これまでにやってきたことを全て使ってEAを完成させる】

第0回から、順を追って勉強していけばプログラミングの経験がなくてもMQL5を使って、MT5用のEAが作れるように書いています。最初は難しいと感じるかもしれませんが、繰り返し勉強していく事で自然とスキルが身についていくはずです。興味ある方は是非ご覧ください。

コメント

タイトルとURLをコピーしました