1,000人限定!!企画に参加してEAをGetする公式ラインに登録して
プレゼントをもらう

【MQL】RSIの決められた条件でアラートを鳴らすインジケーター【中級編】

MQL RSI アラートを鳴らす インジケーターMT4インジケーター作成

RSIの決められた条件でアラートを鳴らすインジケーター

今回はRSIの決められた条件でアラートを鳴らすインジケーターを作成していきます。

よくインジケーターでアラートを鳴らしたいというトレーダーが結構多くいますが、

アラートを鳴らすだけなら誰でも簡単にできます。

今回はRSIを活用してアラートを鳴らすインジケーターを作成していきます。

  • RSIの70以上か30未満でアラートを鳴らす

メタエディタ(MetaEditor)を立ち上げる

メタエディタ(MetaEditor)を立ち上げましょう。操作は以下に記載しています。

【MQL】カスタムインジケーターを作成の流れについてわかりやすく説明してみた

今回は名前を「RSI-Alert」で作成します。

グローバル変数を記述する

グローバル変数を記述します。フラッグを用意したのは一度だけアラートを鳴らしたいからです。

OnCalculate()関数はティックが動く(ローソク足が動く)毎に呼ばれる関数ですので、

アラートの鳴る条件が満たされている限りなり続けるので、

今回は簡易的にアラートの鳴るタイミングをフラッグで制御しています。

int up_flag = 0;//上矢印フラッグ
int down_flag = 0;//下矢印フラッグ

これでグローバル変数を記述は完了です。

int up_flag = 0;//上矢印フラッグ
int down_flag = 0;//下矢印フラッグ
Copy

パラメータを記述する

パラメータを記述しましょう。RSIの期間を決められるようにします。

input int RSI_Period = 14;//RSIの期間

これでパラメータの記述は完了です。

input int RSI_Period = 14;//RSIの期間
Copy

OnCalculateを記述する

OnCalculateを記述します。double型のRSI変数を作成します。

double RSI;//RSIの変数

iRSIというのはRSIのインジケーター関数になります。iRSI関数については以下の記事を参照してください。

【MQL】RSIの値を取得する『iRSI関数』についてわかりやすく説明してみた
iRSI関数 RSIとは、テクニカル指標の1つでRelative Strength Indexの頭文字を取った略語になります。 RSIを日本語に訳すと相対力指数になります。 相対力指数は買われ過ぎか売られ過ぎかを判断するための...

このiRSIデータをRSIに代入します。

RSI = iRSI(NULL,0,14,PRICE_CLOSE,0);//RSIのインジケーター関数

RSIが30以下だった時に

if(RSI <= 30)//RSIが30以下の場合

up_flagが立っていなければアラートを鳴らします。

アラートを鳴らし終わった後にup_flagを1にしてdown_flagを0にしています。

flagを制御することで一度RSIが超えればアラートを連続で鳴らなくなります。

if(up_flag == 0)//up_flagが0の場合
         {
             Alert(" ロングトエントリー RSI = ",RSI);//アラートを鳴らす
             up_flag = 1;//up_flagを1にする
             down_flag = 0;//down_flagを0にする
         }

今度は、逆に70以上だった時に

else if(RSI >= 70)//RSIが70以上の場合

down_flagが立っていなければアラートを鳴らします。

そしてアラートを鳴らし終わった後にdown_flagを1にしてup_flagを0にします。

         if(down_flag == 0)//down_flagが0の場合
         {
             Alert("  ショートエントリー  RSI = ",RSI);//アラートを鳴らす
             down_flag = 1;//down_flagを1にする
             up_flag = 0;//up_flagを0にする
         }

最後にどちらもでもない場合はどちらのフラッグも0にしましょう。

else //RSIが70以上でも30以下でもない場合
    {
        up_flag = 0;//up_flagを0にする
        down_flag = 0;//down_flagを0にする
    }

これでOnCalculate関数は完了です。

     double RSI;//RSIの変数
     RSI = iRSI(NULL,0,RSI_Period,PRICE_CLOSE,0);//RSIのインジケーター関数
     if(RSI <= 30)//RSIが30以下の場合
     {
         if(up_flag == 0)//up_flagが0の場合
         {
             Alert(" ロングトエントリー RSI = ",RSI);//アラートを鳴らす
             up_flag = 1;//up_flagを1にする
             down_flag = 0;//down_flagを0にする
         }
    }
    else if(RSI >= 70)//RSIが70以上の場合
    {
         if(down_flag == 0)//down_flagが0の場合
        {
             Alert("  ショートエントリー  RSI = ",RSI);//アラートを鳴らす
             down_flag = 1;//down_flagを1にする
             up_flag = 0;//up_flagを0にする
         }
    }
    else //RSIが70以上でも30以下でもない場合
    {
        up_flag = 0;//up_flagを0にする
        down_flag = 0;//down_flagを0にする
    }
Copy

コンパイルする

コンパイルしましょう。条件に合うとアラートが表示されていれば完了です。

MQL インジケーター アラート 

ソースコード全体

RSI-Alertのソースコード全体は以下に記載しています。

//+------------------------------------------------------------------+
//|                                                    RSI-Alert.mq4 |
//|                     Copyright 2020, FX-EA System Project Creator |
//|                        https://creator.fx-ea-system-project.com/ |
//+------------------------------------------------------------------+
#property copyright "Copyright 2020, FX-EA System Project Creator"
#property link      "https://creator.fx-ea-system-project.com/"
#property version   "1.00"
#property strict
#property indicator_chart_window

/*フラッグ*/
int up_flag = 0;//上矢印フラッグ
int down_flag = 0;//下矢印フラッグ

/*パラメータ*/
input int RSI_Period = 14;//RSIの期間
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping

//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| 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[])
  {
//---
     double RSI;//RSIの変数
     RSI = iRSI(NULL,0,RSI_Period,PRICE_CLOSE,0);//RSIのインジケーター関数
     if(RSI <= 30)//RSIが30以下の場合
     {
         if(up_flag == 0)//up_flagが0の場合
         {
             Alert(" ロングトエントリー RSI = ",RSI);//アラートを鳴らす
             up_flag = 1;//up_flagを1にする
             down_flag = 0;//down_flagを0にする
         }
    }
    else if(RSI >= 70)//RSIが70以上の場合
    {
         if(down_flag == 0)//down_flagが0の場合
         {
             Alert("  ショートエントリー  RSI = ",RSI);//アラートを鳴らす
             down_flag = 1;//down_flagを1にする
             up_flag = 0;//up_flagを0にする
         }
    }
    else //RSIが70以上でも30以下でもない場合
    {
        up_flag = 0;//up_flagを0にする
        down_flag = 0;//down_flagを0にする
    }
//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+
Copy

まとめ

今までの知識があればすぐにできるレベルのプログラムとなっております。

応用もできるのでぜひアラートを鳴らすインジケーターの作り方をマスターしてください。

1,000人限定でFXの自動売買のEAを無料で配布中!!

FX-EA System Projectでは、

【1,000人限定で無料でFXの自動売買のEAを配布中】

です!!

・毎日チャートを見てるのに全く稼げなかった

・コンサルや塾に入ったけど全く稼げなかった

・裁量トレードは難しくて挫折した

・ツールやシステムを購入したが全く稼げなかった

・時間がなくて裁量トレードを行える時間がない

・自動で楽に稼ぎたい

という風に思っている方はこの企画はおすすめです。

フォワードテスト・バックテストを

しっかり行ったパフォーマンスの良いEAを提供中です!!

また、どんどん新しいEAも随時無料配布します!!

人数限定なので早いものがちです!!

もしFX-EA System Projectに興味があれば

是非参加してください。

MT4インジケーター作成 中級編
\記事が役に立ったらシェアしてね/
FX-EA System Projectをフォローする
FX-EA System Project Creator

コメント

タイトルとURLをコピーしました