相対活力指数を計算 iRVI 関数

関数

テクニカルインジケータ関数

iRVI 関数

 この関数は、任意に設定したパラメータのRVI(相対活力指数)の値を計算して、その値を取得します。RVIはオシレータ系のインジケータに分類されます。

RVI

 RVI(Relative Vigor Index [相対活力指数])は、価格の上昇と下降の活力(エネルギー)を測定して、トレンドの強さや反転の予測をすることができます。

 RVIは通常、オシレータ系の指標として分類されます。上昇トレンドと下降トレンドの力を測定し、トレンドの継続性や反転の可能性を評価するのに役立ちます。また、RVI線とシグナル線とのクロスオーバー(交差)やダイバージェンス(ずれ)の観察など、トレードシグナルの生成にも使用されます。

MT4でチャート上にRVIをプロットする時はナビゲーター中のインディケータ → 「オシレーター」 → 「Relative Vigor Index」インジケータを使用します。

(RVIの計算式)

 RVIの計算方法は、以下のとおりです。

RVI = RVのN期間移動平均 ÷ RVのN期間移動平均のN期前の値
RVのN期間移動平均 = N期間のRVの合計 ÷ N
RV = (終値 - 始値) ÷ (高値 - 安値)
N:期間。通常、日足チャートで10期間が使われます。
移動平均の方法は、一般的に単純移動平均(SMA)が使用されます。ただし、一部のトレーダーは指数移動平均(EMA)を利用する場合もあります。

 RVIのシグナルラインの計算方法は、以下のとおりです。

RVIsignal = RVIのN期間の単純移動平均
N:期間。通常、日足チャートで10期間が使われます。

 このシグナルラインは、RVIの振動やトレンドの方向性をより滑らかに表示するために使用されます。トレーダーは、RVIsignalとRVIの相対的な位置関係やクロスオーバーを観察することで、トレンドの変化やエントリーポイントを特定するのに役立てることができます。

(RVIの使い方)

 RVIは、次のように使われます。

①トレンドの強さの確認
 RVIが上昇し、高い値に近づいている場合は、上昇トレンドが強まっていることを示します。
RVIが下降し、低い値に近づいている場合は、下降トレンドが強まっていることを示します。

②トレンドの転換の確認
 RVIが上昇トレンドから下降トレンドに転換した場合、トレンドの転換を示唆しています。
RVIが下降トレンドから上昇トレンドに転換した場合、トレンドの転換を示唆しています。

③ダイバージェンス(ずれ)の確認
 価格チャートとRVIの動きが逆方向に進むダイバージェンスが見られる場合、トレンドの逆転を示す可能性があります。

④クロスオーバーの確認
 RVIの移動平均線(通常は10期間の単純移動平均線)とシグナル線が相互にクロスする場合、トレンドの転換を示す可能性があります。

 これらの情報を利用して、RVIを使用したエントリーやエグジットのタイミングを判断することができます。ただし、単体での使用ではなく、他のテクニカル分析ツールや価格パターンとの組み合わせで利用することが一般的です。また、パラメータの調整や他の指標との組み合わせによって、個々のトレーダーのニーズに合わせたカスタマイズも可能です。

データ型と構成・戻り値

double iRVI(①, ②, ③, ④, ⑤);

 戻り値は、任意に設定したパラメータのRVIの値を計算して、その値を返します。

引数 [5]

 iRVI関数は 5個の引数で構成されます。


引数名データ型単位初期値説明
symbolstring計算対象の通貨ペア名。
「NULL」は選択チャートの通貨ペア名が選択されます。
timeframeint時間軸。ENUM_TIMEFRAMES 列挙値から選択。
「0」は現在チャートの時間軸が選択されます。
periodintRVIの計算期間。RVIを計算するバーの数を数値で設定します。
modeint結果で算出する線を選択。
iRVI関数のインジケータライン識別子から選択。
shiftintRVIの値を算出するバーの位置。
現在のバーから指定した時間軸のバー数だけ過去へシフトします。例えば、現在のバーからの計算は「0」、 1つ前のバーから計算する時は「1」になります。

使用例

iRVI関数によるRVI値とシグナル値の計算

 iRVI関数を使って、現在のRVI値とシグナルラインの値を算出します。条件は、時間軸に日足チャートを使用して、期間は10日間とします。

コード

// iRVI関数によるRVI値とシグナル値の計算
#property strict
void OnInit() {

   int period = 10; // RVIの計算期間

   double RVI    = iRVI(NULL, 0, period, 0, 0); // RVI線
   double Signal = iRVI(NULL, 0, period, 1, 0); // シグナル線

   Print("シグナル値:", Signal);
   Print("RVI値:", RVI);
}

コードをコンパイルして実行する方法はこちらを参考にしてください。(デモ口座でお試しください)

結果

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