Maximize Your Night Trading with the Multi-Currency Scalper for MetaTrader 5

Mike 2017.01.18 18:24 257 0 0
Attachments

The Multi-Currency Night Scalper is a night trading assistant designed to operate until midnight terminal time, taking advantage of narrow market ranges using the Bollinger Bands indicator.

BBHandle=iBands(symb,0,per,0,dev,0);
   CopyBuffer(BBHandle,1,0,1,up);
   CopyBuffer(BBHandle,2,0,1,dn);

   double r=up[0]-dn[0];

Trading positions are opened after the hour specified in Start, but only if there are no open positions for the symbol.

if(CountTrades(symb)<1 && TimeCurrent()>StringToTime(s))

For a buy order, the price must be below the lower Bollinger Bands boundary, and the channel must be narrower than the range specified in the Razmah variable.

if(Ask<dn[0] && r<razmah*_Point) trade.PositionOpen(symb,0,Lot,Ask,Ask-stop*_Point,Ask+take*_Point);

For a sell order, the price must be above the upper Bollinger Bands boundary, and again, the channel must be narrower than the specified Razmah range.

if(Bid>up[0] && r<razmah*_Point) trade.PositionOpen(symb,1,Lot,Bid,Bid+stop*_Point,Bid-take*_Point);

Positions will close either through stop losses or force closure after midnight.

elseif(CountTrades(symb)>0 && TimeCurrent()<StringToTime(s)) CloseAll(symb);

The SymbolTrade function utilizes the СTrade class:

void SymbolTrade(string symb,int stop,int take,int per,double dev,double razmah,int start)
  {
   string s=(string)start+":00";
   doubleAsk=SymbolInfoDouble(symb,SYMBOL_ASK);
   doubleBid=SymbolInfoDouble(symb,SYMBOL_BID);

   BBHandle=iBands(symb,0,per,0,dev,0);
   CopyBuffer(BBHandle,1,0,1,up);
   CopyBuffer(BBHandle,2,0,1,dn);

   double r=up[0]-dn[0];

   if(CountTrades(symb)<1 && TimeCurrent()>StringToTime(s))
     {
      if(Ask<dn[0] && r<razmah*_Point) trade.PositionOpen(symb,0,Lot,Ask,Ask-stop*_Point,Ask+take*_Point);
      if(Bid>up[0] && r<razmah*_Point) trade.PositionOpen(symb,1,Lot,Bid,Bid+stop*_Point,Bid-take*_Point);
     }
   elseif(CountTrades(symb)>0 && TimeCurrent()<StringToTime(s)) CloseAll(symb);
  }

Trade operations are executed on a new bar. If there’s a new bar, the EA checks for the specified symbols and executes trades accordingly.

if(bars!=Bars(NULL,0))
     {
      if(Symbol1!="") SymbolTrade(Symbol1,StopLoss1,TakeProfit1,BBPeriod1,BBDev1,Razmah1,Start1);
      if(Symbol2!="") SymbolTrade(Symbol2,StopLoss2,TakeProfit2,BBPeriod2,BBDev2,Razmah2,Start2);
      if(Symbol3!="") SymbolTrade(Symbol3,StopLoss3,TakeProfit3,BBPeriod3,BBDev3,Razmah3,Start3);
        ...
     }
   bars=Bars(NULL,0);

Settings:

inputstring Symbol1     = "USDCAD";       // Symbol1 Nameinputint    StopLoss1   = 370;            // StopLoss1inputint    TakeProfit1 = 20;             // TakeProfit1inputint    BBPeriod1   = 40;             // Bands Period1inputdouble BBDev1      = 1;              // Bands Deviation1inputdouble Razmah1     = 450;            // Bands Deviation1 in Pointsinputint    Start1      = 19;             // Start Time1inputstring Symbol2     = "GBPUSD";       // Symbol2 Nameinputint    StopLoss2   = 450;            // StopLoss2inputint    TakeProfit2 = 80;             // TakeProfit2inputint    BBPeriod2   = 8;              // Bands Period2inputdouble BBDev2      = 1;              // Bands Deviation2inputdouble Razmah2     = 200;            // Bands Deviation2 in Pointsinputint    Start2      = 20;             // Start Time2inputstring Symbol3     = "NZDUSD";       // Symbol3 Nameinputint    StopLoss3   = 410;            // StopLoss3inputint    TakeProfit3 = 40;             // TakeProfit3inputint    BBPeriod3   = 4;              // Bands Period3inputdouble BBDev3      = 1.2;            // Bands Deviation3inputdouble Razmah3     = 450;            // Bands Deviation3 in Pointsinputint    Start3      = 19;             // Start Time3inputstring Symbol4     = "";             // Symbol4 Nameinputint    StopLoss4   = 500;            // StopLoss4inputint    TakeProfit4 = 40;             // TakeProfit4inputint    BBPeriod4   = 24;             // Bands Period4inputdouble BBDev4      = 1;              // Bands Deviation4inputdouble Razmah4     = 200;            // Bands Deviation4 in Pointsinputint    Start4      = 20;             // Start Time4inputstring Symbol5     = "";             // Symbol5 Nameinputint    StopLoss5   = 500;            // StopLoss5inputint    TakeProfit5 = 40;             // TakeProfit5inputint    BBPeriod5   = 24             // Bands Period5inputdouble BBDev5      = 1              // Bands Deviation5inputdouble Razmah5     = 200            // Bands Deviation5 in Pointsinputint    Start5      = 20             // Start Time5inputstring Symbol6     = ""             // Symbol6 Nameinputint    StopLoss6   = 500            // StopLoss6inputint    TakeProfit6 = 40             // TakeProfit6inputint    BBPeriod6   = 24             // Bands Period6inputdouble BBDev6      = 1              // Bands Deviation6inputdouble Razmah6     = 200            // Bands Deviation6 in Pointsinputint    Start6      = 20             // Start Time6inputstring Symbol7     = ""             // Symbol7 Nameinputint    StopLoss7   = 500            // StopLoss7inputint    TakeProfit7 = 40             // TakeProfit7inputint    BBPeriod7   = 24             // Bands Period7inputdouble BBDev7      = 1              // Bands Deviation7inputdouble Razmah7     = 200            // Bands Deviation7 in Pointsinputint    Start7      = 20             // Start Time7inputstring Symbol8     = ""             // Symbol8 Nameinputint    StopLoss8   = 500            // StopLoss8inputint    TakeProfit8 = 40             // TakeProfit8inputint    BBPeriod8   = 24             // Bands Period8inputdouble BBDev8      = 1              // Bands Deviation8inputdouble Razmah8     = 200            // Bands Deviation8 in Pointsinputint    Start8      = 20             // Start Time8inputstring Symbol9     = ""             // Symbol9 Nameinputint    StopLoss9   = 500            // StopLoss9inputint    TakeProfit9 = 40             // TakeProfit9inputint    BBPeriod9   = 24             // Bands Period9inputdouble BBDev9      = 1              // Bands Deviation9inputdouble Razmah9     = 200            // Bands Deviation9 in Pointsinputint    Start9      = 20             // Start Time9inputdouble Lot         = 1              // Trade Volume

Fig1. The result of the EA trading. EURUSD, H1

Fig.2. Deals of the EA in the journal

Fig.3. Results of the EA trading and optimization from 11.01.2016 to 13.09.2016. USDCAD, GBPUSD, NZDUSD, H1

Tips:

  • This EA is ideal as a trading assistant, helping you to develop your own strategies.
List
Comments 0