👏

MQL5でRSIを使う方法

2023/10/07に公開

RSI (Relative Strength Index) は、価格の動きを評価するためのテクニカル指標の一つです。この指標は、買われ過ぎおよび売られ過ぎの状態を示しています。

関数定義:

Copy code
int  iRSI(
  string              symbol,            // 銘柄名
  ENUM_TIMEFRAMES    period,            // 期間
  int                ma_period,        // 平均期間
  ENUM_APPLIED_PRICE  applied_price      // 価格の種類かハンドル
  );

パラメータ:

symbol: 指標計算に使用される有価証券の銘柄名(NULL は現在のシンボル)
period: 期間の値は ENUM_TIMEFRAMES 列挙の値の 1 つで、0 は現在の時間軸の意味です。
ma_period: RSI 計算の平均期間
applied_price: 使用される価格。ENUM_APPLIED_PRICE 価格定数のいずれか、または別の指標ハンドル。
戻り値:

指定されたテクニカル指標ハンドル。失敗の場合 INVALID_HANDLE。IndicatorRelease() 関数に指標ハンドルを渡すことによって、コンピュータメモリを利用されていない指標から解放することが出来ます。

RSI値を取得する:

int handle;

// RSI指標のハンドルを取得
handle = iRSI(_Symbol, PERIOD_H1, 14, PRICE_CLOSE);

double rsiValue[];

// バッファをコピーしてRSIの値を取得
CopyBuffer(handle, 0, 0, 1, rsiValue); 

Print("RSI Value: ", rsiValue[0]);

この簡単な例を使用すると、RSIの最新の値を取得できます。

全体的なヒント:

RSIの値が70を超えると、資産が買われ過ぎていると見なされ、売りの機会を示唆する可能性があります。
逆に、RSIの値が30未満の場合、資産が売られ過ぎていると見なされ、買いの機会を示唆する可能性があります。
RSIは、他のテクニカル指標や分析方法と組み合わせて使用することで、取引の決定をサポートするのに非常に役立ちます。

MQL5のRSIの数値を取得する関数

// RSIの値を取得する関数
double getRSIValue(int shift)
{
    static int handle = -1; // RSIのハンドル(静的ローカル変数)
    static ENUM_TIMEFRAMES last_timeframe = PERIOD_CURRENT; // 前回の時間軸(静的ローカル変数)

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

    // RSI指標のハンドルを取得
    if(handle == -1)
    {
        handle = iRSI(_Symbol, last_timeframe, 14, PRICE_CLOSE); // 14期間のRSI
    }

    double rsiValue[1]; // RSIの値を格納する配列

    // バッファをコピーしてRSIの値を取得
    CopyBuffer(handle, 0, shift, 1, rsiValue);

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

Discussion