【MT4】移動平均線との乖離率を表示する自作インジケーター

MT4移動平均線との乖離率を表示
※本ページはプロモーションが含まれています

移動平均線を見るにあたって乖離率をチェックするのに、面倒だったので表示するインジケーターを作ってみました。超簡単なつくりなので、ソースコードも公開してみました。

目次

インジケーターダウンロード

ダウンロード後、MT4のデータフォルダ内のIndicatorsフォルダ内に移動してください。

動作イメージ

チャートの左上に毎ティック更新。一応、20SMAだけでなく、よく使うであろう75SMAなども表記。作ってみてわかったけど、こういう現状把握系のインジケーターは便利ですね。

矢野テック
矢野テック

チャートは移動平均線に収束するという原理原則から、乖離率が大きいと反発して戻ってくる目安がわかります。20SMAは特に使える。

移動平均線との乖離率の計算式

計算式は以下のとおり。たぶん、合ってるはず。

((Bid – SMAの値) / SMAの値) * 100

ソースコード

自作関数display_MA_deviation_rate内で計算。戻り値は、String型の文字列が返ってきます。

OnCalculateで、関数display_MA_deviation_rateをコールすればOK。それを、Comment関数を使って表示。

//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
//---
   //乖離率計算  
   string output_str = display_MA_deviation_rate();

   //表示
   Comment(output_str);
   
//--- return value of prev_calculated for next call
   return(rates_total);
  }

//+------------------------------------------------------------------+
//| 移動平均線との乖離率計算
//+------------------------------------------------------------------+  
string display_MA_deviation_rate(){
   string my_ret="";

   //SMA
   double now_sma = iMA(NULL,PERIOD_CURRENT,20,0,MODE_SMA,PRICE_CLOSE,0);
   double now_sma_75 = iMA(NULL,PERIOD_CURRENT,75,0,MODE_SMA,PRICE_CLOSE,0);
   double now_sma_200 = iMA(NULL,PERIOD_CURRENT,200,0,MODE_SMA,PRICE_CLOSE,0);

   //乖離率の計算
   double deviation_rate = ((Bid - now_sma) / now_sma) * 100; 
   double deviation_rate_75 = ((Bid - now_sma_75) / now_sma_75) * 100; 
   double deviation_rate_200 = ((Bid - now_sma_200) / now_sma_200) * 100; 

   //小数点の桁合わせ
   deviation_rate = NormalizeDouble(deviation_rate,int(MarketInfo(Symbol(),MODE_DIGITS)));
   deviation_rate_75 = NormalizeDouble(deviation_rate_75,int(MarketInfo(Symbol(),MODE_DIGITS)));
   deviation_rate_200 = NormalizeDouble(deviation_rate_200,int(MarketInfo(Symbol(),MODE_DIGITS)));

   //戻り値
   my_ret= "\n\n【移動平均線との乖離率】\n\n" + 
           "20SMA  " + string(deviation_rate) + "%\n\n"+
           "75SMA  " + string(deviation_rate_75) + "%\n\n"+
           "200SMA " + string(deviation_rate_200) + "%\n\n\n\n";

   return my_ret;
}

インジケーターダウンロード

ご要望があったので、EX4ファイル(実行ファイル)をダンロードできるようにしました。ZIP形式で圧縮しています。解凍してご利用ください。

あわせて読みたい

ブログランキングに参加してます。この記事が少しでもお役に立ちましたら、応援ポチっとお願いします。

にほんブログ村 為替ブログ システムトレード 自作EA派へ
にほんブログ村

お友達にMT4インジケータープレゼント中

機械学習使った日々の予測結果や、細かい試行錯誤の結果はLINEで公開しています。パスワード付き記事もこちらから。

また、今ならお友達には矢野テック自作のMT4用のインジケーターをプレゼント中です。

友だち追加

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

この記事を書いた人

プログラマー。FXのMT4を使った自動売買EA作成やBOT作成などが趣味。2016年から元本10万円をどこまで増やせるか挑戦中。一旦は10万⇒700万⇒2017暴落 20万。ガチホからFXトレードに変更。 現在1000万円。その過程やノウハウは無料メール講座にまとめました。1か月で学べます。→無料メール講座

ご質問はコメント欄からお願いします

コメントする

目次