🙆

MQL5でATRの取得

2024/01/29に公開
// ATRの値を取得する関数
double getATRValue(int shift, int atr_period)
{
    static int handle = -1; // ATRのハンドル(静的ローカル変数)
    static ENUM_TIMEFRAMES last_timeframe = PERIOD_CURRENT; // 前回の時間軸(静的ローカル変数)

    // 現在のチャートの時間軸が前回の時間軸と異なる場合、ハンドルをリセット
    if(last_timeframe != _Period)
    {
        last_timeframe = _Period; // 現在の時間軸を記録
        handle = -1; // ハンドルをリセット
    }

    // ATR指標のハンドルを取得
    if(handle == -1)
    {
        handle = iATR(_Symbol, last_timeframe, atr_period); // ATR期間のATR
    }

    double atrValue[1]; // ATRの値を格納する配列

    // バッファをコピーしてATRの値を取得
    if(CopyBuffer(handle, 0, shift, 1, atrValue) <= 0)
    {
        Print("Error getting ATR value: ", GetLastError());
        return 0.0; // エラーが発生した場合
    }

    return atrValue[0]; // 指定されたシフトでのATRの値を返す
}


Discussion