PerkyProNrtr

Profit factor:
0.00
Orders Execution
Checks for the total of open ordersIt Closes Orders by itself It automatically opens orders when conditions are reachedIt can change open orders parameters, due to possible stepping strategy
1 Views
0 Downloads
0 Favorites
PerkyProNrtr
/*-----------------------------+
|			       |
| Shared by www.Aptrafx.com    |
|			       |
+------------------------------*/

//+------------------------------------------------------------------+
//|                                                     perky.mq4    |
//|                      perky Aint no turkey (most of the time)     |
//+------------------------------------------------------------------+

// Version 1.0 
extern double Lots=1;
extern int StopLoss = 40;
extern int TrailingStop = 0;
extern int ProfitTarget = 999;
extern int SignalCandle=1;
extern int Slippage = 3;
extern double BIG_JUMP=30.0;       // Check for too-big candlesticks (avoid them)
extern double DOUBLE_JUMP=55.0;
   // Check for pairs of big candlesticks
   extern  int ADXbarrier=24;    
   double proup,prodown,NRTRup,NRTRdown;
    bool trade=false;
    bool TradeAllowed=false;
   
int init() 
{
  if (Period() != PERIOD_M30)
  {
   // Alert("Please run on M30 chart");
  }
}
   // Bar handling
datetime bartime=0;                      // used to determine when a bar has moved
int      bartick=0;                       //Tick counter

int start()
{
// bar counting
   if(bartime!=Time[0]) 
     {
      bartime=Time[0];
      bartick++; 
      TradeAllowed=true;
     }
  
    
      proup  =iCustom(Symbol(),Period(),"Prosource",0,SignalCandle); //up
      prodown=iCustom(Symbol(),Period(),"Prosource",1,SignalCandle);//down 
     NRTRup  =iCustom(Symbol(),Period(),"NRTR_color_line",0,SignalCandle); //up
     NRTRdown=iCustom(Symbol(),Period(),"NRTR_color_line",1,SignalCandle);//down 
    

Comment ("UP ",NRTRup,"DN ",NRTRdown,"Proroup ",proup,"Prodown ",prodown);

// Was there a sudden jump?  Ignore it...
 // if((MathAbs(Open[1]-Open[0])/Point)>=BIG_JUMP) {
   // return(0);
 // }
 // if((MathAbs(Open[2]-Open[1])/Point)>=BIG_JUMP) {
   // return(0);
  //}
  //if((MathAbs(Open[3]-Open[2])/Point)>=BIG_JUMP) {
   // return(0);
 // }
 // if((MathAbs(Open[4]-Open[3])/Point)>=BIG_JUMP) {
   // return(0);
 // }
 // if((MathAbs(Open[5]-Open[4])/Point)>=BIG_JUMP) {
    //return(0);
  //}
  //if((MathAbs(Open[2]-Open[0])/Point)>=DOUBLE_JUMP) {
    //return(0);
  //}
 // if((MathAbs(Open[3]-Open[1])/Point)>=DOUBLE_JUMP) {
    //return(0);
 // }
  //if((MathAbs(Open[4]-Open[2])/Point)>=DOUBLE_JUMP) {
   // return(0);
 // }
 // if((MathAbs(Open[5]-Open[3])/Point)>=DOUBLE_JUMP) {
   // return(0);
 // }
   
  int NumTrades = 0;
  
  for (int i = 0; i < OrdersTotal(); i++)
  {
    OrderSelect(i, SELECT_BY_POS);
 
    if (OrderSymbol() == Symbol())
    {
      if (OrderType() == OP_BUY )
      {
          if( proup >9999 || NRTRup==0)      
             OrderClose(OrderTicket(), 1, Bid, Slippage);        return(0);
      }
     if (OrderType() == OP_SELL )
      {
          if( prodown>9999 || NRTRdown==0)
      OrderClose(OrderTicket(), 1, Ask, Slippage);
      }    
      NumTrades++;
    }
  }
  
  if (NumTrades == 0) 
  {
       
  
      if( TradeAllowed && proup<9999 && NRTRup>0)  
      {
      OrderSend(Symbol(), OP_BUY, Lots, Ask, 2, Ask - StopLoss * Point, Ask + ProfitTarget * Point, 0,LimeGreen); 
      trade=false;
      return(0);
    }
     
       

      if(TradeAllowed && prodown<9999 && NRTRdown>0) 
      {
      OrderSend(Symbol(), OP_SELL, Lots, Bid, 2, Bid + StopLoss * Point, Bid - ProfitTarget * Point, 0,Red); 
      trade=false;
      return(0);
    }
  }
  
  if (TrailingStop > 0)
  {
    for (i = 0; i < OrdersTotal(); i++)
    {
    
      OrderSelect(i, SELECT_BY_POS, MODE_TRADES);

      if ((OrderSymbol() == Symbol()) && (OrderType() == OP_BUY) )
      {
	     if (Ask - OrderOpenPrice() > TrailingStop * Point)
  	  	  {
		    if (OrderStopLoss() < Ask - TrailingStop * Point)
		    {
	         OrderModify(OrderTicket(), OrderOpenPrice(), Ask - TrailingStop * Point, Ask + ProfitTarget * Point, 0);
            return(0);
          }
        }
      }

      if ((OrderSymbol() == Symbol()) && (OrderType() == OP_SELL))
      {
        if (OrderOpenPrice() - Bid > TrailingStop * Point)
        {
          if (OrderStopLoss() > Bid + TrailingStop * Point)
          {
            OrderModify(OrderTicket(), OrderOpenPrice(), Bid + TrailingStop * Point, Bid - ProfitTarget * Point, 0);
            return(0);
          }
	  	  }
	   }
    }
  }

  return(0);
}
//+------------------------------------------------------------------+

Comments