//+------------------------------------------------------------------+
//|                                                 RLF_jhehe_v1.mq4 |
//|                                                      RedLineFred |
//|                                                                  |
//+------------------------------------------------------------------+
//|                                                                  |
//|                                                  21st June 2013  |
//|                                                                  |
//|                                                                  |
//|  Modifid by RaptorUK,  all mods marked with RaptorUK             |
//|                                                                  |
//|                                                                  |
//|                                                                  |
//+------------------------------------------------------------------+
#property copyright "RedLineFred"
#property link      ""



double 			CurrentProfit			;
int     		Slippage				= 5;												
int     		MagicNumber				;														
double 			GetOutLevel 			;
double 			CurrentGetOutLevel 		;
double 			MaxProfit				;

extern double	ProfitLevel				=100;  		// trail profit by $100
bool			ProfitLevelSet			=false;

//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
   {
   //----
   int cnt;
   double profit = 0;
   int total = OrdersTotal();
   
   for (cnt = 0; cnt < total; cnt++) 
      {
      OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
      CurrentProfit += OrderProfit() + OrderSwap() + OrderCommission();
   	}
	
	
	if(CurrentProfit > MaxProfit) MaxProfit=CurrentProfit;
	
//	if(MaxProfit > ProfitLevel) 
	if(MaxProfit > ProfitLevel && !ProfitLevelSet)   //  modified by RaptorUK
      {
		GetOutLevel = MaxProfit-ProfitLevel;
		ProfitLevelSet = true;
      }	

	if(ProfitLevelSet && CurrentProfit < GetOutLevel) // close all trades
	   {
//		for(int Counter = 0; Counter <= OrdersTotal()-1; Counter++)
		for(int Counter = OrdersTotal()-1; Counter >= 0; Counter--)   //  modified by RaptorUK
		   {
			OrderSelect(Counter,SELECT_BY_POS);
			if(OrderType() == OP_SELL || OrderType() == OP_BUY ) 
			   {
				// Close Order
				int CloseTicket = OrderTicket();
				double CloseLots = OrderLots();
				while(IsTradeContextBusy()) Sleep(10);
				if(OrderType() == OP_SELL) 
				   {
					double ClosePrice = MarketInfo(OrderSymbol(),MODE_ASK);
				   }
				else ClosePrice = MarketInfo(OrderSymbol(),MODE_BID);

				bool Closed = OrderClose(CloseTicket, CloseLots, ClosePrice, Slippage, Red);
//				Counter--;   //  modified by RaptorUK
			   }
		   }
      //  reset MaxProfit for the next run . . .
      MaxProfit = 0;    //  modified by RaptorUK
   
      ProfitLevelSet = false;
	   }
   //----
   return(0);
   }
//+------------------------------------------------------------------+