Watch how to download trading robots for free
Find us on Twitter!
Join our fan page
Interesting script?
So post a link to it -
let others appraise it
You liked the script? Try it in the MetaTrader 5 terminal
Experts

Multi-currency night scalper - Night Scalper Multi - expert for MetaTrader 5

Views:
17142
Rating:
(38)
Published:
2017.01.18 09:24
Need a robot or indicator based on this code? Order it on Freelance Go to Freelance

The Night Scalper Multi multi-currency night scalper trades until 0 am terminal time within a narrow range (r), determined 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];

Position is opened after the hour specified in Start, and if there are no open positions on the symbol.

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

Buy, if price is lower than the lower boundary of Bollinger Bands and channel is smaller 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);

Sell, if price is above the upper boundary of Bollinger Bands and channel is smaller than the range specified in the Razmah variable.

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

Positions are closed by stop losses or force-closed after 0 am.

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

Trades with the help of the SymbolTrade function and uses the СTrade class:

void SymbolTrade(string symb,int stop,int take,int per,double dev,double razmah,int start)
  {
   string s=(string)start+":00";
   double Ask=SymbolInfoDouble(symb,SYMBOL_ASK);
   double Bid=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);
     }
   else if(CountTrades(symb)>0 && TimeCurrent()<StringToTime(s)) CloseAll(symb);
  }

Trade operations are performed on new bar.

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:

input string Symbol1     = "USDCAD";       // Symbol1 Name
input int    StopLoss1   = 370;            // StopLoss1
input int    TakeProfit1 = 20;             // TakeProfit1
input int    BBPeriod1   = 40;             // Bands Period1
input double BBDev1      = 1;              // Bands Deviation1
input double Razmah1     = 450;            // Bands Deviation1 in Points
input int    Start1      = 19;             // Start Time1

input string Symbol2     = "GBPUSD";       // Symbol2 Name
input int    StopLoss2   = 450;            // StopLoss2
input int    TakeProfit2 = 80;             // TakeProfit2
input int    BBPeriod2   = 8;              // Bands Period2
input double BBDev2      = 1;              // Bands Deviation2
input double Razmah2     = 200;            // Bands Deviation2 in Points
input int    Start2      = 20;             // Start Time2

input string Symbol3     = "NZDUSD";       // Symbol3 Name
input int    StopLoss3   = 410;            // StopLoss3
input int    TakeProfit3 = 40;             // TakeProfit3
input int    BBPeriod3   = 4;              // Bands Period3
input double BBDev3      = 1.2;            // Bands Deviation3
input double Razmah3     = 450;            // Bands Deviation3 in Points
input int    Start3      = 19;             // Start Time3

input string Symbol4     = "";             // Symbol4 Name
input int    StopLoss4   = 500;            // StopLoss4
input int    TakeProfit4 = 40;             // TakeProfit4
input int    BBPeriod4   = 24;             // Bands Period4
input double BBDev4      = 1;              // Bands Deviation4
input double Razmah4     = 200;            // Bands Deviation4 in Points
input int    Start4      = 20;             // Start Time4

input string Symbol5     = "";             // Symbol5 Name
input int    StopLoss5   = 500;            // StopLoss5
input int    TakeProfit5 = 40;             // TakeProfit5
input int    BBPeriod5   = 24;             // Bands Period5
input double BBDev5      = 1;              // Bands Deviation5
input double Razmah5     = 200;            // Bands Deviation5 in Points
input int    Start5      = 20;             // Start Time5

input string Symbol6     = "";             // Symbol6 Name
input int    StopLoss6   = 500;            // StopLoss6
input int    TakeProfit6 = 40;             // TakeProfit6
input int    BBPeriod6   = 24;             // Bands Period6
input double BBDev6      = 1;              // Bands Deviation6
input double Razmah6     = 200;            // Bands Deviation6 in Points
input int    Start6      = 20;             // Start Time6

input string Symbol7     = "";             // Symbol7 Name
input int    StopLoss7   = 500;            // StopLoss7
input int    TakeProfit7 = 40;             // TakeProfit7
input int    BBPeriod7   = 24;             // Bands Period7
input double BBDev7      = 1;              // Bands Deviation7
input double Razmah7     = 200;            // Bands Deviation7 in Points
input int    Start7      = 20;             // Start Time7

input string Symbol8     = "";             // Symbol8 Name
input int    StopLoss8   = 500;            // StopLoss8
input int    TakeProfit8 = 40;             // TakeProfit8
input int    BBPeriod8   = 24;             // Bands Period8
input double BBDev8      = 1;              // Bands Deviation8
input double Razmah8     = 200;            // Bands Deviation8 in Points
input int    Start8      = 20;             // Start Time8

input string Symbol9     = "";             // Symbol9 Name
input int    StopLoss9   = 500;            // StopLoss9
input int    TakeProfit9 = 40;             // TakeProfit9
input int    BBPeriod9   = 24;             // Bands Period9
input double BBDev9      = 1;              // Bands Deviation9
input double Razmah9     = 200;            // Bands Deviation9 in Points
input int    Start9      = 20;             // Start Time9

input double 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:

  • The EA is recommended for use as a trading assistant and for developing your own strategies.

Translated from Russian by MetaQuotes Ltd.
Original code: https://www.mql5.com/ru/code/16350

The smart averager - Hello Smart The smart averager - Hello Smart

The Expert Advisor averages losing positions based on a particular algorithm.

XvaMA_HTF XvaMA_HTF

The XvaMA indicator with the timeframe selection option available in the input parameters.

JSatl_HTF JSatl_HTF

The JSatl indicator with the timeframe selection option available in the input parameters.

AFL_WinnerV2_HTF AFL_WinnerV2_HTF

The AFL_WinnerV2 indicator with the timeframe selection option available in input parameters.