[k-matsuのページトップ]>[FX関連]>[MT4]>[RSI_multimethod]


RSI_multimethod


各方式のRSIを重ねて表示。WilderのRSI(ライム),CutlerのRSI(マゼンタ),EMA(ブルー),LWMA(イエロー)。

RSIを求める際の移動平均の方法を指定できるRSIインジです。
ぶっちゃけ拙作RSI_breakbandの副産物的な物でそれ以上の位置付けにする気はないのですが、CutlerのRSIを使いたい方とかには有用かも?

なお、RSIの計算式にWilderはSMMA(加重移動平均)、CutlerはSMA(単純移動平均)を使っているようです。
そしてMT4標準のRSIはWilderのRSIでした。
N期間のRSIの各計算式(単純化済)を並べてみます。XXX(N)はN期間分のXXXという意味です。

Wilder(MT4標準)Cutler
RSI(N)
上昇分SMMA(N)
100×―――――――――――――――
上昇分SMMA(N) + 下落分SMMA(N)
上昇分SMA(N)
100×―――――――――――――
上昇分SMA(N) + 下落分SMA(N)
(え、WilderはSMMAではなくEMAを使っている?
確かに英語版ウィキペディアのRSIのページにはEMAとあるし日本語版ウィキペディアのRSIの項目にも指数移動平均とあるのですが
両ページとも指数移動平均を求める際のパラメータにα=1/14をWilderは推奨しているとあるので
MT4的にはEMAでなくSMMAということになります。
なおEMAとSMMAの違いは期間(?)Nに対してα=2/(N+1)にするかα=1/Nにするかの違いだけだそうです。
つか白状すると最初それを知らずに「MT4のRSIってWilderのEMAでもCutlerのSMAでもないのを使ってる??」とかプチパニクってましたw)

(え、CutlerはSMAではなく合計を使っている?
上の表のCutlerの式の分子と分母にそれぞれN(期間)をかけてみて下さい。
SMAは単純移動平均ですから分子と分母のそれぞれのSMA×NはつまりN期間分の合計です)

まあとにかく、ここまでわかったので『計算方法を選べるRSIインジ』にしてみました。
なお、本来ならどの計算方法を指定しても内部で与えるパラメータだけ変えて同じようにiMAOnArray関数を呼び出してRSIを計算できるはずなのですが、
EMAとSMMAでチャートの最初の辺りが値がおかしくなるのでEMAとSMMAはiMAOnArrayに頼らずに計算するように場合分けしています。

ダウンロード

RSI_multimethod.mq4 (5kB,禁転載)

パラメータ

RSIPeriod
RSIを算出するための期間。
RSIMethod
RSIを算出するための移動平均の手法。値の内訳はMoving Average method enumerationと同じ。
0(MODE_SMA), 1(MODE_EMA), 2(MODE_SMMA), 3(MODE_LWMA)のどれか。

[k-matsuのページトップ]>[FX関連]>[MT4]>[RSI_multimethod]