[an error occurred while processing this directive]
[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]