Le Night Scalper Multi est un scalpeur de nuit multi-devises qui effectue des transactions jusqu'à 0h00, heure du terminal, dans une plage étroite (r), déterminée à l'aide de l'indicateur Bollinger Bands.
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];
Une position est ouverte après l'heure spécifiée dans Démarrer, et seulement s'il n'y a pas de positions ouvertes pour le symbole en question.
if(CountTrades(symb)<1 && TimeCurrent()>StringToTime(s))
Achetez si le prix est inférieur à la limite inférieure des Bollinger Bands et si le canal est plus petit que la plage spécifiée dans la variable Razmah.
if(Ask<dn[0] && r<razmah*_Point) trade.PositionOpen(symb,0,Lot,Ask,Ask-stop*_Point,Ask+take*_Point);
Vendez si le prix est supérieur à la limite supérieure des Bollinger Bands et si le canal est plus petit que la plage spécifiée dans la variable Razmah.
if(Bid>up[0] && r<razmah*_Point) trade.PositionOpen(symb,1,Lot,Bid,Bid+stop*_Point,Bid-take*_Point);
Les positions sont fermées par des stop-loss ou forcées après 0h00.
elseif(CountTrades(symb)>0 && TimeCurrent()<StringToTime(s)) CloseAll(symb);
Les transactions s'effectuent avec la fonction SymbolTrade et utilisent la classe СTrade :
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); }
Les opérations de trading se déroulent sur une nouvelle bougie.
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);
Paramètres :
inputstring Symbol1 = "USDCAD"; // Nom du Symbol1inputint StopLoss1 = 370; // StopLoss1inputint TakeProfit1 = 20; // TakeProfit1inputint BBPeriod1 = 40; // Période des Bandes1inputdouble BBDev1 = 1; // Écart des Bandes1inputdouble Razmah1 = 450; // Écart des Bandes1 en Pointsinputint Start1 = 19; // Heure de Début1inputstring Symbol2 = "GBPUSD"; // Nom du Symbol2inputint StopLoss2 = 450; // StopLoss2inputint TakeProfit2 = 80; // TakeProfit2inputint BBPeriod2 = 8; // Période des Bandes2inputdouble BBDev2 = 1; // Écart des Bandes2inputdouble Razmah2 = 200; // Écart des Bandes2 en Pointsinputint Start2 = 20; // Heure de Début2inputstring Symbol3 = "NZDUSD"; // Nom du Symbol3inputint StopLoss3 = 410; // StopLoss3inputint TakeProfit3 = 40; // TakeProfit3inputint BBPeriod3 = 4; // Période des Bandes3inputdouble BBDev3 = 1.2; // Écart des Bandes3inputdouble Razmah3 = 450; // Écart des Bandes3 en Pointsinputint Start3 = 19; // Heure de Début3inputstring Symbol4 = ""; // Nom du Symbol4inputint StopLoss4 = 500; // StopLoss4inputint TakeProfit4 = 40; // TakeProfit4inputint BBPeriod4 = 24; // Période des Bandes4inputdouble BBDev4 = 1; // Écart des Bandes4inputdouble Razmah4 = 200; // Écart des Bandes4 en Pointsinputint Start4 = 20; // Heure de Début4inputstring Symbol5 = ""; // Nom du Symbol5inputint StopLoss5 = 500; // StopLoss5inputint TakeProfit5 = 40; // TakeProfit5inputint BBPeriod5 = 24; // Période des Bandes5inputdouble BBDev5 = 1; // Écart des Bandes5inputdouble Razmah5 = 200; // Écart des Bandes5 en Pointsinputint Start5 = 20; // Heure de Début5inputstring Symbol6 = ""; // Nom du Symbol6inputint StopLoss6 = 500; // StopLoss6inputint TakeProfit6 = 40; // TakeProfit6inputint BBPeriod6 = 24; // Période des Bandes6inputdouble BBDev6 = 1; // Écart des Bandes6inputdouble Razmah6 = 200; // Écart des Bandes6 en Pointsinputint Start6 = 20; // Heure de Début6inputstring Symbol7 = ""; // Nom du Symbol7inputint StopLoss7 = 500; // StopLoss7inputint TakeProfit7 = 40; // TakeProfit7inputint BBPeriod7 = 24; // Période des Bandes7inputdouble BBDev7 = 1; // Écart des Bandes7inputdouble Razmah7 = 200; // Écart des Bandes7 en Pointsinputint Start7 = 20; // Heure de Début7inputstring Symbol8 = ""; // Nom du Symbol8inputint StopLoss8 = 500; // StopLoss8inputint TakeProfit8 = 40; // TakeProfit8inputint BBPeriod8 = 24; // Période des Bandes8inputdouble BBDev8 = 1; // Écart des Bandes8inputdouble Razmah8 = 200; // Écart des Bandes8 en Pointsinputint Start8 = 20; // Heure de Début8inputstring Symbol9 = ""; // Nom du Symbol9inputint StopLoss9 = 500; // StopLoss9inputint TakeProfit9 = 40; // TakeProfit9inputint BBPeriod9 = 24; // Période des Bandes9inputdouble BBDev9 = 1; // Écart des Bandes9inputdouble Razmah9 = 200; // Écart des Bandes9 en Pointsinputint Start9 = 20; // Heure de Début9inputdouble Lot = 1; // Volume de trading

Fig1. Le résultat du trading de l'EA. EURUSD, H1

Fig.2. Transactions de l'EA dans le journal

Fig.3. Résultats du trading et optimisation de l'EA du 11.01.2016 au 13.09.2016. USDCAD, GBPUSD, NZDUSD, H1
Conseils :
- Il est recommandé d'utiliser l'EA comme assistant de trading et pour développer vos propres stratégies.

Commentaire 0