Minggu, 01 November 2020

Bollinger Band Expert Advisor

 Apa kabar gaes. Katanya trading dengan strategi bolingger band lumayan profitable. Untuk itu kali ini saya coba buat ea yang berbasis pada Bollinger Bands Indicator.. Langsung aja di simak.. apa langsung di copas codingnya 😃😄😅 

//+------------------------------------------------------------------+
//
//                   Copyright ©2020, RalindhaBlogspot.com
//                        http://www.ralindhablogspot.com
//                                  Version 20
//+------------------------------------------------------------------+

extern string Expert_Advisor_By="Tony Koes";
extern int Magic_Number=10001;
extern int MaxSpread  =30;
extern string Time_Filter="Trading Time";
extern bool UseTimer = true;
extern int StartTime=1;
extern int EndTime=23;
extern string Bollinger_Bands="Setting";
extern double BB_Periode =4;
extern double BB_Deviation  =1;
extern string Trade="Utility";
extern double Lots =0.1;
extern double StopLoss=10;
extern double TakeProfit=0;
extern int TrailingStop=0;
extern int Slippage=3;

//+------------------------------------------------------------------+
//    expert start function
//+------------------------------------------------------------------+

int start()
{   
  double MyPoint=Point;
  if(Digits==3 || Digits==5) MyPoint=Point*10;
//+------------------------------------------------------------------+
//+    spread filter
//+------------------------------------------------------------------+
  double SymSpread = MarketInfo(Symbol(), MODE_SPREAD);
  if(MaxSpread > 0 && MaxSpread <= SymSpread  )    
     {
     Print("Spread is greater than Maximum allowed Spread");
     return;
     } 
 //+------------------------------------------------------------------+ 
 //+  Time Filter   
 //+------------------------------------------------------------------+
     datetime CurrentTime;
     if(UseTimer == true)
       {
         CurrentTime = TimeLocal();
         int GetHour = TimeHour(CurrentTime);
         if(GetHour > StartTime && GetHour < EndTime )
            {
            bool TradeAllowed = true;
            }
         else TradeAllowed = false;
        }         
 //+-------------------------------------------------------------------+
  double TheStopLoss=0;
  double TheTakeProfit=0;
  if( TotalOrdersCount()==0 ) 
  {
//--------------------------------------------------------------------------------------------+
//  BUY ORDER OPENED
//--------------------------------------------------------------------------------------------+
     int result=0;
     if(Ask>iBands(NULL,0,BB_Periode,BB_Deviation,0,PRICE_CLOSE,MODE_UPPER,0)&& TradeAllowed == true) 
     {
        result=OrderSend(Symbol(),OP_BUY,Lots,Ask,Slippage,0,0,"Tony_Koes_Buy",Magic_Number,0,Blue);
        if(result>0)
        {
         TheStopLoss=0;
         TheTakeProfit=0;
         if(TakeProfit>0) TheTakeProfit=Ask+TakeProfit*MyPoint;
         if(StopLoss>0) TheStopLoss=Ask-StopLoss*MyPoint;
         OrderSelect(result,SELECT_BY_TICKET);
         OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(TheStopLoss,Digits),NormalizeDouble(TheTakeProfit,Digits),0,Green);
        }
        return(0);
     }
//--------------------------------------------------------------------------------------------+
//  SELL ORDER OPENED
//--------------------------------------------------------------------------------------------+     
     if(Ask<iBands(NULL,0,BB_Periode,BB_Deviation,0,PRICE_CLOSE,MODE_LOWER,0)&& TradeAllowed == true) 
     {
        result=OrderSend(Symbol(),OP_SELL,Lots,Bid,Slippage,0,0,"Tony_Koes_Sell",Magic_Number,0,Red);
        if(result>0)
        {
         TheStopLoss=0;
         TheTakeProfit=0;
         if(TakeProfit>0) TheTakeProfit=Bid-TakeProfit*MyPoint;
         if(StopLoss>0) TheStopLoss=Bid+StopLoss*MyPoint;
         OrderSelect(result,SELECT_BY_TICKET);
         OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(TheStopLoss,Digits),NormalizeDouble(TheTakeProfit,Digits),0,Green);
        }
        return(0);
     }
  }  
  for(int cnt=0;cnt<OrdersTotal();cnt++)
     {
      OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
      if(OrderType()<=OP_SELL &&   
         OrderSymbol()==Symbol() &&
         OrderMagicNumber()==Magic_Number 
         )  
        {
         if(OrderType()==OP_BUY)  
          {
 //-------------------------------------------------------------------------------------------+
 //   BUY ORDER CLOSE
 //-------------------------------------------------------------------------------------------+
                if(Ask<iBands(NULL,0,BB_Periode,BB_Deviation,0,PRICE_CLOSE,MODE_LOWER,0)&& TradeAllowed == true) 
              {
                OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),Slippage,Red);
              }
 //-------------------------------------------------------------------------------------------+
 //   BUY TRAILING STOP
 //-------------------------------------------------------------------------------------------+
            if(TrailingStop>0)  
              {                 
               if(Bid-OrderOpenPrice()>MyPoint*TrailingStop)
                 {
                  if(OrderStopLoss()<Bid-MyPoint*TrailingStop)
                    {
                     OrderModify(OrderTicket(),OrderOpenPrice(),Bid-TrailingStop*MyPoint,OrderTakeProfit(),0,Green);
                     return(0);
                    }
                 }
              }
           }
         else 
           {

 //------------------------------------------------------------------------------------------+
 // SELL ORDER CLOSE
 //------------------------------------------------------------------------------------------+
               {
                  if(Ask>iBands(NULL,0,BB_Periode,BB_Deviation,0,PRICE_CLOSE,MODE_UPPER,0)&& TradeAllowed == true) 
                  OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),Slippage,Red);
               }
 //------------------------------------------------------------------------------------------+
 // SELL TRAILING STOP
 //-------------------------------------------------------------------------------------------+
 
            if(TrailingStop>0)  
              {                 
               if((OrderOpenPrice()-Ask)>(MyPoint*TrailingStop))
                 {
                  if((OrderStopLoss()>(Ask+MyPoint*TrailingStop)) || (OrderStopLoss()==0))
                    {
                     OrderModify(OrderTicket(),OrderOpenPrice(),Ask+MyPoint*TrailingStop,OrderTakeProfit(),0,Red);
                     return(0);
                    }
                 }
              }
           }
        }
     }
   return(0);
}
int TotalOrdersCount()
{
  int result=0;
  for(int i=0;i<OrdersTotal();i++)
  {
     OrderSelect(i,SELECT_BY_POS ,MODE_TRADES);
     if (OrderMagicNumber()==Magic_Number) result++;
   }
  return (result);

}


Back Test : GBPUSD / TF=H4


Report Test :




Tidak ada komentar:

Posting Komentar

ALIGATOR EXPERT ADVISOR

Gunakan Time Frame H1 //------------------------------------------------------------- //  Etasoft Inc. Forex EA and Script Generator version...