MQL4MQL5 テクニカル指標
iRVI()
- できること
- RVI(相対活力指数)の値を取得する
- 対応
- MQL4・MQL5
iRVI() とは
RVI(終値と始値の差を値幅で割って平滑化した指標)とシグナルラインを計算する関数です。2本のクロスで売買のタイミングを見ます。
iRVI() の書式と引数
MQL4 の場合MT4
double iRVI(
string symbol,
int timeframe,
int period,
int mode,
int shift
)| 引数 | 型 | 省略時 | 説明 |
|---|---|---|---|
symbol | string | 必須 | 銘柄名。チャートの銘柄なら _Symbol(NULL も可)。 |
timeframe | int | 必須 | 時間足。0 または PERIOD_CURRENT でチャートの時間足。 |
period | int | 必須 | 期間(10)。 |
mode | int | 必須 | 取得する線。MODE_MAIN(RVI)または MODE_SIGNAL(シグナル)。 |
shift | int | 必須 | 値を取得するバーの位置。0 が現在(未確定)のバー、1 が確定したひとつ前のバー。 |
戻り値(MQL4)
指定した線の値。
MQL5 の場合MT5
int iRVI(string symbol, ENUM_TIMEFRAMES period, int ma_period)| 引数 | 型 | 省略時 | 説明 |
|---|---|---|---|
symbol | string | 必須 | 銘柄名。チャートの銘柄なら _Symbol(NULL も可)。 |
period | ENUM_TIMEFRAMES | 必須 | 時間足。PERIOD_CURRENT でチャートの時間足。 |
ma_period | int | 必須 | 期間(10)。 |
戻り値(MQL5)
インジケーターのハンドル。バッファ 0 がメイン、1 がシグナルです。
iRVI() の使い方(コード例)
MQL4
double m = iRVI(_Symbol, 0, 10, MODE_MAIN, 1);
double s = iRVI(_Symbol, 0, 10, MODE_SIGNAL, 1);
Print(m > s ? "RVI がシグナルより上" : "RVI がシグナルより下");MQL5
int h = iRVI(_Symbol, PERIOD_CURRENT, 10);
double m[], s[];
if(h != INVALID_HANDLE && CopyBuffer(h, MAIN_LINE, 1, 1, m) == 1 && CopyBuffer(h, SIGNAL_LINE, 1, 1, s) == 1)
Print(m[0] > s[0] ? "RVI がシグナルより上" : "RVI がシグナルより下");
IndicatorRelease(h);OnTick()・OnStart() などの関数の中に書いて使う例です。MetaEditor でコンパイルできることを確認済みです。
iRVI() の注意点
- MQL5 では値ではなく「ハンドル」が返ります。ハンドルは OnInit() で1回だけ作り、CopyBuffer() で値を読み出します。












