Pedroxxmod_www.forex-instruments.info





//+---------------------------------------------------------------------+
//|                        Pedro.mq4                                    |
//|	                     Name := Venezuelan Investment Group          |
//|	                     Author := Pedro Echenagucia                  |
//|	                     Link   := http://www.veninvgroup.com/        |
//+---------------------------------------------------------------------+
#property copyright "Pedro Echenagucia"
#property link      "http://www.veninvgroup.com"
//----
#define ID 98698
//----
extern double Lots=1;
extern int StopLoss=30,TakeProfit=50;
extern int GAP=5,MaxTrades=10,ReEntryGAP=1,tStop=10,tPips=0,StartHour=1,EndHour=23;
extern bool MM=1;
extern int MaxLots=50,StartYear=2006;
double Entry=0,ReEntry=0;
int Dir=0;
int i=0;
double nLots=0;
int nTrades=0;
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
  int start()
  {
   //if( Year()<StartYear )return(0);
     if (Hour()<StartHour) 
     {
      Entry=0;
      //	ReEntry=0;
      return(0);
     }
     if(Hour()>EndHour) 
     {
      Entry=0;
      //	ReEntry=0;
      return(0);
     }
     if(nTrades()< MaxTrades)
     {
      Trade();
      Comment("Trade");
     }
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
  void Trade()
  {
     if (MM) 
     {
      nLots=MathFloor(AccountEquity()/20000);
      if (nLots < 1)nLots=1;
      if (nLots > MaxLots )nLots=MaxLots;
      }
       else 
      {
      nLots=Lots;
     }
     if(Entry>0)
     {
        if(Ask>=Entry+GAP*Point)
        {
         OrderSend(Symbol(),OP_SELL,nLots,Bid,1,Bid+StopLoss*Point,Bid-TakeProfit*Point,"PedroMod",ID,0,Red);
         ReEntry=Ask;
         Print("ReEntry ",ReEntry, " Time ",TimeToStr(CurTime(),TIME_DATE|TIME_MINUTES));
         Entry=0;
         Dir=2;
         return;
        }
        if(Ask<=Entry-GAP*Point)
        {
         OrderSend(Symbol(),OP_BUY,nLots,Ask,1,Ask-StopLoss*Point,Ask+TakeProfit*Point,"PedroMod",ID,0,Blue);
         ReEntry=Ask;
         Print("ReEntry ",ReEntry, " Time ",TimeToStr(CurTime(),TIME_DATE|TIME_MINUTES));
         Entry=0;
         Dir=1;
         return;
        }
      }
       else 
      {
        if(nTrades()==0 )
        {
         Entry=Ask;
         Print("Entry ",Entry, " Time ",TimeToStr(CurTime(),TIME_DATE|TIME_MINUTES));
         ReEntry=0;
        }
     }
     if (ReEntry>0)
     {
        if(Dir==1)
        {
           if(Ask<=ReEntry+ReEntryGAP*Point )
           {
            OrderSend(Symbol(),OP_BUY,nLots,Ask,1,Ask-StopLoss*Point,Ask+TakeProfit*Point,"PedroMod",ID,0,Blue);
            if(nTrades+1<MaxTrades)ReEntry=Ask; else ReEntry=0;
            Print("ReEntry ",ReEntry, " Time ",TimeToStr(CurTime(),TIME_DATE|TIME_MINUTES));
            return;
           }
        }
        if(Dir==2 )
        {
           if(Ask>=ReEntry-ReEntryGAP*Point)
           {
            OrderSend(Symbol(),OP_SELL,nLots,Bid,1,Bid+StopLoss*Point,Bid-TakeProfit*Point,"PedroMod",ID,0,Red);
            if(nTrades+1<MaxTrades )ReEntry=Ask; else ReEntry=0;
            Print("ReEntry ",ReEntry, " Time ",TimeToStr(CurTime(),TIME_DATE|TIME_MINUTES));
            return;
           }
        }
     }
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
  int nTrades()
  {
   int g;
     for(int f=0;f<OrdersTotal();f++)
     {
        if(OrderSelect(f,SELECT_BY_POS))
        {
           if(OrderSymbol()==Symbol() && OrderMagicNumber()==ID)
           {
            g++;
           }
        }
     }
   return(g);
  }
/*
if( TrailingStop >0) {
   for(i=0;i<OrdersTotal(); i++){
	   if(OrderSelect(i,SELECT_BY_POS)){
         if (OrderSymbol()==Symbol()) {
			   switch (OrderType()) {
				case OP_BUY:				
					If OrderValue(i,VAL_STOPLOSS)<Ask-TrailingStop*Point Then 
						ModifyOrder(OrderValue(i,VAL_TICKET),OrderValue(i,VAL_OPENPRICE),ask-TrailingStop*Point, OrderValue(i,VAL_TAKEPROFIT), Blue);
				case OP_SELL:
					If OrderValue(i,VAL_STOPLOSS)>bid+TrailingStop*Point Then 
						ModifyOrder(OrderValue(i,VAL_TICKET),OrderValue(i,VAL_OPENPRICE),bid+TrailingStop*Point, OrderValue(i,VAL_TAKEPROFIT), Blue);
			};

		}
	}
}

If tStop Then {
	For i=1 to TotalTrades {
		If OrderValue(1,VAL_SYMBOL)==Symbol Then {
			Switch OrderValue(i,VAL_TYPE) {
				Case OP_BUY:				
					If OrderValue(i,VAL_STOPLOSS)<OrderValue(i,VAL_OPENPRICE) And ask>=OrderValue(i,VAL_OPENPRICE)+tStop*Point Then 
						ModifyOrder(OrderValue(i,VAL_TICKET),OrderValue(i,VAL_OPENPRICE),OrderValue(i,VAL_OPENPRICE)+tPips*Point, OrderValue(i,VAL_TAKEPROFIT), Blue);
				Case OP_SELL:
					If OrderValue(i,VAL_STOPLOSS)>OrderValue(i,VAL_OPENPRICE) And bid<=OrderValue(i,VAL_OPENPRICE)-tStop*Point Then 
						ModifyOrder(OrderValue(i,VAL_TICKET),OrderValue(i,VAL_OPENPRICE),OrderValue(i,VAL_OPENPRICE)-tPips*Point, OrderValue(i,VAL_TAKEPROFIT), Red);					
			};

		}
	}
}
*/
//+------------------------------------------------------------------+



Sample





Analysis



Market Information Used:



Indicator Curves created:


Indicators Used:



Custom Indicators Used:

Order Management characteristics:
It automatically opens orders when conditions are reached
Checks for the total of open orders

Other Features: