- 締切済み
一日2回ポジションを持つにはどうしたらいいですか?
以前に、質問投稿した事があります。火曜から金曜日まで動かして、一日に2回だけ売買するにはどうすればいいのかわからなくて困ってます。宜しくお願いします。 --------------------------------------------------- extern string X = "Basic Settings"; //基本設定 extern int MagicNumber = 10011; //マジックナンバー extern double TakeProfit = 200; //リミット[pips] extern double StopLoss = 150; //ストップ[pips] extern double Lots = 0.1; //ロットサイズ extern int Cmd = OP_BUY; //エントリー方法[OP_BUY/OP_SELL] extern int Slippage = 30; //スリッページ extern string XX = "Order Settings"; //新規注文設定 extern bool CheckOrderDayOfWeek = false; //曜日の判定有無 extern int OrderDayOfWeek = 1; //曜日 extern bool CheckOrderHour = true; //時間の判定有無 extern int OrderHour = 7; //時間 extern bool CheckOrderMinute = true; //分の判定有無 extern int OrderMinute = 5; //分 extern bool CheckOrderSeconds = true; //秒の判定有無 extern int OrderSeconds = 0; //秒 extern string XXX = "Close Settings"; //決済注文設定 extern bool CheckCloseHour = true; //時間の判定有無 extern int CloseHour = 7;//時 //時間 extern bool CheckCloseMinute = true; //分の判定有無 extern int CloseMinute = 40;//分 //分 extern bool CheckCloseSeconds = true; //秒の判定有無 extern int CloseSeconds = 0;//秒 //秒 //+------------------------------------------------------------------+ //| 開始関数 | //+------------------------------------------------------------------+ int start() { if(OrdersTotal() == 0){ if((TimeDayOfWeek(TimeCurrent()) == OrderDayOfWeek || CheckOrderDayOfWeek == false) &&(TimeHour(TimeCurrent()) == OrderHour || CheckOrderHour == false) &&(TimeMinute(TimeCurrent()) == OrderMinute || CheckOrderMinute == false) &&(TimeSeconds(TimeCurrent()) == OrderSeconds || CheckOrderSeconds == false)) { if(Cmd == OP_BUY){ OrderSend(Symbol(), Cmd,Lots, Ask, Slippage, Ask-StopLoss*Point, Ask+TakeProfit*Point, "", MagicNumber, 0, Red); return(0); } if(Cmd == OP_SELL){ OrderSend(Symbol(), Cmd,Lots, Bid, Slippage, Bid+StopLoss*Point, Bid-TakeProfit*Point, "", MagicNumber, 0, Blue); return(0); } } } if((TimeDayOfWeek(TimeCurrent()) == OrderDayOfWeek || CheckOrderDayOfWeek == false) &&(TimeHour(TimeCurrent()) == CloseHour || CheckCloseHour == false) &&(TimeMinute(TimeCurrent()) == CloseMinute || CheckCloseMinute == false) &&(TimeSeconds(TimeCurrent()) == CloseSeconds || CheckCloseSeconds == false)) { for(int i = 0; i < OrdersTotal(); i++) { if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES) == false) { break; } if(OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber) { if(OrderType() == OP_BUY) { OrderClose(OrderTicket(), OrderLots(), Bid, Slippage, Yellow); return(0); } if(OrderType() == OP_SELL) { OrderClose(OrderTicket(), OrderLots(), Ask, Slippage, Lime); return(0); } } } } return(0); }
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- Saitar
- ベストアンサー率41% (192/464)
> 例えば 8時00分にエントリー、8時30分にクローズ 9時15分にエントリー、9時30分にクローズ 失礼ながら、単純にそういうことであれば、これだけのプログラムを書けるあなたなら(あなたが書いたのですよね?)難なく機能追加できると思うのですが。 (1)あなたがオリジナルを書いたのなら、勉強のためぜひ機能追加を勧めます。これからも自分の戦略をカタチにするには数々の壁が発生します。それを乗り越えるのが、EA作成の醍醐味です。 (2)オリジナルをどっかから持ってきたのなら(先日の危険因子を考えるとどっかに転がっていたEAとは思えませんが、、、)、やはり勉強して今のEAを理解することを勧めます。 結論は一緒です。
- Saitar
- ベストアンサー率41% (192/464)
どんな時に(何をトリガに)1日に2回に設定するのかが分からないので、回答不能です。 そもそも、提示されているプログラムで十分に時間設定できますよね? 良かったら、2回に制限する目的を教えて下さい。 (例) ・あんまり儲け過ぎるとお金にルーズになるから。 ・年齢的に1日に2回が限度だから。
補足
例えば 8時00分にエントリー、8時30分にクローズ 9時15分にエントリー、9時30分にクローズ といった感じです。よろしくお願いいたします。