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

【MQL】RSIで30を下回り上抜けでロングエントリーするEA【初級編】

MQL EA(エキスパートアドバイザー) RSI エントリーMT4EA作成

RSIで30を下回り上抜けでロングエントリーするEA

RSIで30を下回り上抜けでロングエントリーするEAを作成していきたいと思います。

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

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

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

グローバル変数を記述します。TicketNumberにオーダーのチケットが入るようになっています。

static int TicketNumber;//チケットナンバー
Copy

OnTick()関数を記述する

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

OrdersTotalが0で、現在のRSIが30より大きく1つ前のRSIが30よりも下にある場合に

if(OrdersTotal() == 0 &&iRSI(Symbol(),0,14,PRICE_CLOSE,0) > 30 &&iRSI(Symbol(),0,14,PRICE_CLOSE,1) <= 30)

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

TicketNumber = OrderSend(Symbol(),OP_BUY,0.1,Ask,3,0,0,"EA",1234,0,Red);

そして、決済はRSIが70を超えた場合に

if(OrdersTotal() > 0 && iRSI(Symbol(),0,24,PRICE_CLOSE,0) >= 70)

OrderCloseで決済します。

OrderClose(TicketNumber,0.1,Bid,3,Yellow);

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

    if( OrdersTotal() == 0 &&iRSI(Symbol(),0,14,PRICE_CLOSE,0) > 30 &&iRSI(Symbol(),0,14,PRICE_CLOSE,1) <= 30)//オーダーが0で1つ前のRSIが30未満で現在のRSIが30を超えている場合
   {
     TicketNumber = OrderSend(Symbol(),OP_BUY,0.1,Ask,3,0,0,"EA",1234,0,Red); //ロングエントリー
   } 
   if(OrdersTotal() > 0 && iRSI(Symbol(),0,14,PRICE_CLOSE,0) >= 70)//オーダーが0以上でRSIが70以上の場合
   {
      OrderClose(TicketNumber,0.1,Bid,3,Yellow);//ポジションを決済
   }
  }
Copy

コンパイル

コンパイルしましょう。そしてバックテストを行って動きを確認したら完了です。

MQL EA(エキスパートアドバイザー) RSI 30 上抜け

ソースコード全体

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

static int TicketNumber;//チケットナンバー
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
   
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
   if( OrdersTotal() == 0 &&iRSI(Symbol(),0,14,PRICE_CLOSE,0) > 30 &&iRSI(Symbol(),0,14,PRICE_CLOSE,1) <= 30)//オーダーが0で1つ前のRSIが30未満で現在のRSIが30を超えている場合
   {
     TicketNumber = OrderSend(Symbol(),OP_BUY,0.1,Ask,3,0,0,"EA",1234,0,Red); //ロングエントリー
   } 
   if(OrdersTotal() > 0 && iRSI(Symbol(),0,14,PRICE_CLOSE,0) >= 70)//オーダーが0以上でRSIが70以上の場合
   {
      OrderClose(TicketNumber,0.1,Bid,3,Yellow);//ポジションを決済
   }
  }
//+------------------------------------------------------------------+
Copy

まとめ

今回はRSIを活用したEAの作り方でした。

コメント

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