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

【MQL】ある時間にポジションをエントリーして決済するEA【初級編】

MQL EA(エキスパートアドバイザー) 時間 ポジション エントリー 決済MT4EA作成

ある時間にポジションをエントリーして決済するEA

ある時間にポジションをエントリーして決済するEAを作成したいと思います。

  • 10時にエントリーする
  • 12時に決済する
  • SLなし
  • TPなし

という感じで作っていきます。

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

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

パラメーターを記述する

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

input double LOT = 0.01;//ロット
input int SLIP = 1;//スリッページ
input int MAGIC = 12345;//マジックナンバー
Copy

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

グローバル変数を記述しましょう。

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

OnTick()関数を記述する

OnTick()関数を記述しましょう。10時時にエントリーしたいので、

if文でOrdersTotal()でポジションが無いことを確認してHour()で10時を指定します。

if(OrdersTotal() == 0 && Hour() == 10)

そして、条件が満たされていれば、ポジションを取ります。

TicketNumber = OrderSend(Symbol(), OP_BUY, LOT, Ask, SLIP, 0, 0, "BUY", MAGIC, 0, clrRed);

同様な手順で、次に時間が12時の場合に

if(OrdersTotal() > 0 &&  Hour() == 12)

ポジションを決済します。

bool Exit = OrderClose(TicketNumber, LOT, Bid, SLIP, clrDodgerBlue);

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

 if(OrdersTotal() == 0 && Hour() == 10) //オーダーが0で時間が10時である場合
    {
      TicketNumber = OrderSend(Symbol(), OP_BUY, LOT, Ask, SLIP, 0, 0, "BUY", MAGIC, 0, clrRed);//ロングエントリー
    }
   if(OrdersTotal() > 0 &&  Hour() == 12) //オーダーが0以上で時間が12時である場合
   {
      bool Exit = OrderClose(TicketNumber, LOT, Bid, SLIP, clrDodgerBlue);//ポジションを決済
   }
Copy

コンパイル

コンパイルして動きを確認しましょう。10時にエントリーして12時に決済されていたら完了です。

MQL EA(エキスパートアドバイザー) 時間指定 エントリー 決済

ソースコード全体

//+------------------------------------------------------------------+
//|                                                    10-12Hour.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 double LOT = 0.01;//ロット
input int SLIP = 1;//スリッページ
input int MAGIC = 12345;//マジックナンバー

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 && Hour() == 10) //オーダーが0で時間が10時である場合
    {
      TicketNumber = OrderSend(Symbol(), OP_BUY, LOT, Ask, SLIP, 0, 0, "BUY", MAGIC, 0, clrRed);//ロングエントリー
    }
   if(OrdersTotal() > 0 &&  Hour() == 12) //オーダーが0以上で時間が12時である場合
   {
      bool Exit = OrderClose(TicketNumber, LOT, Bid, SLIP, clrDodgerBlue);//ポジションを決済
   }

  }
//+------------------------------------------------------------------+
Copy

まとめ

これで時間指定の条件でEAを制御することができましたね。

コメント

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