Accueil Trading Systématique Publication

Scalpeur de nuit multi-devises : Optimisez vos trades avec le Night Scalper Multi pour MetaTrader 5

Pièce jointe
16350.zip (1.72 KB, Télécharger 0 fois)

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

Commentaire (0)