qq_v2.3_gbpusd_MM





// Because of my dismal stupidity not even named this EA 
#property copyright "RamilT" 
#property link "RamilT@bk.ru" 


//-----------------------------------Òèïà ïåðåìåííûå----------------------------------------------------------- 
extern int Magic = 2222;
extern int pr=12; 
extern int sl=30; 
extern int tp=100; 
extern int tz=50; 
extern int mm=1; 
extern int qq=10; 
extern int chas1=5; 
extern int chas2=17; 
extern double Lots=1;
extern double TrailingStop =50;

double BuyStop=0, PrevBuyStop=0, SellStop=0, PrevSellStop=0;
double Slippage =3; 
//------------------------------------------------------------------------------------------------------------- 


int start() 
{ 
   if(Hour()<=chas1||Hour()>=chas2)return(0); 
   if(Bars<100) 
   { 
   Print("bars less than 100"); 
   return(0); 
   } 
//-----------------------------------Ìîíýé ìåíäæìåíò----------------------------------------------------------- 
   
   if (ScanTrades()>0 && TrailingStop > 0) HideTrailStop();
   
   if (mm==1) 
   { 
   if(Lots<(MathCeil((AccountFreeMargin()/1000)*qq)/10)){Lots=(MathCeil((AccountFreeMargin()/10000)*qq)/10);if(Lots>100){Lots=100;}} 
   } 
//------------------------------------------------------------------------------------------------------------- 


//----------------------------------Ãëàâíûé àëãîðèòì----------------------------------------------------------- 
   if(Month()!=12 && DayOfWeek()!=1 && ScanTrades()<1)
   { 
      if (((iOpen(NULL,5,1)-iClose(NULL,5,pr))>(Point*tz))&&(Ask>iOpen(NULL,5,1))) 
      { 
      if( tp>0 ) double TakeProfit = NormalizeDouble(Ask+tp*Point,Digits); else TakeProfit = 0;
      if( sl>0 ) double StopLoss =   NormalizeDouble(Ask-sl*Point,Digits); else StopLoss = 0;
      OrderSend(Symbol(),OP_BUY,Lots,Ask,3,StopLoss,TakeProfit,"qq-buy60",Magic,0,Blue); 
      } 


      if (((iOpen(NULL,5,1)-iClose(NULL,5,pr))<(-Point*tz))&&(Bid<iOpen(NULL,5,1))) 
      { 
      if( tp>0 ) TakeProfit = NormalizeDouble(Bid-tp*Point,Digits); else TakeProfit = 0;
      if( sl>0 ) StopLoss =   NormalizeDouble(Bid+sl*Point,Digits); else StopLoss = 0;
      OrderSend(Symbol(),OP_SELL,Lots,Bid,3,StopLoss,TakeProfit,"qq-sell60",Magic,0,Red); 
      } 
   } 
return(0);
} 
//------------------------------------------------------------------------------------------------------------- 


 

int ScanTrades()
{   
   int total = OrdersTotal();
   int numords = 0;
      
   for(int cnt=0; cnt<total; cnt++) 
   {        
   OrderSelect(cnt, SELECT_BY_POS);            
   if(OrderSymbol() == Symbol() && OrderType()<=OP_SELLSTOP && OrderMagicNumber() == Magic) 
   numords++;
   }
   return(numords);
}  


void HideTrailStop()
{
   for (int cnt=0;cnt<OrdersTotal();cnt++)
   { 
   OrderSelect(cnt, SELECT_BY_POS);   
   int mode=OrderType();    
      if ( OrderSymbol()==Symbol() && OrderMagicNumber()==Magic) 
      {
         if (mode==OP_BUY) 
         {
			BuyStop = NormalizeDouble(Bid - TrailingStop*Point, Digits);
			   if (BuyStop > OrderStopLoss())
			   {        
               if( OrderOpenPrice() <= BuyStop ) 
               {   
			      OrderModify(OrderTicket(),OrderOpenPrice(),
			                  BuyStop,
			                  OrderTakeProfit(),0,Yellow);
               return(0);
               }
            }   
         }   
// - SELL Orders          
         if (mode==OP_SELL)
         {
         SellStop = NormalizeDouble(Ask + TrailingStop*Point, Digits);   
            if (SellStop < OrderStopLoss()) 
            {
               if( OrderOpenPrice() >= SellStop) 
               {
               OrderModify(OrderTicket(),OrderOpenPrice(),
			                  SellStop,
			                  OrderTakeProfit(),0,Yellow);
			      return(0);               
   			   }	    
            }
         }
      }
   }     
}



Sample





Analysis



Market Information Used:

Series array that contains open prices of each bar
Series array that contains close prices for each bar


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
It can change open orders parameters, due to possible stepping strategy

Other Features: