DERETZV1





/*-----------------------------+
|			       |
| Shared by www.Aptrafx.com    |
|			       |
+------------------------------*/

//+------------------------------------+
//| DERETZ EA  V1                    |
//+------------------------------------+
//©Copyright 2005 threzzz@yahoo.com
//For personal use only.
//  
//
// 
//	 
// 


// variables declared here are GLOBAL in scope

#property copyright "DERetz"
#property link      "Deretz.cos"


// generic user input
extern double Lots=1;
extern int    TakeProfit=100;
extern int    StopLoss=50;
extern int    TrailingStop=20;

extern int    Slippage=2;
// extern int    ProfitMade=30;


//+------------------------------------+
//| Custom init (usually empty on EAs) |
//|------------------------------------|
// Called ONCE when EA is added to chart
int init()
  {
   return(0);
  }


//+------------------------------------+
//| Custom deinit(usually empty on EAs)|
//+------------------------------------+
// Called ONCE when EA is removed from chart
int deinit()
  {
   return(0);
  }


//+------------------------------------+
//| EA main code                       |
//+------------------------------------+
// Called EACH TICK and possibly every Minute
// in the case that there have been no ticks

int start()
  {

   double p=Point();
   int      cnt=0;
   int      OrdersPerSymbol=0;
   double  bull=0,b=0,s=0,total=0;
   double  bear=0;
//   double  TrendBuffer[];
   int  MagicNumber=8749222;
//   double  LoBuffer[];
   double Ma534=0, Ma534_1=0,Ma534_2=0,Ma534_3=0,Ma534_4=0,Ma534_5=0 ;
   double pMa534=0, pMa534_1=0,pMa534_2=0,pMa534_3=0,pMa534_4=0,pMa534_5=0; 
   int CB=0, M15=240 ;
   double  slBUY=0,tpBUY=0;
   double  slSEL=0,tpSEL=0;
   //extern string nameEA       = "DeretzLWMA"

   // Error checking
   if(AccountFreeMargin()<(1000*Lots))        {Print("-----NO MONEY"); return(0);}
   if(Bars<100)                               {Print("-----NO BARS "); return(0);}
   

////+++++++++++++++++++++++++++


CB=1000;
  for (CB=1000 ; CB>=0; CB--)
  {
 // iMA(NULL,0,55,0,MODE_EMA,PRICE_CLOSE,0)
Ma534=iMA(NULL,0,5,0,MODE_SMA, PRICE_MEDIAN,CB)-iMA(NULL,0,34,0,MODE_SMA,PRICE_MEDIAN,CB);
//if CB>=1 then 
Ma534_1=iMA(NULL,0,5,0,MODE_SMA,PRICE_MEDIAN,CB)-iMA(NULL,0,34,0,MODE_SMA,PRICE_MEDIAN,CB);
//if CB>=2 then 
Ma534_2=iMA(NULL,0,5,0,MODE_SMA,PRICE_MEDIAN,CB-1)-iMA(NULL,0,34,0,MODE_SMA,PRICE_MEDIAN,CB-1);
//if CB>=3 then 
Ma534_3=iMA(NULL,0,5,0,MODE_SMA,PRICE_MEDIAN,CB-2)-iMA(NULL,0,34,0,MODE_SMA,PRICE_MEDIAN,CB-2);
//if CB>=4 then 
Ma534_4=iMA(NULL,0,5,0,MODE_SMA,PRICE_MEDIAN,CB-3)-iMA(NULL,0,34,0,MODE_SMA,PRICE_MEDIAN,CB-3);
//if CB>=5 then 
Ma534_5=iMA(NULL,0,5,0,MODE_SMA,PRICE_MEDIAN,CB-4)-iMA(NULL,0,34,0,MODE_SMA,PRICE_MEDIAN,CB-4);
}
CB=1000;
  for (CB=1000 ; CB>=0; CB--)
  {
//For M15 direction check to stop order too late
pMa534=iMA(NULL,M15,5,0,MODE_SMA, PRICE_MEDIAN,CB)-iMA(NULL,M15,34,0,MODE_SMA,PRICE_MEDIAN,CB);
//if CB>=1 then 
pMa534_1=iMA(NULL,M15,5,0,MODE_SMA,PRICE_MEDIAN,CB)-iMA(NULL,M15,34,0,MODE_SMA,PRICE_MEDIAN,CB);
//if CB>=2 then 
pMa534_2=iMA(NULL,M15,5,0,MODE_SMA,PRICE_MEDIAN,CB-1)-iMA(NULL,M15,34,0,MODE_SMA,PRICE_MEDIAN,CB-1);
//if CB>=3 then 
pMa534_3=iMA(NULL,M15,5,0,MODE_SMA,PRICE_MEDIAN,CB-2)-iMA(NULL,M15,34,0,MODE_SMA,PRICE_MEDIAN,CB-2);
//if CB>=4 then 
pMa534_4=iMA(NULL,M15,5,0,MODE_SMA,PRICE_MEDIAN,CB-3)-iMA(NULL,M15,34,0,MODE_SMA,PRICE_MEDIAN,CB-3);
//if CB>=5 then 
pMa534_5=iMA(NULL,M15,5,0,MODE_SMA,PRICE_MEDIAN,CB-4)-iMA(NULL,M15,34,0,MODE_SMA,PRICE_MEDIAN,CB-4);
//SetIndexValue2(CB,Ma5345);
     
   
//   TrendBuffer[CB]=Ma534;
  
//    LoBuffer[CB]=((Ma534_1+Ma534_3+Ma534_2+Ma534_4+Ma534_5)/5);
    //loopbegin = loopbegin-1; // prevent to previous bars recounting
   
}
//+++++++++++++++++++++++

double   beli=(Ma534);
double   jual=((Ma534_1+Ma534_3+Ma534_2+Ma534_4+Ma534_5)/5);
double   bbeli= pMa534;
double   bjual=((pMa534_1+pMa534_3+pMa534_2+pMa534_4+pMa534_5)/5);


   OrdersPerSymbol=0;
   for(cnt=OrdersTotal();cnt>=0;cnt--)
     {
      OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
      if( OrderSymbol()==Symbol() && (OrderMagicNumber() == MagicNumber) )
        {
         OrdersPerSymbol++;
        }
     }
  // History check
  if (0==1) // switch to turn ON/OFF history check
   {total=HistoryTotal();
  if(total>0)
      {for(cnt=0;cnt<total;cnt++)
        { OrderSelect(cnt, SELECT_BY_POS, MODE_HISTORY);            //Needs to be next day not as below
        if(OrderSymbol()==Symbol() && OrderMagicNumber() == MagicNumber 
        && CurTime()- OrderCloseTime() < (Period() * 30 ))
          {
         OrdersPerSymbol++;
        }
        }
       }
    }   
     
 Comment ("Buy "+(Ma534)+"  Sell "+((Ma534_1+Ma534_3+Ma534_2+Ma534_4+Ma534_5)/5) +" "+ bbeli+ " "+ bjual); 

   // calculate TakeProfit and StopLoss for 
   //Ask(buy, long)
   slBUY=Ask-(StopLoss*Point);
   tpBUY=Ask+(TakeProfit*Point);
   //Bid (sell, short)
   slSEL=Bid+(StopLoss*Point);
   tpSEL=Bid-(TakeProfit*Point);

   // so we can eventually do trailing stop
   //if (TakeProfit<=0) {tpBUY=0; tpSEL=0;}           
   //if (StopLoss<=0)   {slBUY=0; slSEL=0;}           

   // place new orders based on direction
   // only of no orders open
   if(OrdersPerSymbol<1)
     {
      if (beli<jual && bbeli<bjual)
		  {
         OrderSend(Symbol(),OP_BUY,Lots,Ask,Slippage,slBUY,tpBUY,"Deretz5Buy",MagicNumber,0,White);
         return(0);
        }
        
      // Sell Price
      if (beli>jual && bbeli>bjual)
        {
         OrderSend(Symbol(),OP_SELL,Lots,Bid,Slippage,slSEL,tpSEL,"Deretz5Sell",MagicNumber,0,Red);
         return(0);
        }
     } //if
	
b = 1 * Point + iATR(NULL,0,5,1) * 1.5;
s = 1 * Point + iATR(NULL,0,5,1) * 1.5;

//++++++++++++++++++++++++++++++
total=OrdersTotal();
for(cnt=0;cnt<total;cnt++)
{

OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
    if ((OrderType()== OP_BUY) && (OrderSymbol()== Symbol()&& (OrderMagicNumber() == MagicNumber))) 
     {
         if ((OrderOpenPrice() > OrderStopLoss()) && (Bid-OrderOpenPrice() > StopLoss*Point))   
            { 
            OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice(),OrderTakeProfit(),0,SlateBlue);
            return(0);
            }
         if ((Bid - OrderOpenPrice()) > b )
            { 
            if ((OrderStopLoss()) < (Bid -b))  
               {
               OrderModify(OrderTicket(),OrderOpenPrice(),Bid - b,Ask+(Point*10),0,SlateBlue);
               return(0);
               }
            }
        }
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
      if ((OrderType()== OP_SELL) && (OrderSymbol()== Symbol()&& (OrderMagicNumber() == MagicNumber)))          
         {
         if ((OrderOpenPrice() < OrderStopLoss()) && (OrderOpenPrice()-Ask > StopLoss*Point)) 
            {
            OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice(),OrderTakeProfit(),0,Red);
            return(0);
            }
         if ((OrderOpenPrice()-Ask ) > s )
            { 
            if ((OrderStopLoss()) > (Ask + s))
            {
            OrderModify(OrderTicket(),OrderOpenPrice(),Ask + s,Bid - (Point * 10),0,Red);
            return(0);
            }  
            }
         } 
  
    
   }
//+++++++++++++++++++++++++++++++++++++++++

	
   // CLOSE order if profit target made
 
{   for( cnt=0;cnt<OrdersTotal();cnt++)
     {
      OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
      if( OrderSymbol()==Symbol() && (OrderMagicNumber() == MagicNumber))
        {
         if(OrderType()==OP_BUY)
           {
            // did we make our desired BUY profit?
            if(beli == jual || beli > jual)
              {
               OrderClose(OrderTicket(),Lots,Bid,0,White);
               return(0);
              }
           } // if BUY

         if(OrderType()==OP_SELL)
           {
            // did we make our desired SELL profit?
            if(beli == jual || beli < jual)
              {
               OrderClose(OrderTicket(),Lots,Ask,0,Red);
               return(0);
              }
           } //if SELL
           
        } // if(OrderSymbol)
        
     } // for

   return(0);
  } // start()
}



Sample





Analysis



Market Information Used:



Indicator Curves created:


Indicators Used:

Moving average indicator
Indicator of the average true range


Custom Indicators Used:

Order Management characteristics:
Checks for the total of open orders
It automatically opens orders when conditions are reached
It can change open orders parameters, due to possible stepping strategy
It Closes Orders by itself

Other Features: