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

Mike 2017.01.18 18:24 83 0 0
Pièce jointe

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.
Liste
Commentaire 0