ある時間にポジションをエントリーして決済する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を制御することができましたね。
コメント