MT4 EA作り方メモ 指定時間でエントリーする方法
MT4のEAでエントリーする時間を指定する方法はたくさんあるが、一番簡単なのは
1 2 3 4 |
if(TimeHour(TimeCurrent()) ==エントリー時間用変数 ) { OrderSend(......); } |
こういう書き方
エントリー時間用変数は、適当に名前を付けて、変数で回せるようにしておくと便利です。
ですが、このルールだと指定時間には無限にポジションをってしまうので、連続でポジションを取らないようにするルールが必要です。 1ポジだけでいいなら、自分のポジション数を調べて、ポジションを持ってない場合のみ、OrderSend関数を使用するようにします。
たとえば、1ポジションしかとらないようにするなら、このように記述します。
この処理は自分がポジションを持っていない場合のみエントリーするようになっています。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
//----現在のポジション状況を確認------ int BuyPos=0; int SellPos=0; for(int pos=0; pos<OrdersTotal(); pos++) { if(OrderSelect(pos,SELECT_BY_POS,MODE_TRADES) == false) break; if(OrderType() == OP_BUY) BuyPos++; if(OrderType() == OP_SELL) SellPos--; } //ポジションチェック分終わり //買い指定時刻なら買いポジをとる if(TimeHour(TimeCurrent()) ==BuyEnt && BuyPos==0) { OrderSend(Symbol(),OP_BUY,Lots,Ask,Slippage,Ask-(SL*Point),Ask+(TP*Point),"buy_by_sazaBS",magic,0,Blue); } |
MT4の時間周りの関数
MT4には時間を返す変数が定義されていて、よく使うものは以下
- TimeHour() 時間を取得する
- TimeDay() 日付を取得する
- TimeMinute() 分を取得する
- TimeDayOfWeak() 曜日を取得する 0から日曜日、1月曜、2火曜となる
TimeCurrent()はサーバー時間を返しています。
詳しくは指定時間にポジションをとるEAのコードを見てみてください
指定時間でエントリーするEA
前回、fxonで販売されているEA、「さざなみ」を検証してみました。
確かに、決まった時間にエントリーして、決まった時間に決済するだ...