//+------------------------------------------------------------------+ //| CloseAllAtTakeProfit.mq4 | //| Copyright © 2007, fxtrader625 | //| http://www.forexampletrades.com | //| Donations : paypal@forexampletrades.com | //+------------------------------------------------------------------+ #property copyright "Copyright © 2007, fxtrader625" #property link "http://www.forexampletrades.com" datetime LastClosedTime; int init() { LastClosedTime = 0; // Skip over previously closed history trades TradeClosedWithProfitTaken(); return(0); } bool TradeClosedWithProfitTaken() { datetime lastClosedTime = LastClosedTime; bool ClosedWithProfit = false; for (int i = OrdersHistoryTotal(); i > 0; i--) { OrderSelect(i-1,SELECT_BY_POS,MODE_HISTORY); if (OrderCloseTime() > LastClosedTime) { if (OrderCloseTime() > lastClosedTime) { lastClosedTime = OrderCloseTime(); } if (OrderType() == OP_BUY || OrderType() == OP_SELL) { if (OrderTakeProfit() == OrderClosePrice()) { ClosedWithProfit = true; } } } } LastClosedTime = lastClosedTime; return(ClosedWithProfit); } string GetLastClosedTradeTimeString() { if (LastClosedTime > 0) { string Text = "Date of the Last Closed Order : "; Text = StringConcatenate(Text, TimeYear(LastClosedTime),"."); Text = StringConcatenate(Text, TimeMonth(LastClosedTime),"."); Text = StringConcatenate(Text, TimeDay(LastClosedTime)," "); Text = StringConcatenate(Text, "Time : "); Text = StringConcatenate(Text, TimeHour(LastClosedTime),":"); if (TimeMinute(LastClosedTime) < 10) { Text = StringConcatenate(Text, "0", TimeMinute(LastClosedTime),":"); } else { Text = StringConcatenate(Text, TimeMinute(LastClosedTime),":"); } if (TimeSeconds(LastClosedTime) < 10) { Text = StringConcatenate(Text, "0", TimeSeconds(LastClosedTime)); } else { Text = StringConcatenate(Text, TimeSeconds(LastClosedTime)); } return(Text); } else { return("No trades were recently closed."); } } int start() { Comment(GetLastClosedTradeTimeString()); // Close all other trades if one trade has been profit taken if (TradeClosedWithProfitTaken()) { for (int i = OrdersTotal(); i > 0; i--) { OrderSelect(i-1,SELECT_BY_POS,MODE_TRADES); if (OrderType() == OP_BUY) { OrderClose(OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_BID),3); } else if (OrderType() == OP_SELL) { OrderClose(OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_ASK),3); } else if (OrderType() >= 2) { OrderDelete(OrderTicket()); } } } return(0); }