- 締切済み
MT4で取引時間を指定する。
MT4である時間帯だけ取引したいのですが EA化するには、どのようなプログラムを組めばいいのでしょうか。 MT4のMovingAverageで日本時間が始まる前後に取引し 欧州時間になる前に決済したいと思っております。 よろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- takezochan
- ベストアンサー率55% (58/104)
トレード開始時刻=9時、終了時刻=16時を初期値としました。 適当にいじってください。 //マジックナンバー #define MAGIC 0000 //パラメーター extern double Lots = 0.1; extern int Slip = 3; extern int MAF_Period = 5; extern int MAS_Period =25; extern double SL = 50; extern double TP = 50; extern int Start = 9; extern int End = 16; //ポジション決済関数 void ClosePositions() { for(int i=0; i<OrdersTotal();i++) { if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break; if(OrderMagicNumber()!=MAGIC || OrderSymbol()!=Symbol()) continue; if(OrderType()==OP_BUY || OrderType()==OP_SELL) { OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),Slip,White); break; } } } //スタート関数 int start() { //トレード可否 if(IsTradeAllowed()==false) return(0); //ポジション数の確認 int Pos1 = 0; int Pos2 = 0; for(int i=0; i<OrdersTotal(); i++) { if(OrderSelect(i,SELECT_BY_POS) == false) break; if(OrderSymbol() != Symbol() || OrderMagicNumber() != MAGIC) continue; { if(OrderType() == OP_BUY) Pos1++; if(OrderType() == OP_SELL) Pos2++; } } //時間設定 int Ji = TimeHour(CurTime()); if(Ji<Start || Ji>=End) { ClosePositions(); return(0); } //各種変数の宣言 double MAF1 = iMA(NULL,0,MAF_Period,0,MODE_SMA,PRICE_CLOSE,1); double MAF2 = iMA(NULL,0,MAF_Period,0,MODE_SMA,PRICE_CLOSE,2); double MAS1 = iMA(NULL,0,MAS_Period,0,MODE_SMA,PRICE_CLOSE,1); double MAS2 = iMA(NULL,0,MAS_Period,0,MODE_SMA,PRICE_CLOSE,2); int ticket = 0; //買いシグナル if(MAF2<=MAS2 && MAF1>MAS1 && Pos1==0) { ClosePositions(); ticket = OrderSend(Symbol(),OP_BUY,Lots,Ask,Slip,Ask-SL*Point,Ask+TP*Point,"",MAGIC,0); } //売りシグナル if(MAF2>=MAS2 && MAF1<MAS1 && Pos2==0) { ClosePositions(); ticket = OrderSend(Symbol(),OP_SELL,Lots,Bid,Slip,Bid+SL*Point,Bid-TP*Point,"",MAGIC,0); } return(0); }
- agent_k
- ベストアンサー率82% (37/45)
まずは日本時間が始まる時刻がMT4のサーバータイムで何時であるかを調べます。 その時刻を基準に取引可能とする時間帯を条件式として加え、条件を満たしていればポジション作成の条件判定をさせるとよいと思います。 基準とする時刻や、その時刻から何分プラスマイナスさせるかなどはパラメーターにしておくと便利でしょう。 欧州時間についても、日本時間と同じようにします。 そしてその時刻にポジションを持っていればクローズさせるというプログラムを組めばOKでしょう。