FX-EA System Projectはこちら公式ラインに登録して
プレゼントをもらう

【MQL】短期・長期の2種類のRSIを使ったEA【中級編】

MQL MT4 RSI 短期 長期 EAMT4EA作成

短期・長期の2種類のRSIを使ったEA

短期・長期の2種類のRSIを使ったEAを作成したいと思います。

  • RSI短期3が10以下で長期RSI14が30以下でロングエントリー
  • RSI短期3が90以上で長期RSI14が70以上でショートエントリー

という2つのRSIが条件が重なったらエントリーします。

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

メタエディタ(MetaEditor)を立ち上げましょう。今回は名前を「double-RSI」で作成します。

パラメーターを記述する

パラメーターを記述しましょう。

input int Fast = 3;//短い期間のRSI
input int Slow = 14;//長い期間のRSI
input int TakeProfit = 5;//利確
input double Lots = 0.01;//ロット数
input int MagicNumber = 12345;//マジックナンバー
Copy

OnTick()関数を記述する

OnTick()関数を記述しましょう。

まず、それぞれの変数にiRSI関数の値を代入します。

double FastRSI = iRSI(NULL, 0, Fast, PRICE_CLOSE, 0);
double SlowRSI = iRSI(NULL, 0, Slow, PRICE_CLOSE, 0);

OrdersTotal()が0でSlowRSIが30以下でFastRSIが10以下の場合に

if(OrdersTotal() == 0 && SlowRSI < 30 && FastRSI < 10)

ロングのポジションを持ちます。

OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,Ask+TakeProfit*Point*10,"Order Long",MagicNumber,0,Lime);

ショートは逆で、OrdersTotal()が0でSlowRSIが70以上でFastRSIが90以上の場合に

if(OrdersTotal() == 0 && SlowRSI > 70 && FastRSI > 90)

ショートポジションを持ちます。

OrderSend(Symbol(),OP_SELL,Lots,Bid,3,0,Bid-TakeProfit*Point*10,"Order Short",MagicNumber,0,Red);

これでOnTick()関数は完了です。

   double FastRSI = iRSI(NULL, 0, Fast, PRICE_CLOSE, 0);//短い期間のRSI
   double SlowRSI = iRSI(NULL, 0, Slow, PRICE_CLOSE, 0);//長い期間のRSI

   if(OrdersTotal() == 0 && SlowRSI < 30 && FastRSI < 10)//トータルポジションが0でSlowRSIが30より低くFastRSIが10より低い場合 
   {
    OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,Ask+TakeProfit*Point*10,"Order Long",MagicNumber,0,Lime);//ロングエントリー 
   }
   if(OrdersTotal() == 0 && SlowRSI > 70 && FastRSI > 90)//トータルポジションが0でSlowRSIが70より大きくFastRSIが90より大きい場合
   {
    OrderSend(Symbol(),OP_SELL,Lots,Bid,3,0,Bid-TakeProfit*Point*10,"Order Short",MagicNumber,0,Red);//ショートエントリー
   }
Copy

コンパイルする

コンパイルしましょう。動きを確認できたら完了です。

ソースコード全体

//+------------------------------------------------------------------+
//|                                                   Double-RSI.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

/*パラメーター*/
input int Fast = 3;//短い期間のRSI
input int Slow = 14;//長い期間のRSI
input int TakeProfit = 5;//利確
input double Lots = 0.01;//ロット数
input int MagicNumber = 12345;//マジックナンバー
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
   
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
   double FastRSI = iRSI(NULL, 0, Fast, PRICE_CLOSE, 0);//短い期間のRSI
   double SlowRSI = iRSI(NULL, 0, Slow, PRICE_CLOSE, 0);//長い期間のRSI

   if(OrdersTotal() == 0 && SlowRSI < 30 && FastRSI < 10)//トータルポジションが0でSlowRSIが30より低くFastRSIが10より低い場合 
   {
     OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,Ask+TakeProfit*Point*10,"Order Long",MagicNumber,0,Lime);//ロングエントリー 
   } 
   if(OrdersTotal() == 0 && SlowRSI > 70 && FastRSI > 90)//トータルポジションが0でSlowRSIが70より大きくFastRSIが90より大きい場合
   {
     OrderSend(Symbol(),OP_SELL,Lots,Bid,3,0,Bid-TakeProfit*Point*10,"Order Short",MagicNumber,0,Red);//ショートエントリー
   }
}
//+------------------------------------------------------------------+
Copy

まとめ

コメント

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