2016年9月8日木曜日

[MT4インジケータ]モメンタムMAかい離率


■モメンタムMAからのかい離率

さて、「[MT4インジケータ]遅れている分は足せばいい。単純移動平均に遅れ分の差分を足しこむ。

で、単純移動平均の差分を足しこみ、遅れ分を消してみた移動平均(モメンタムMA)を描画してみました。
これでトレンド時には、価格の中心値にラインが来ていると仮定してしまいます。

ということは、かい離率を取るとトレンド外の動きが取れるのでは?ということでかい離率を出してみました。

EURUSDにおいては0.5%が一つの突っ込みラインになっているように思われます。短期トレードとして1時間足の突っ込みにて逆張りチャレンジというEAも面白いかもしれませんね。まぁEU離脱のようなイベントがあると死にそうですが(^^;;;

//------------------------------------------------------------------
// モメンタムMA 乖離率
#property copyright "Copyright 2016,  Daisuke"
#property link      "http://mt4program.blogspot.jp/"
#property version   "1.00"
#property strict
#property indicator_separate_window
#property indicator_maximum 2
#property indicator_minimum -2
#property indicator_level1 0.5
#property indicator_level2 -0.5
#property indicator_level3 1
#property indicator_level4 -1

//バッファーを指定する。
#property indicator_buffers 1

//プロット数を指定する。
#property indicator_plots   1

#property indicator_label1  "MoMa"
#property indicator_type1   DRAW_LINE
#property indicator_color1  clrAqua
#property indicator_style1  STYLE_SOLID
#property indicator_width1  1

input int MaPeriod = 21;  // 期間

double ma1[];
double s1p[];
double s1m[];

//------------------------------------------------------------------
//初期化
int OnInit()
{
   //インジケーターバッファを初期化する。
   int count = 0 ;
   SetIndexBuffer(count++, ma1);
   SetIndexBuffer(count++, s1p);
   SetIndexBuffer(count++, s1m);

   string short_name = "MOMA";
   IndicatorShortName(short_name);

   return INIT_SUCCEEDED;
}

//------------------------------------------------------------------
//計算イベント
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[])            //スプレット
{
   for( int i = 0; i < rates_total - prev_calculated && !IsStopped(); i++ )
   {
      double manow = iMA(Symbol(), PERIOD_CURRENT, MaPeriod, 0, MODE_SMA, PRICE_CLOSE, i);
      double mabefore = iMA(Symbol(), PERIOD_CURRENT, MaPeriod, 0, MODE_SMA, PRICE_CLOSE, i + (MaPeriod - 1) / 2);

      double ma = manow + (manow - mabefore);

      if( ma != 0 ) ma1[i] = (close[i] - ma) * 100 / ma;
      
   }
   return(rates_total - 1);
}

「MT4でFXを勝ち抜く研究をするブログ」で公開している無料インジケータは、こちらの一覧から。
インジケータ一覧

Twitterもよろしくお願いします。
https://twitter.com/mt4program

ブログランキングにご協力よろしくお願いします。m(._.)m
にほんブログ村 為替ブログ MetaTraderへ
にほんブログ村

お約束ですが、本ブログは、投資に対する利益を約束する物ではありません。最終的には自己責任によるご判断よろしくお願いいたします。