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へ
にほんブログ村

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

2016年9月6日火曜日

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

お久しぶりです。
たまには、記事をと、小ネタ投入です。私のブログで、などか、単純移動平均は遅れているという話をしています。(気になる方は、ブログ右の「移動平均考察シリーズ」のリンクをクリックしてみてください。

特に検証もしていませんが、遅れているなら足せばいいのでは?ということで、単純移動平均の遅れ分の差分を足しこんだ移動平均を書いてみました。

■通常の移動平均(黄色)と差分を足しこんだ移動平均(青)



・・・・むむむ?案外面白いかも?
#2016/9/7 プログラムミスってたので、修正しました。

//------------------------------------------------------------------
// モメンタムMA
#property copyright "Copyright 2016,  Daisuke"
#property link      "http://mt4program.blogspot.jp/"
#property version   "1.00"
#property strict
#property indicator_chart_window

//バッファーを指定する。
#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[];

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

   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);
   
      ma1[i] = manow + (manow - mabefore);
   }
   return(rates_total - 1);
}

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

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

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

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