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.

Comments 0