【インジケーター】VLDMIを作ってトレードスキルを大幅に向上させよう

今回は、トレーダーに人気のあるVLDMIインジケーターについてお話したいと思います。

目次

VLDMIとは

そもそもVLDMIとは何かというと、RSIインジケーターの指定する期間がボラティリティ(価格変動率)によって変わるインジケーターです。

価格の変動率を標準偏差を使って計算し、それに応じて1本1本期間を変えているということです。

RSIと何が違うのか?

RSI(14)のインジケーターを表示する場合、常に14本分のロウソク足を計算して表示されるので、14という期間が変わることはありません。

VLDMI(14)の場合は、は、ボラティリティによって、計算するロウソク足が最短7本に変化したRSI(7)の値が表示されたり、最長28本に変化RSI(28)に変化したりします。

つまり、ロウソク足1本毎にRSIの期間が7~28の間で変化するインジケーターです。

VLDMIは使い物にならない?

人気のあるVLDMIインジケーターですが、ちらほら使い物にならないという声を聞きます。

そもそもすべてのインジケーターは、使い物になるかならないかではなく、トレーダー自身がどう使いこなすか?なので、各自で判断すれば良いだけの話です。

エイツ

偉そうなこと言ってすいません…

ネット上に落ちているVLDMIインジケーターは、無駄な計算式が多く処理を重複して実施している箇所が見受けられます。

標準偏差を計算するiStdDev関数が繰り返し使われているので、これが処理を重くしている原因でもあります。

それにもかかわらず重複して計算してしまっているので、ヒストリカルデータが少ないMT4では問題なく動くのですが、少しでも多いデータを持つMT4の場合はフリーズしてしまいます。

バックテストなど過去足検証をしたい場合は、使い物にならないというわけです。

どうやって作るのか?

これを解消したVLDMIインジケーターを作成しました。

計算方法などは、ネット上に落ちているものと変わりありませんが、重複して計算しないよう工夫することで軽量化に成功しました。

メインのコード部分を記載すると以下の通りです。

for(int i = limit - AvgPeriod; i >= 0; i--)
   {
      int bufcount = AvgPeriod;
      ArrayResize(buf,bufcount);
      
      if(IntervalTime != iTime(NULL,NULL,i))
      {
         for(int x = bufcount - 1; x > 0; x--)
         {
            buf[x]=buf[x-1];
         }
         IntervalTime = iTime(NULL,NULL,i);
      }
      
      buf[0] = iStdDev(NULL,NULL,StdvPeriod,0,MODE_SMA,applied_price,i);
      
      double StdSum = iMAOnArray(buf,0,AvgPeriod,0,MODE_SMA,0);
      
      if(buf[0] == 0 || StdSum == 0) VLDMI[i] = 1;
      else
      {
         double Vl = BasePeriod * StdSum / buf[0];
         double StdPeriod = MathMax(BasePeriod/2,MathMin(BasePeriod*2,Vl));
         
         VLDMI[i] = iRSI(NULL,NULL,(int)StdPeriod,PRICE_CLOSE,i);
         
         if(VLDMI[i] >= HighLevel)
            HighVLDMI[i] = VLDMI[i];
         else if(VLDMI[i] <= LowLevel)
            LowVLDMI[i] = VLDMI[i];
      }
   }

bufという配列を用意し、標準偏差を計算した値を格納してますが、同じ部分を繰り返し計算しないように、配列要素を1つずつずらしているというところが重要部分かと思います。

エイツ

説明ムズイ…

【YouTube動画公開】ボラティリティ(価格変動率)によって期間を変えるVLDMIインジケーター

書き写すだけでも勉強になるので、是非チャレンジしてみてほしいです。

自分で作ったら目いっぱい活用しましょう!

このインジケーターはどう役立つの?

VLDMIは単体だけでも使えるインジケーターと言われています。

閾値80/20を超えたら反発を狙うというだけでも良いかもしれません。

あとは、ボラティリティによって期間が変化するRSIインジケーターということもあるので、RSI(7)とVLDMI(14)の両方が80/20を超えていて、かつ両方の値が同じ場合、というのも良いかもしれません。

価格変動率が大きい時に期間も短くなるという計算式なので、上記の条件が一致するということは、VLDMI(14)の計算式がRSI(7)と同じとき、ということが言えます。

アイデアは無限にありますので、色々チャレンジしてみてください。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメント一覧 (1件)

コメントする

目次