English Русский 中文 Español Deutsch 日本語 Português 한국어 Italiano Türkçe
preview
PriceAction Stoploss fixe ou RSI fixe (Smart StopLoss)

PriceAction Stoploss fixe ou RSI fixe (Smart StopLoss)

MetaTrader 5Exemples | 23 mai 2022, 10:14
968 0
vwegba
vwegba

Introduction

La recherche d'un Saint Graal dans le trading m'a conduit à cette recherche. Le stop-loss est l'outil le plus important du trading en matière de gestion de l'argent. La gestion de l'argent fait partie des différentes façons dont un trader peut gagner de l'argent sur le marché et être cohérent à long terme. Comme indiqué précédemment, la gestion de l'argent est fortement associée au stop-loss et au ratio risque-récompense. Le ratio 1:1.5R (Risque:Récompense) a tendance à avoir un taux de gain plus élevé par rapport aux autres taux de gain Risque:Récompense, mais le ratio 1:>1.9R (Risque:Récompense) a la plupart du temps tendance à être plus rentable et à rester un trader en profit constant sur une longue période de temps (Saint Graal). Cette stratégie de trading du « Saint Graal » a ses inconvénients. Dans une situation idéale, trader avec 1 :>1.9R(Risk:Reward) sera rentable si, sur 10 trades (1pips chacun), 6 trades ont été perdus (6 pips) et 4 trades ont été gagnés (8 pips). Cela signifie que nous sommes en profit de 2 pips. Dans l'application réelle, tout n'est peut-être pas vrai. Un facteur majeur qui contribue à cela est un terme connu sous le nom de "Stop-loss Hunt". La chasse au stop-loss se produit lorsqu'une transaction atteint votre stop-loss pour la liquidité, puis se déplace dans la direction que vous avez prédite. La chasse aux stop-loss (Stop-loss Hunt) est un problème majeur dans le trading et la gestion de l'argent. Cela a également un effet psychologique sur les traders (principalement les nouveaux). 

Chasse aux Stop-loss

Fig 1.1. Chasse aux Stop-loss

La chasse au stop-loss est principalement associée à un stop-loss fixe ou suiveur sur l'action des prix ou le graphique en chandeliers. S'il n'y a pas de stop-loss sur le graphique d'action des prix, il n'y aura pas de chasse au stop-loss. Mais zéro stop-loss est égal à la probabilité de faire exploser votre compte de trading (qui est égale à un (1)).


Stop-loss RSI

L'oscillateur RSI est une réplique du graphique linéaire d'action des prix tracé sur une fenêtre limite de 100 à 0

thRsi


Fig 1.2. RSI et Graphique Linéaire

Si l'indicateur RSI et le graphique linéaire sont très similaires, l'utilisation de l'indicateur RSI en tant que stop-loss intelligent peut réduire le risque de chasse aux stop-loss.

Objectif :

Mon but ici est de vérifier si l'utilisation du stop-loss RSI serait capable de réduire la chasse au stop-loss et surtout d'être rentable sur le long terme.

Objectif :

Deux mêmes stratégies seront comparées: l'une avec un stop-loss défini sur le graphique d'action des prix et l'autre avec un stop-loss défini sur l'indicateur RSI.




Stratégie et code

Stop-Loss classique sur le graphique d'action des prix

Pour le premier EA avec stop-loss fixe sur l'action des prix. Voici les exigences pour la stratégie

Paramètres

Description

Indicateur utilisé

MACD (12,26,9)

Indicateur utilisé

Moyenne mobile (200)

Indicateur utilisé

Moyenne mobile (50)

Indicateur utilisé

ATR (5)

Période

1 min

Entrée pour Achat

Si la moyenne mobile (50) est supérieure à la moyenne mobile (200) et que la ligne MACD est supérieure à la ligne de signal lorsque la ligne MACD et la ligne de signal sont inférieures à zéro

Entrée pour la Vente

Si la moyenne mobile (50) est inférieure à la moyenne mobile (200) et que la ligne MACD est inférieure à la ligne de signal lorsque la ligne MACD et la ligne de signal sont au-dessus de zéro

Sortie

Take profit et Stop-loss (1:2R).

Le stop-loss pour la condition d'achat est le plus bas des vingt (20) bougies après l'entrée moins la valeur ATR (5)

Et la condition stop-loss pour la vente est la plus élevée de vingt (20) bougies après l'entrée plus la valeur ATR (5)

 


La représentation graphique est présentée ci-dessous.

Stoploss Classique pour un Achat


Fig 2.1 Achat

Stoploss Classique pour une Vente


Fig 2.2 Vente

Code

La première partie du code est principalement destinée à la déclaration des variables et aux données d'entrée. Toutes les variables du gestionnaire d'indicateurs ont été déclarées ici.

#property copyright "Copyright 2021, MetaQuotes Ltd."
#property link      "https://www.mql5.com"
#property version   "1.00"
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
#include<Trade\Trade.mqh>
CTrade trade;
int MATrend;
int MADirection;
int MACD;
int ATR;
input int afi;// ----------Risque------------
input double risk = 0.02; // % Montant à risquer
input int atrValue = 20; // Valeur de l'ATR
input int ai;// ----------Entrée de la moyenne mobile------------
input int movAvgTrend = 200;// Tendance de la Moyenne Mobile
input int movAvgDirection = 50;// Moyenne mobile pour la direction de la tendance;
input int i;// -----------Entrées du MACD-----------------------
input int fast = 12;// Macd Rapide
input int slow = 26; //Macd Lent
input int signal = 9; //Ligne de Signal

Autre variable déclarée

double pipValue  = 0.0;// 

double Balance; // Pour le solde courant

Les variables ont été assignées à chaque gestionnaire dans la fonction init()

int OnInit()
  {
//---
      // Moyennes Mobiles''
      MATrend = iMA(_Symbol,_Period,movAvgTrend,0,MODE_SMA,PRICE_CLOSE); //Moving Average 200
      MADirection = iMA(_Symbol,_Period,movAvgDirection,0,MODE_EMA,PRICE_CLOSE); //Moving Average 50
      //MACD
      MACD = iMACD(_Symbol,_Period,fast,slow,signal,PRICE_CLOSE);//MACD 
      //ATR
      ATR = iATR(_Symbol,_Period,atrValue);
      //---
      point=_Point;
      double Digits=_Digits;
      
      if((_Digits==3) || (_Digits==5))
      {
         point*=10;
      }
      return(INIT_SUCCEEDED);
  }


Le code sur la façon dont la stratégie s'exécute est illustré ci-dessous

void Strategy() {
   MqlRates priceAction[];
   ArraySetAsSeries(priceAction,true);
   int priceData = CopyRates(_Symbol,_Period,0,200,priceAction); 
   
   double maTrend[]; ArraySetAsSeries(maTrend,true);
   CopyBuffer(MATrend,0,0,200,maTrend); //200 MA
     
   double madirection[]; ArraySetAsSeries(madirection,true);
   CopyBuffer(MADirection,0,0,200,madirection);  //50 MA
   
   double macd[]; ArraySetAsSeries(macd,true);
   CopyBuffer(MACD,0,0,200,macd);  //MACD
   
   double macds[]; ArraySetAsSeries(macds,true);
   CopyBuffer(MACD,1,0,200,macds);  //MACD_Signal Line   
      
   double Bid  = NormalizeDouble(SymbolInfoDouble(_Symbol,SYMBOL_BID),_Digits);
   double Ask = NormalizeDouble(SymbolInfoDouble(_Symbol,SYMBOL_ASK),_Digits);  
   
   
   if (madirection[1]>maTrend[1]) {
      //Achat ; Tendance haussière
     
     
      
      bool macd_bZero = macds[1]<0&&macd[1]<0; //La ligne de signal du MacD est inférieure à Zero
      bool macd_cross = macd[1]>macds[1];// Le Macd croise la ligne de signal
      
      if (macd_bZero && macd_cross) {
         buyTrade = true;
      }
      
      
   } else if (madirection[1]<maTrend[1]) {
      //Vente; Tendance baissière
      
     
      bool macd_bZero = macds[1]>0&&macd[1]>0;; //La ligne de signal du MacD est inférieure à Zero
      bool macd_cross = macd[1]<macds[1];// Le Macd croise la ligne de signal
      
      if (macd_bZero && macd_cross) {
         sellTrade = true;
      }      
      
    }  
    
   if (buyTrade && sellTrade) {
      buyTrade = false;
      sellTrade = false;
   return;
   }
      
      
   if (buyTrade) {
      buyTrade = false;
      sellTrade = false;
      
      Buy(Ask);
   } else if (sellTrade) {
      buyTrade = false;
      sellTrade = false;
      
      Sell(Bid);   
   }
   
}

Entrée (achat et vente)

void Buy(double Ask) {
   double atr[]; ArraySetAsSeries(atr,true); //Ce tableau est utilisé pour stocker toutes les valeurs de l'ATR jusqu'à la dernière barre fermée
   CopyBuffer(ATR,0,0,200,atr); // Cette méthode copie la valeur du buffer de l'ATR dans le tableau (200 données bufferisées)

   theLotsize =  NormalizeDouble((Balance*risk)/((MathAbs(Ask-((stoplossforBuy(20)-atr[1])))*100)*pipValue),2); // Calcul de la taille du lot en utilisant le % à risquer
   trade.Buy(theLotsize,_Symbol,Ask,(stoplossforBuy(20)-atr[1]),Ask+(2*MathAbs(Ask-((stoplossforBuy(20)-atr[1])))),NULL); //Entrée d'Achat sans stoploss && le take profit est 2 fois la distance entre l'entrée et la bougie la plus basse
    

}
void Sell(double Bid) {
   double atr[]; ArraySetAsSeries(atr,true); // Ce tableau est utilisé pour stocker toutes les valeurs de l'ATR jusqu'à la dernière barre fermée
   CopyBuffer(ATR,0,0,200,atr); // Cette méthode copie la valeur du buffer de l'ATR dans le tableau (200 données bufferisées)
   theLotsize =  NormalizeDouble((Balance*risk)/((MathAbs(Bid-((stoplossforSell(20)+atr[1])))*100)*pipValue),2); // Calcul de la taille du lot en utilisant le % à risquer
   trade.Sell(theLotsize,_Symbol,Bid,(stoplossforSell(20)+atr[1]),Bid-(2*MathAbs(((stoplossforSell(20)+atr[1]))-Bid)),NULL); //Entrée de Vente sans stoploss && le take profit est 2 fois la distance entre l'entrée et la bougie la plus haute

}

À partir des codes ci-dessus, nous avons appelé deux méthodes qui sont le stoplossforSell(int num) et le stoplossforBuy(int num). Ces deux méthodes sont spécifiquement destinées à identifier la bougie la plus élevée et la plus basse du numéro attribué respectivement après le déclenchement de l'entrée. Par exemple, stoplossforSell(20) renvoie la bougie la plus élevée parmi les 20 bougies précédentes avant l'entrée.

double stoplossforBuy(int numcandle) {
         int LowestCandle;
         
         // Crée un tableau pour les plus bas des bougies
         double low[];
         
         // Trie les bougies depuis le bas courant
         ArraySetAsSeries(low,true);
         
         // Copie tous les plus bas des 100 bougies
         CopyLow(_Symbol,_Period,0,numcandle,low);
         
         // Calcule la bougie la plus basse
         LowestCandle = ArrayMinimum(low,0,numcandle);
         
         // Crée le tableau des prix
         MqlRates PriceInfo[];
         
         ArraySetAsSeries(PriceInfo,true);
         
         // Copie les prix dans le tableau
         
         int Data = CopyRates(Symbol(),Period(),0,Bars(Symbol(),Period()),PriceInfo);
      
         return PriceInfo[LowestCandle].low;
                  
      
         

}
double stoplossforSell(int numcandle) {
         int HighestCandle;
         double High[];
       
       //Trie les bougies depuis le haut courante
         ArraySetAsSeries(High,true);
       
       //Copie tous les plus bas des 100 bougies
         CopyHigh(_Symbol,_Period,0,numcandle,High);
         
         //Calcule la bougie la plus haute
         HighestCandle = ArrayMaximum(High,0,numcandle);
         
         //Crée le tableau des prix
         MqlRates PriceInformation[];
         ArraySetAsSeries(PriceInformation,true);
         
         
         //Copie les prix dans le tableau
         int Data = CopyRates(Symbol(),Period(),0,Bars(Symbol(),Period()),PriceInformation);
         
         return PriceInformation[HighestCandle].high;
           
 
 }

Cet EA entre dans le trade un à à la fois en vérifiant s'il y a un trade ouvert ou non. S'il n'y a pas de trade ouvert, alors la méthode de stratégie est appelée.

void OnTick()
  {
//---
   pipValue  = ((((SymbolInfoDouble(Symbol(), SYMBOL_TRADE_TICK_VALUE))*point)/(SymbolInfoDouble(Symbol(),SYMBOL_TRADE_TICK_SIZE))));

   Balance = AccountInfoDouble(ACCOUNT_BALANCE);
   
   if (PositionsTotal()==0) {
      Strategy();
   }
  }

Stop-Loss RSI sur l'indicateur RSI


Pour la deuxième EA avec stop-loss fixe sur l'indicateur RSI. Vous trouverez ci-dessous les exigences de la stratégie.

Paramètres

Description

Indicateur utilisé

MACD (12,26,9)

Indicateur utilisé

Moyenne mobile (200)

Indicateur utilisé

Moyenne mobile (50)

Indicateur utilisé

ATR (5)

Période

1 min

Entrée pour Achat

Si la moyenne mobile (50) est supérieure à la moyenne mobile (200) et que la ligne MACD est supérieure à la ligne de signal lorsque la ligne MACD et la ligne de signal sont inférieures à zéro

Entrée pour la Vente

Si la moyenne mobile (50) est inférieure à la moyenne mobile (200) et que la ligne MACD est inférieure à la ligne de signal lorsque la ligne MACD et la ligne de signal sont au-dessus de zéro

Sortie

Take profit.

Le stop-loss pour la condition d'achat est le plus bas de vingt (10) valeur RSI après l'entrée

Et la condition stop-loss pour la vente est la plus élevée de vingt (10) valeurs RSI après l'entrée

 

Si le RSI croise le RSI le plus élevé ou le plus bas, la transaction est fermée.

 


La ligne est tracée sur le RSI Stop loss pour une visualisation facile

Stoploss d'une Entrée d'Achat (stoploss RSI)


Fig 2.3. Trade Achat avec un stop-loss sur le RSI

La transaction se ferme lorsque la valeur RSI actuelle est inférieure à la ligne Stop-loss de la fenêtre RSI.

Stoploss d'une Entrée de Vente (stoploss RSI)


Fig 2.4. Trade de Vente avec Stop-loss au RSI

La transaction se ferme lorsque la valeur RSI actuelle est supérieure à la ligne Stop-loss de la fenêtre RSI.

Code

La première partie du code est principalement destinée à la déclaration des variables et aux données d'entrée. Semblable au premier indicateur avec quelques ajouts indiqués ci-dessous

int RSI;
input int rsi = 5; // Valeur du RSI
double lowestrsiValue = 100;
double highestrsiValue = 0.0;

De même, la méthode onint() est également similaire avec quelques ajouts comme indiqué ci-dessous

int OnInit()
  {
              //RSI
      RSI = iRSI(_Symbol,_Period,rsi,PRICE_CLOSE);
}


Le code de la stratégie est le même que ci-dessus. Mais l'entrée pour l'achat et la vente n'a pas de stop loss car nous utiliserons le niveau RSI comme stop-loss. Voici le code pour les entrées

void Buy(double Ask) {
   double atr[]; ArraySetAsSeries(atr,true); // Ce tableau est utilisé pour stocker toutes les valeurs de l'ATR jusqu'à la dernière barre fermée
   CopyBuffer(ATR,0,0,200,atr); // Cette méthode copie la valeur du buffer de l'ATR dans le tableau (200 données bufferisées)

   theLotsize =  NormalizeDouble((Balance*risk)/((MathAbs(Ask-((stoplossforBuy(20)-atr[1])))*100)*pipValue),2); // Calcul de la taille du lot en utilisant le % à risquer
   
   ObjectCreate(0,"sl",OBJ_HLINE,3,0,lowestRSI(10)); // Puisque notre stoploss est à zero, nous assignong un stoploss intelligent sur le rsi en dessinant une ligne dans la fenêtre du rsi
   trade.Buy(theLotsize,_Symbol,Ask,0,Ask+(2*MathAbs(Ask-((stoplossforBuy(20)-atr[1])))),NULL);//Entrée d'Achat sans stoploss && le take profit est 2 fois la distance entre l'entrée et la bougie la plus basse
    Print("SL",lowestRSI(10));
}
void Sell(double Bid) {
   double atr[]; ArraySetAsSeries(atr,true); //Ce tableau est utilisé pour stocker toutes les valeurs de l'ATR jusqu'à la dernière barre fermée
   CopyBuffer(ATR,0,0,200,atr); // Cette méthode copie la valeur du buffer de l'ATR dans le tableau (200 données bufferisées)
   
   theLotsize =  NormalizeDouble((Balance*risk)/((MathAbs(Bid-((stoplossforSell(20)+atr[1])))*100)*pipValue),2);  // Calcul de la taille du lot en utilisant le % à risquer
   
   ObjectCreate(0,"sl",OBJ_HLINE,3,0,highestRSI(10)); // Puisque notre stoploss est à zero, nous assignong un stoploss intelligent sur le rsi en dessinant une ligne dans la fenêtre du rsi
   trade.Sell(theLotsize,_Symbol,Bid,0,Bid-(2*MathAbs(((stoplossforSell(20)+atr[1]))-Bid)),NULL);//Entrée de Vente sans stoploss && le take profit est 2 fois la distance entre l'entrée et la bougie la plus haute
   Print("SL",highestRSI(10));
}


La dernière partie du code qui diffère de l'EA ci-dessus concerne les méthodes qui obtiennent les valeurs les plus basses et les plus élevées du RSI. Ceci est appelé à partir de la méthode des entrées ci-dessus et utilise les données pour tracer une ligne au point du RSI le plus bas ou le plus élevé.

Remarque : La ligne tracée est supprimée dans la méthode de stratégie lorsqu'il n'y a pas de position ouverte.

 double lowestRSI(int count) {     
      double thersi[]; ArraySetAsSeries(thersi,true);
      CopyBuffer(RSI,0,0,200,thersi);
      
      for (int i = 0; i<count;i++) {
      
         if (thersi[i]<lowestrsiValue) {
            lowestrsiValue = thersi[i];
         }
      }
   return lowestrsiValue;
}
// La méthode pour obtenir le RSI Le Plus Haut après l'entrée pour définir le Stoploss intelligent
double highestRSI(int count) {

      
      double thersi[]; ArraySetAsSeries(thersi,true);
      CopyBuffer(RSI,0,0,200,thersi);
      
      for (int i = 0; i<count;i++) {
      
         if (thersi[i]>highestrsiValue) {
            highestrsiValue = thersi[i];
         }
      }
   return highestrsiValue;
}

####

Maintenant que les EA sont définis et respectés, nous pouvons procéder au test des deux EA pour le résultat requis.


Test et résultat

Test de chasse au Stop-Loss

Dans la section, le test et le résultat obtenu à partir de la simulation seront présents. Le premier test à effectuer est de déterminer si le RSI STOP-LOSS EA est capable de RÉDUIRE le problème de la chasse au stop-loss pendant le trading. Il sera comparé au CLASSIC STOP-LOSS EA.

Les tests se font sur la tranche horaire M1.

RSI STOP-LOSS EA ENTRY DATA

Expert : MACD_Smart_Stoploss
Symbole : Volatilité 10 Index
Période : M1 (2021.07.01 - 2021.07.15)
Entrées : afi=0
risk=0.05
atrValue=20
rsi=14
ai=0
movAvgTrend=200
movAvgDirection=50
i=0
fast=12
slow=26
signal=9
Courtier : Deriv Limited
Devise : USD
Dépôit Initial : 500.00
Levier : 1:500



CLASSIC STOP-LOSS EA ENTRY DATA

Expert : MACD_Cross_Stoploss
Symbole : Volatilité 10 Index
Période : M1 (2021.07.01 - 2021.07.15)
Entrées : afi=0
risk=0.05
atrValue=5
ai=0
movAvgTrend=200
movAvgDirection=50
i=0
fast=12
slow=26
signal=9

risk reward=1:2
Courtier : Deriv Limited
Devise : USD
Dépôit Initial : 500.00
Levier : 1:50


RÉSULTATS

Une représentation graphique des transactions effectuées par les deux EA sera affichée ci-dessous. Un total de 3 échantillons ont été prélevés dans chacun.

RSI stoploss 1


Fig 3.1. Echantillon 1 de RSI STOP-LOSS EA

Price Action Stoploss


Fig 3.1a. Echantillon 1 de CLASSIC STOP-LOSS EA

Rsi stoploss 2

Fig 3.2. Echantillon 2 de RSI STOP-LOSS EA

Price Action Stoploss

Fig 3.2a. Echantillon 2 de CLASSIC STOP-LOSS EA

Rsi Stoploss 3
Fig 3.3. Echantillon 3 de RSI STOP-LOSS EA

Price Action Stoploss

Fig 3.3a. Echantillon 3 de CLASSIC STOP-LOSS EA


À partir de la comparaison ci-dessus, on peut observer que le RSI STOP-LOSS EA a fait un excellent travail pour éviter d'être chassé par le marché par rapport au Stop-Loss classique défini sur le graphique d'action des prix.


Test de rentabilité

Il est maintenant temps de se poser la grande question "Est-ce rentable ?". Étant donné que le RSI STOP-LOSS EA a fait un excellent travail pour éviter la chasse aux stop loss, il doit être rentable et également avoir un taux de gain plus élevé car peu de stop-loss seraient déclenchés par rapport à la méthode stop-loss classique. Logiquement, cela pourrait être vrai. Mais pour prouver cette théorie, un test doit être effectué.

Des données similaires du test ci-dessus seraient utilisées pour les deux tests. Un back-test sur les deux EA de plus de 100 transactions serait effectué sur la période M1. Voici les résultats.


RSI STOP-LOSS EA RESULTS

Résultats
Qualité de l'historique : 100%
Barres : 20160 Tick s: 603385 Symboles : 1
Profit Total Net : 327.71 Drawdown Absolu du Solde : 288.96 Drawdown Absolu des Fonds: 367.85
Profit Brut : 3 525.74 Drawdown Maximal du Solde : 483.90 (69.63%) Drawdown Maximal des Fonds : 523.24 (71.95%)
Perte Brute : -3 198.03 Drawdown Relatif du Solde : 69.63% (483.90) Drawdown Relatif des Fonds: 73.65% (369.45)
Facteur de profit : 1.10 Rendement Attendu : 1.76 Taux de Marge : 317.21%
Facteur de Récupération : 0.63 Ratio de Sharpe : 0.08 Z-Score : 1.68 (90.70%)
AHPR : 1.0070 (0.70%) Corrélation LR : 0.51 Résultat OnTester : 0
GHPR : 1.0027 (0.27%) Erreur Standard LR : 134.83
Nb Total de Trades : 186 Trades Courts (gagnés %): 94 (42.55%) Trades Longs (gagnés %): 92 (38.04%)
Nb Total de Transactions : 372 Trades Gagnants (% du total): 75 (40.32%) Trades Perdants (% du total): 111 (59.68%)
Plus gros gain : 85.26 Plus grosse perte : -264.99
Profit Moyen par Trade : 47.01 Perte Moyenne par Trade : -28.81
Gains consécutifs maximum ($) : 5 (350.60) Pertes consécutives maximum ($) : 6 (-255.81)
Profit consécutif maximal (nombre) : 350.60 (5) Perte consécutive maximale (nombre) : -413.34 (5)
Victoires consécutives moyennes : 2 Pertes consécutives moyennes : 2

rsistlEcurve

Fig 3.4 Courbes des fonds pour RSI Stop-loss EA

CLASSIC STOP-LOSS EA RESULTS


Résultats
Qualité de l'historique : 100%
Barres : 20160 Tick s: 603385 Symboles : 1
Profit Total Net : 3 672.06 Drawdown Absolu du Solde : 215.45 Drawdown Absolu des Fonds: 217.30
Profit Brut : 10 635.21 Drawdown Maximal du Solde : 829.54 (19.27%) Drawdown Maximal des Fonds : 1 159.20 (25.59%)
Perte Brute : -6 963.15 Drawdown Relatif du Solde : 48.76% (270.82) Drawdown Relatif des Fonds: 51.81% (303.90)
Facteur de profit : 1.53 Rendement Attendu : 15.97 Taux de Marge : 274.21%
Facteur de Récupération : 3.17 Ratio de Sharpe : 0.16 Z-Score : -0.14 (11.13%)
AHPR : 1.0120 (1.20%) Corrélation LR : 0.80 Résultat OnTester : 0
GHPR : 1.0093 (0.93%) Erreur Standard LR : 545.00
Nb Total de Trades : 230 Trades Courts (gagnés %): 107 (44.86%) Trades Longs (gagnés %): 123 (38.21%)
Nb Total de Transactions : 460 Trades Gagnants (% du total): 95 (41.30%) Trades Perdants (% du total): 135 (58.70%)
Plus gros gain : 392.11 Plus grosse perte : -219.95
Profit Moyen par Trade : 111.95 Perte Moyenne par Trade : -51.58
Gains consécutifs maximum ($) : 6 (1 134.53) Pertes consécutives maximum ($) : 9 (-211.43)
Profit consécutif maximal (nombre) : 1 134.53 (6) Perte consécutive maximale (nombre) : -809.21 (4)
Victoires consécutives moyennes : 2 Pertes consécutives moyennes : 2


classicalcure

Fig 3.5. Courbe des fonds pour l'EA Classic Stop loss EA


Observation

Bien que les deux EA aient été rentables à la fin de la période de trading, il a été observé que le premier EA (RSI Stop-Loss EA) avait moins de pertes dont certaines étaient énormes.

Analyse de la courbe des fonds pour le stoploss RSI

Fig 3.6. Pertes de la courbe des fonds

Ces pertes pourraient affecter la rentabilité globale de l'EA ainsi que la bonne gestion de l'argent. D'autre part, le stop loss classique EA a enregistré plus de pertes et a également rapporté le plus d'argent à la fin de la période de négociation.


Conclusion et recommandation

Le Money Management est en effet le Saint Graal du trading. D'après l'expérience ci-dessus, l'EA dans laquelle la gestion de l'argent a été entièrement mise en œuvre a fait le plus de profit avec plus de perte. C'est à cause de la cohérence de trading. Cependant, définir le stop loss au RSI ne donne pas entièrement la même cohérence pour le premier EA (RSI STOP-LOSS) car le montant du risque varie.

Recommandation

La couverture est un moyen de réduire les pertes dans le premier (RSI STOP-LOSS) EA. Cela pourrait donner un montant de risque plus cohérent et améliorer le profit à long terme.


Merci d'avoir lu !!!

Traduit de l’anglais par MetaQuotes Ltd.
Article original : https://www.mql5.com/en/articles/9827

MetaTrader 4 sur Linux MetaTrader 4 sur Linux
Dans cet article, nous montrons un moyen simple d'installer MetaTrader 4 sur les versions Linux populaires - Ubuntu et Debian. Ces systèmes sont largement utilisés sur les serveurs ainsi que sur les ordinateurs personnels des traders.
Apprenez à concevoir différents systèmes de Moyenne Mobile Apprenez à concevoir différents systèmes de Moyenne Mobile
Il existe de nombreuses stratégies qui peuvent être utilisées pour filtrer les signaux générés en fonction de n'importe quelle stratégie, même en utilisant la moyenne mobile elle-même qui fait l'objet de cet article. Ainsi, l'objectif de cet article est de partager avec vous certaines des stratégies de moyenne mobile et comment concevoir un système de trading algorithmique.
Apprenez à concevoir un système de trading avec les Bandes de Bollinger Apprenez à concevoir un système de trading avec les Bandes de Bollinger
Dans cet article, nous allons découvrir les Bandes de Bollinger, l'un des indicateurs les plus populaires dans le monde du trading. Nous allons considérer l'analyse technique et voir comment concevoir un système de trading algorithmique basé sur l'indicateur des Bandes de Bollinger.
Développer un Expert Advisor de trading à partir de zéro Développer un Expert Advisor de trading à partir de zéro
Dans cet article, nous verrons comment développer un robot de trading avec un minimum de programmation. Bien sûr, MetaTrader 5 offre un haut niveau de contrôle sur les positions de trading. Cependant, utiliser uniquement la capacité manuelle pour passer des ordres peut être assez difficile et risqué pour les utilisateurs moins expérimentés.