RSIが70以上か30未満で逆張りトレードするEA
RSIが70以上か30未満で逆張りトレードするEAを作成したいと思います。
メタエディタ(MetaEditor)を立ち上げる
メタエディタ(MetaEditor)を立ち上げましょう。今回は名前を「RSI-7030」で作成します。
パラメーターを記述する
パラメーターを記述しましょう。
input int TakeProfit = 5;//利確(pips)。 input double Lots = 0.01;//ロット数 input int MagicNumber = 12345;//マジックナンバー
Copy
OnTick()関数を記述する
OnTick()関数を記述しましょう。
まず、OrdersTotal()でポジションが0なのを確認してRSIが30以下の場合という条件にします。
if(iRSI(Symbol(),0,14,PRICE_CLOSE,0) < 30 && OrdersTotal() == 0)
条件を満たしていればロングのポジションを持ちます。
OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,Ask+TakeProfit*Point*10,"Order Long",MagicNumber,0,Lime);
ショートエントリーも同様にOrdersTotal()でポジションが0なのを確認して70以上の場合という条件にします。
if(iRSI(Symbol(),0,14,PRICE_CLOSE,0) > 70 && OrdersTotal() == 0)
条件が満たされていればショートのポジションを持ちます。
OrderSend(Symbol(),OP_SELL,Lots,Bid,3,0,Bid-TakeProfit*Point*10,"Order Short",MagicNumber,0,Red);
これでOnTick()関数は完了です。
   if(iRSI(Symbol(),0,14,PRICE_CLOSE,0) < 30 && OrdersTotal() == 0) //RSIが30以下でオーダーが0の時
  {
     OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,Ask+TakeProfit*Point*10,"Order Long",MagicNumber,0,Lime); 
   } 
   if(iRSI(Symbol(),0,14,PRICE_CLOSE,0) > 70 && OrdersTotal() == 0)//RSIが70以上でオーダーが0の時
   {
     TOrderSend(Symbol(),OP_SELL,Lots,Bid,3,0,Bid-TakeProfit*Point*10,"Order Short",MagicNumber,0,Red);
   }
  }Copy
ソースコード全体
//+------------------------------------------------------------------+
//|                                                     RSI-7030.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 TakeProfit = 5;//利確(pips)。
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()
  {
//---
   if(iRSI(Symbol(),0,14,PRICE_CLOSE,0) < 30 && OrdersTotal() == 0) //RSIが30以下でオーダーが0の時
  {
     OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,Ask+TakeProfit*Point*10,"Order Long",MagicNumber,0,Lime); 
   } 
   if(iRSI(Symbol(),0,14,PRICE_CLOSE,0) > 70 && OrdersTotal() == 0)//RSIが70以上でオーダーが0の時
   {
     OrderSend(Symbol(),OP_SELL,Lots,Bid,3,0,Bid-TakeProfit*Point*10,"Order Short",MagicNumber,0,Red);
   }
  }
//+------------------------------------------------------------------+Copy






コメント