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.
else if(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"; 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); }
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 :
input string Symbol1 = "USDCAD"; // Nom du Symbol1 input int StopLoss1 = 370; // StopLoss1 input int TakeProfit1 = 20; // TakeProfit1 input int BBPeriod1 = 40; // Période des Bandes1 input double BBDev1 = 1; // Écart des Bandes1 input double Razmah1 = 450; // Écart des Bandes1 en Points input int Start1 = 19; // Heure de Début1 input string Symbol2 = "GBPUSD"; // Nom du Symbol2 input int StopLoss2 = 450; // StopLoss2 input int TakeProfit2 = 80; // TakeProfit2 input int BBPeriod2 = 8; // Période des Bandes2 input double BBDev2 = 1; // Écart des Bandes2 input double Razmah2 = 200; // Écart des Bandes2 en Points input int Start2 = 20; // Heure de Début2 input string Symbol3 = "NZDUSD"; // Nom du Symbol3 input int StopLoss3 = 410; // StopLoss3 input int TakeProfit3 = 40; // TakeProfit3 input int BBPeriod3 = 4; // Période des Bandes3 input double BBDev3 = 1.2; // Écart des Bandes3 input double Razmah3 = 450; // Écart des Bandes3 en Points input int Start3 = 19; // Heure de Début3 input string Symbol4 = ""; // Nom du Symbol4 input int StopLoss4 = 500; // StopLoss4 input int TakeProfit4 = 40; // TakeProfit4 input int BBPeriod4 = 24; // Période des Bandes4 input double BBDev4 = 1; // Écart des Bandes4 input double Razmah4 = 200; // Écart des Bandes4 en Points input int Start4 = 20; // Heure de Début4 input string Symbol5 = ""; // Nom du Symbol5 input int StopLoss5 = 500; // StopLoss5 input int TakeProfit5 = 40; // TakeProfit5 input int BBPeriod5 = 24; // Période des Bandes5 input double BBDev5 = 1; // Écart des Bandes5 input double Razmah5 = 200; // Écart des Bandes5 en Points input int Start5 = 20; // Heure de Début5 input string Symbol6 = ""; // Nom du Symbol6 input int StopLoss6 = 500; // StopLoss6 input int TakeProfit6 = 40; // TakeProfit6 input int BBPeriod6 = 24; // Période des Bandes6 input double BBDev6 = 1; // Écart des Bandes6 input double Razmah6 = 200; // Écart des Bandes6 en Points input int Start6 = 20; // Heure de Début6 input string Symbol7 = ""; // Nom du Symbol7 input int StopLoss7 = 500; // StopLoss7 input int TakeProfit7 = 40; // TakeProfit7 input int BBPeriod7 = 24; // Période des Bandes7 input double BBDev7 = 1; // Écart des Bandes7 input double Razmah7 = 200; // Écart des Bandes7 en Points input int Start7 = 20; // Heure de Début7 input string Symbol8 = ""; // Nom du Symbol8 input int StopLoss8 = 500; // StopLoss8 input int TakeProfit8 = 40; // TakeProfit8 input int BBPeriod8 = 24; // Période des Bandes8 input double BBDev8 = 1; // Écart des Bandes8 input double Razmah8 = 200; // Écart des Bandes8 en Points input int Start8 = 20; // Heure de Début8 input string Symbol9 = ""; // Nom du Symbol9 input int StopLoss9 = 500; // StopLoss9 input int TakeProfit9 = 40; // TakeProfit9 input int BBPeriod9 = 24; // Période des Bandes9 input double BBDev9 = 1; // Écart des Bandes9 input double Razmah9 = 200; // Écart des Bandes9 en Points input int Start9 = 20; // Heure de Début9 input double 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.
Articles connexes
- Utiliser MQL5 Wizard pour Créer un Expert Advisor Basé sur les Modèles de Chandeliers Englobants et MFI
- Développez un Expert Advisor avec MQL5 : Signaux de Trading 3 Corbeaux Noirs / 3 Soldats Blancs + RSI
- Comment intégrer les événements à fort impact de ForexFactory dans votre EA pour MetaTrader 4
- Maîtrisez le Trading avec The MasterMind 2 sur MetaTrader 4
- 3MaCross EA : Un Expert pour MetaTrader 4