🐥

MQL5でiMA()移動平均線を取得する

2023/10/07に公開
// 移動平均線の値を取得する関数
double getMAValue(int shift)
{
    static int ma_handle = -1; // MAのハンドル(静的ローカル変数)
    static ENUM_TIMEFRAMES last_timeframe = PERIOD_CURRENT; // 前回の時間軸(静的ローカル変数)

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

    // 移動平均線のハンドルが未取得の場合、新しく取得する
    if(ma_handle == -1)
    {
        ma_handle = iMA(_Symbol, last_timeframe, 14, 0, MODE_SMA, PRICE_CLOSE); // 14期間の単純移動平均
    }

    double maValue[1]; // 値を格納する配列

    // バッファをコピーして移動平均の値を取得
    CopyBuffer(ma_handle, 0, shift, 1, maValue);

    return maValue[0]; // 最新の移動平均線の値を返す
}


Discussion