ある時間にポジションをエントリーして決済する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時に決済されていたら完了です。

ソースコード全体
//+------------------------------------------------------------------+
//| 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を制御することができましたね。






コメント