MQL4でのカトラーのRSI(Cutler’s RSI)の実装方法

スポンサーリンク

RSIには2種類ある

RSIには2種類あり、1つは元祖でワイルダー(Wilder)という人が考えた方式、そしてもう1つはワイルダーのRSIを改良したRSIです。

ワイルダーのRSIは指数移動平均を使い、カトラーのRSIは単純移動平均を使う

しかし、このカトラーのRSIは、改良版といいながらワイルダーのRSIよりよりシンプルなものになっています。

計算式等はWikipediaでも参照していただければよいのですが、ワイルダーのRSIは指数移動平均を用い直近の値がより重く反映されるように個々の値にグラデーションを付けて重みづけをしているのに対し、カトラーのRSIは単純移動平均を用い計算期間内であれば、どの値も等しく重みづけをしています。

Relative strength index - Wikipedia

したがって、ワイルダーのRSIは直近で強い動きがないとなかなか反応しないのに対し、カトラーのRSIはじりじりとゆっくり一方向に動くトレンドでも反応します。

MT4が用意しているRSI関数はワイルダー版

MT4にはiRSI()という関数が用意されていて、これをもってRSIの値を簡単に取得できるのですが、これはワイルダーのRSIを使用しています。

iRSIの実装自体は公開されていないのですが、インジケーターの実装としてRSIのMQLが附属していて、そちらがワイルダー版の実装になっています。また、実際のEA動作によって得られた値もワイルダー版のものと同じでした。

したがって、カトラー版のRSIを使いたい場合は、自分でMQL4で実装するか、一般の人が公開しているインジケーターを探すしかありません。

カトラー版のRSIのソースコード

しかし、カトラー版のRSIをMQLで書くのはとても簡単です。なぜかというと、MT4は時系列的に過去の値にiClose()関数などで簡単にアクセスできるため、自分で過去データを配列などに保管しておく必要がないからです。

私が作成したカトラー版のRSIのMQL4コードは以下です。

double iCutlerRSI(int span)
{
   // 前回の値とくらべて、プラス・マイナスのそれぞれの合計値を保存
   double positiveSum, negativeSum;


   // 指定された期間の分の値をチェック
   for(int i=1;i<=span-1;i++)
   {
      // 1つ前の値との差分を取得
      double diff = iClose(NULL,0,i) - iClose(NULL,0,i+1);

      
      if(diff > 0)
      {
         // 値がプラスの場合はプラスの合計を加算
         positiveSum = positiveSum + diff;
      }else
      {
         // 値がマイナスの場合はマイナスの合計を加算
         negativeSum = negativeSum + MathAbs(diff);
      }
   }


   double A = positiveSum / (span -1); // プラスの平均値を取得
   double B = negativeSum / (span -1); // マイナスの平均値を取得

   
   // カトラーのRSIの式に当てはめる
   double culteRSI = 100 - 100 / (1 + A / B);
   return culteRSI;
}

実施、わずか20行ほどのコードでカトラーのRSIを求めることができました。

でも、私はMT4のEAではカトラーのRSIは使わないけどね

こういったカトラーのRSIですが、私が作成したTrendCheckHitterのEAでは使用していません。

それは、バックテストでの成績がMT4が用意てしているワイルダーのRSIに比べて、とても良くなかったからです。

これは、先にも述べた、じりじりと一方向に上がって、なかなか反転しないトレンドに、カトラーのRSIが反応してしまうせいのようでした。

この性質は、24時間チャートが動くFXのEAに使うのは致命的で、こういう一方向にじりじり上がったり下がったりするチャートはFXでは結構あるものなのです。

でも、計算が簡単たがら、日本株の自動売買では使ってます

しかし、私は現在、日本株の自動売買も行っており、そちらではワイルダーのRSIではなく、カトラーのRSIを使用しています。それはぶっちゃけ、日本株の自動売買はインジケーターも含めて自分で実装しなければならず、

カトラーのRSIのほうが計算が簡単だから(プログラミングが簡単だから)

です。物事を始めるにはシンプルであることも重要な要素です。

私はTradingViewという、チャートやインジケーターを無料で利用できるサイトを使っているのですが、そちらを見る限り、日本株取引においては、ワイルダーのRSIのほうがカトラーのRSIよりも、ダマしを多く受けるということもなく、むしろワイルダーのRSIのほうがカトラーのRSIに比べて、チャンスを逃しているようにも見えます。

TradingView – すべての市場を追跡
世界中の人々が市場をチャート化して、チャット、トレードを行う場所です。トレーダーと投資家の為のスーパーチャートプラットフォームとSNSを提供しています。ご登録は無料です。

今後の日本株の自動売買の成績を見て、カトラーのRSIではダマしを多く受けるなどの問題が発生すれば、カトラーのRSIからワイルダーのRSIへ自動売買プロクラムのロジックを変更していきたいと思います。

コメント