English Русский 中文 Español 日本語 Português 한국어 Français Italiano Türkçe
preview
Fester PriceAction Stoploss oder fester RSI (Smart Stop-Loss)

Fester PriceAction Stoploss oder fester RSI (Smart Stop-Loss)

MetaTrader 5Beispiele | 29 November 2021, 10:36
994 0
vwegba
vwegba

Einführung

Die Suche nach dem heiligen Gral im Handel hat mich zu dieser Untersuchung geführt. Stop-Loss ist das wichtigste Instrument im Handel, wenn es um Geldmanagement geht. Das Geldmanagement gehört zu den verschiedenen Möglichkeiten, wie ein Händler am Markt Geld verdienen und auf lange Sicht bestehen kann. Wie bereits erwähnt, steht das Geldmanagement in engem Zusammenhang mit dem Stop-Loss und dem Risiko-Ertrags-Verhältnis. Das Verhältnis 1:1,5R (Risiko:Ertrag) hat im Vergleich zu anderen Risiko:Ertrag-Verhältnissen eine höhere Gewinn, aber das Verhältnis 1:>1,9R (Risiko:Ertrag) ist meistens profitabler und bringt einem Händler über einen langen Zeitraum hinweg konstante Gewinne (Heiliger Gral). Diese "Heiliger Gral"-Handelsstrategie hat aber auch ihre Schattenseiten. In einer idealen Situation ist der Handel bei 1:>1,9R (Risiko:Ertrag) profitabel, wenn von 10 Positionen (mit je 1 Pip) 6 Positionen verloren (6 Pips) und 4 Positionen gewonnen wurden (8 Pips). Dies bedeutet, dass wir einen Gewinn von 2 Pips erzielt haben. In der realen Anwendung ist das vielleicht nicht ganz richtig. Ein wichtiger Faktor, der dazu beiträgt, ist ein Begriff, der als "Stop-Loss-Hunt", die Jagd nach Stopps, bekannt ist. Von Stop-Loss-Hunt spricht man, wenn ein Handel Ihren Stop-Loss wegen der Liquidität erreicht und sich dann in die von Ihnen vorhergesagte Richtung bewegt. Stop-Loss-Hunt ist ein wichtiges Thema beim Handel und beim Geldmanagement. Es hat auch eine psychologische Wirkung auf Händler (meist neue Händler). 

Stop-Loss Hunt

Abb. 1.1 Stop-Loss-Hunt

Die Stop-Loss-Jagd ist hauptsächlich mit einem festen oder nachlaufenden Stop-Loss auf dem Price-Action- oder Kerzen-Chart verbunden. Wenn auf dem Price-Action-Chart kein Stop-Loss vorhanden ist, gibt es auch keinen Stop-Loss-Hunt. Aber ein Stop-Loss von Null ist gleichbedeutend mit der Wahrscheinlichkeit, die gleich 1 ist, dass das Guthaben Ihres Handelskontos implodiert.


Der RSI-Stop-Loss

Der RSI-Oszillator ist eine Nachbildung des Price-Action-Charts, der innerhalb der Grenzen von 100 bis 0 gezeichnet wird.

the Rsi


Abb. 1.2 RSI und Linienchart

Wenn der RSI-Indikator und der Linienchart sehr ähnlich sind, kann die Verwendung des RSI-Indikators als intelligenter Stop-Loss das Risiko, Opfer einer Stop-Loss-Jagd zu werden, verringern.

Zielsetzung:

Mein Ziel ist es, zu überprüfen, ob die Verwendung des RSI-Stop-Loss in der Lage ist, Stop-Loss-Hunt zu reduzieren und vor allem langfristig profitabel zu sein.

Vorgehen:

Es werden zwei gleiche Strategien verglichen, eine mit Stop-Loss auf dem Price-Action-Chart und die andere mit Stop-Loss auf dem RSI Indikator




Strategie und Code

Klassischer Stop-Loss auf dem Price-Action-Chart

Für den ersten EA mit festem Stop-Loss auf der Preis-Aktion. Nachfolgend sind die Anforderungen für die Strategie aufgeführt

Parameter

Beschreibung

Verwendeter Indikator

MACD (12,26,9)

Verwendeter Indikator

Moving Average (200)

Verwendeter Indikator

Moving Average (50)

Verwendeter Indikator

ATR (5)

Zeitrahmen

1 min

Einstieg zum Kauf

Wenn der gleitende Durchschnitt(50) (Moving Average) über dem gleitenden Durchschnitt(200) liegt und die MACD-Linie größer als die Signallinie ist und sowohl die MACD-Linie als auch die Signallinie unter Null liegen.

Einstieg zum Verkauf

Wenn der Durchschnitt(50) (Moving Average) unter dem gleitenden Durchschnitt(200) liegt und die MACD-Linie kleiner als die Signallinie ist und sowohl die MACD-Linie als auch die Signallinie über Null liegen.

Schließen

Gewinnmitnahme und Stop-Loss (1:2R).

Der Stop-Loss für die Kaufbedingung ist der niedrigste Preis der zwanzig (20) Kerzen nach dem Einstieg minus dem ATR(5).

Und der Stop-Loss für die Verkaufsbedingung ist der höchste Preis der zwanzig (20) Kerzen nach dem Einstieg plus dem ATR(5).

 


Die grafische Darstellung wird unten gezeigt.

Kauf-Eröffnung mit klassischem Stop-Loss


Abb. 2.1 Kauf-Eröffnung

Verkauf-Eröffnung mit klassischem Stop-Loss


Abb. 2.2 Verkauf-Eröffnung

Code

Der erste Teil des Codes dient hauptsächlich der Deklaration von Variablen und Eingabedaten. Hier werden alle Variablen des Indikators Handler deklariert.

#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;// ----------RiskAmount------------
input double risk = 0.02; //% Amount to risk
input int atrValue = 20; // ATR VAlue
input int ai;// ----------Moving Average inputs------------
input int movAvgTrend = 200;// Moving Average Trend
input int movAvgDirection = 50;//moving Average for trend Direction;
input int i;// -----------MACD inputs-----------------------
input int fast = 12;// Macd Fast
input int slow = 26; //Macd Slow
input int signal = 9; //Signal Line

Deklaration der anderen Variablen

double pipValue  = 0.0;// 

double Balance; // For the Current Balance

Die Variable wurde dem jeweiligen Handler in der Funktion init() zugewiesen.

int OnInit()
  {
//---
      //Moving Averages Indicators''
      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);
  }


Der Code, wie die Strategie abläuft, ist unten dargestellt:

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]) {
      //Buy ; Uptrend
     
     
      
      bool macd_bZero = macds[1]<0&&macd[1]<0; //MacD Signal Line is less than Zero
      bool macd_cross = macd[1]>macds[1];// Macd Crosses the signal line
      
      if (macd_bZero && macd_cross) {
         buyTrade = true;
      }
      
      
   } else if (madirection[1]<maTrend[1]) {
      //Sell; DownTrend
      
     
      bool macd_bZero = macds[1]>0&&macd[1]>0;; //MacD Signal Line is less than Zero
      bool macd_cross = macd[1]<macds[1];// Macd Crosses the signal line
      
      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);   
   }
   
}

Eröffnung (Kauf und Verkauf)

void Buy(double Ask) {
   double atr[]; ArraySetAsSeries(atr,true); //This array is use to store all ATR value to the last closed bar
   CopyBuffer(ATR,0,0,200,atr); // This method copy the buffer value of the ATR indicator into the array (200 buffered data)

   theLotsize =  NormalizeDouble((Balance*risk)/((MathAbs(Ask-((stoplossforBuy(20)-atr[1])))*100)*pipValue),2); // This Calculate the lotsize using the % to risk
   trade.Buy(theLotsize,_Symbol,Ask,(stoplossforBuy(20)-atr[1]),Ask+(2*MathAbs(Ask-((stoplossforBuy(20)-atr[1])))),NULL); //Buy Entry with zero stoploss && take profit is twice the distance between the entry and the lowest candle
    

}
void Sell(double Bid) {
   double atr[]; ArraySetAsSeries(atr,true); //This array is use to store all ATR value to the last closed bar
   CopyBuffer(ATR,0,0,200,atr); // This method copy the buffer value of the ATR indicator into the array (200 buffered data)
   theLotsize =  NormalizeDouble((Balance*risk)/((MathAbs(Bid-((stoplossforSell(20)+atr[1])))*100)*pipValue),2); // This Calculate the lotsize using the % to risk
   trade.Sell(theLotsize,_Symbol,Bid,(stoplossforSell(20)+atr[1]),Bid-(2*MathAbs(((stoplossforSell(20)+atr[1]))-Bid)),NULL); //Sell Entry with zero stoploss && take profit is twice the distance between the entry and the highest candle

}

In den obigen Codes haben wir zwei Methoden aufgerufen, nämlich stoplossforSell(int num) und stoplossforBuy(int num). Diese beiden Methoden sind speziell für die Identifizierung der höchsten und niedrigsten Kerze der zugewiesenen Nummer bzw., nachdem eine Position eröffnet wurde. Z.B. stoplossforSell(20) gibt die höchste Kerze der 20 vorherigen Kerzen vor dem Einstieg zurück.

double stoplossforBuy(int numcandle) {
         int LowestCandle;
         
         //Create array for candle lows
         double low[];
         
         //Sort Candle from current downward
         ArraySetAsSeries(low,true);
         
         //Copy all lows for 100 candle
         CopyLow(_Symbol,_Period,0,numcandle,low);
         
         //Calculate the lowest candle
         LowestCandle = ArrayMinimum(low,0,numcandle);
         
         //Create array of price
         MqlRates PriceInfo[];
         
         ArraySetAsSeries(PriceInfo,true);
         
         //Copy price data to array
         
         int Data = CopyRates(Symbol(),Period(),0,Bars(Symbol(),Period()),PriceInfo);
      
         return PriceInfo[LowestCandle].low;
                  
      
         

}
double stoplossforSell(int numcandle) {
         int HighestCandle;
         double High[];
       
       //Sort array downward from current candle
         ArraySetAsSeries(High,true);
       
       //Fill array with data for 100 candle
         CopyHigh(_Symbol,_Period,0,numcandle,High);
         
         //calculate highest candle
         HighestCandle = ArrayMaximum(High,0,numcandle);
         
         //Create array for price
         MqlRates PriceInformation[];
         ArraySetAsSeries(PriceInformation,true);
         
         
         //Copy price data to array
         int Data = CopyRates(Symbol(),Period(),0,Bars(Symbol(),Period()),PriceInformation);
         
         return PriceInformation[HighestCandle].high;
           
 
 }

Diese EA eröffnet jew. eine Position zu durch die Überprüfung, ob es bereits offene Positionen gibt oder nicht. Gibt es keine offenen Positionen, dann wird die Strategie-Methode aufgerufen wird.

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

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

RSI Stop-Loss durch den RSI Indikator


Für den zweiten EA mit festem Stop-Loss durch dem RSI-Indikator. Hier sind die Anforderungen für die Strategie.

Parameter

Beschreibung

Verwendeter Indikator

MACD (12,26,9)

Verwendeter Indikator

Moving Average (200)

Verwendeter Indikator

Moving Average (50)

Verwendeter Indikator

ATR (5)

Zeitrahmen

1 min

Einstieg zum Kauf

Wenn der gleitende Durchschnitt(50) (Moving Average) über dem gleitenden Durchschnitt(200) liegt und die MACD-Linie größer als die Signallinie ist und sowohl die MACD-Linie als auch die Signallinie unter Null liegen.

Einstieg zum Verkauf

Wenn der Durchschnitt(50) (Moving Average) unter dem gleitenden Durchschnitt(200) liegt und die MACD-Linie kleiner als die Signallinie ist und sowohl die MACD-Linie als auch die Signallinie über Null liegen.

Schließen

Take-Profit.

Der Stop-Loss für die Kaufbedingung ist der niedrigste Preis der zwanzig (20) RSI-Werten vor dem Einstieg.

Und der Stop-Loss für die Verkaufsbedingung ist der höchste Preis der zwanzig (10) RSI-Werten vor dem Einstieg.

 

Wenn der RSI den höchsten oder niedrigsten RSI-Wert kreuzt, wird die Position geschlossen.

 


Zur einfachen Visualisierung wird eine Linie auf den RSI Stop-Loss gezogen

Kauf-Einstiegs-Stoploss (RSI-Stoploss)


Abb. 2.3 Kauf mit Stop-Loss beim RSI

Die Position wird geschlossen, wenn der aktuelle RSI-Wert kleiner ist als die Stop-Loss-Linie im RSI-Fenster.

Verkauf mit Stop-Loss (RSI Stop-Loss)


Abb. 2.4 Verkauf mit Stop-Loss beim RSI

Die Position wird geschlossen, wenn der aktuelle RSI-Wert größer ist als die Stop-Loss-Linie im RSI-Fenster.

Code

Der erste Teil des Codes besteht hauptsächlich aus der Deklaration der Variablen und der Eingabedaten, ähnlich wie beim ersten Indikator mit einigen Ergänzungen (siehe unten)

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

Auch OnInit() ist ähnlich, mit einigen Ergänzungen, wie unten gezeigt

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


Der Code für die Strategie ist derselbe wie oben. Aber die Eröffnung für beide, Kauf und Verkauf, haben keine Stop-Loss-Werte, weil wir mit dem RSI-Wert als Stop-Loss arbeiten werden. Unten sind die Codes für die Eröffnungen

void Buy(double Ask) {
   double atr[]; ArraySetAsSeries(atr,true); //This array is use to store all ATR value to the last closed bar
   CopyBuffer(ATR,0,0,200,atr); // This method copy the buffer value of the ATR indicator into the array (200 buffered data)

   theLotsize =  NormalizeDouble((Balance*risk)/((MathAbs(Ask-((stoplossforBuy(20)-atr[1])))*100)*pipValue),2); // This Calculate the lotsize using the % to risk
   
   ObjectCreate(0,"sl",OBJ_HLINE,3,0,lowestRSI(10)); // Since our stoploss is zero we assign a smart stoploss on the rsi by drawing a line on the rsi window
   trade.Buy(theLotsize,_Symbol,Ask,0,Ask+(2*MathAbs(Ask-((stoplossforBuy(20)-atr[1])))),NULL);//Buy Entry with zero stoploss && take profit is twice the distance between the entry and the lowest candle
    Print("SL",lowestRSI(10));
}
void Sell(double Bid) {
   double atr[]; ArraySetAsSeries(atr,true); //This array is use to store all ATR value to the last closed bar
   CopyBuffer(ATR,0,0,200,atr); // This method copy the buffer value of the ATR indicator into the array (200 buffered data)
   
   theLotsize =  NormalizeDouble((Balance*risk)/((MathAbs(Bid-((stoplossforSell(20)+atr[1])))*100)*pipValue),2);  // This Calculate the lotsize using the % to risk
   
   ObjectCreate(0,"sl",OBJ_HLINE,3,0,highestRSI(10)); // Since our stoploss is zero we assign a smart stoploss on the rsi by drawing a line on the rsi window
   trade.Sell(theLotsize,_Symbol,Bid,0,Bid-(2*MathAbs(((stoplossforSell(20)+atr[1]))-Bid)),NULL);//Sell Entry with zero stoploss && take profit is twice the distance between the entry and the highest candle
   Print("SL",highestRSI(10));
}


Der letzte Teil des Codes, der sich vom obigen EA unterscheidet, sind die Methoden, die den niedrigsten und höchsten Wert des RSI ermitteln. Diese wird von der obigen Eröffnungsmethode aufgerufen und verwendet die Daten, um eine Linie am Punkt des niedrigsten oder höchsten RSI zu zeichnen.

Hinweis: Die gezeichnete Linie wird in der Strategiemethode gelöscht, wenn es keine offene Position gibt.

 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;
}
//This method get the Highest RSI afer ENtry to set the smart Stoploss
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;
}

####

Nun, da die EAs eingestellt und kompiliert sind, können wir fortfahren, beide EAs auf das gewünschte Ergebnis zu testen.


Test und Ergebnis

Test der Stop-Loss-Jagd

In diesem Abschnitt werden der Test und das aus der Simulation gewonnene Ergebnis vorgestellt. Zunächst wird getestet, ob der RSI STOP-LOSS EA in der Lage ist, das Problem der Stop-Loss-Jagd beim Handel zu REDUZIEREN. Er wird mit dem CLASSICAL STOP-LOSS EA verglichen.

Die Tests werden auf dem 1min-Zeitrahmen durchgeführt.

RSI STOP-LOSS EA ENTRY DATA

Expert: MACD_Smart_Stoploss
Symbol: Volatility 10 Index
Period: M1 (2021.07.01 - 2021.07.15)
Eingaben: afi=0
risk=0.05
atrValue=20
rsi=14
ai=0
movAvgTrend=200
movAvgDirection=50
i=0
fast=12
slow=26
signal=9
Broker: Deriv Limited
Currency: USD
Initial Deposit: 500.00
Leverage: 1:500



CLASSIC STOP-LOSS EA ENTRY DATA

Expert: MACD_Cross_Stoploss
Symbol: Volatility 10 Index
Period: M1 (2021.07.01 - 2021.07.15)
Eingaben: 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
Broker: Deriv Limited
Currency: USD
Initial Deposit: 500.00
Leverage: 1:50


ERGEBNISSE

Die grafische Darstellung des von beiden EAs durchgeführten Handels wird unten angezeigt. Von jedem EA wurden insgesamt 3 Handelsbeispiele gezeigt.

RSI Stop-Loss 1


Abb. 3.1 Beispiel 1 des RSI STOP-LOSS EA

Price Action Stop-Loss


Abb. 3.1a Beispiel 1 des CLASSIC STOP-LOSS EA

RSI Stop-Loss 2

Abb. 3.2 Beispiel 2 des RSI STOP-LOSS EA

Price Action Stop-Loss

Abb. 3.1a Beispiel 2 des CLASSIC STOP-LOSS EA

RSI Stop-Loss 3
Abb. 3.3 Beispiel 3 des RSI STOP-LOSS EA

Price Action Stop-Loss

Abb. 3.1a Beispiel 3 des CLASSIC STOP-LOSS EA


Aus dem obigen Vergleich geht hervor, dass der RSI STOP-LOSS EA im Vergleich zu den klassischen Stop-Loss, die auf dem Preis-Aktions-Chart gesetzt werden, eine großartige Arbeit geleistet hat, um zu vermeiden, aus dem Markt gejagt zu werden.


Rentabilitätstest

Jetzt ist es an der Zeit, die große Frage zu stellen: "Ist das profitabel?". Da der RSI STOP-LOSS EA eine großartige Arbeit bei der Vermeidung von Stop-Loss-Jagden geleistet hat, muss er profitabel sein und auch eine höhere Gewinnrate haben, da im Vergleich zur klassischen Stop-Loss-Methode nur wenige Stop-Loss ausgelöst werden. Logischerweise könnte dies wahr sein. Aber um diese Theorie zu beweisen, muss ein Test durchgeführt werden.

Für beide Tests würden ähnliche Daten aus dem obigen Test verwendet werden. Ein Backtest für beide EA mit über 100 Positionen würde auf dem 1-Minuten-Zeitrahmen durchgeführt werden. Nachfolgend sind die Ergebnisse


ERGEBNISSE des RSI STOP-LOSS EA

Ergebnisse
Qualität der Historie 100%
Balken: 20160 Ticks: 603385 Symbole: 1
Nettogewinn gesamt: 327.71 Rückgang Kontostand absolut: 288.96 Rückgang Equity absolut: 367.85
Bruttogewinn: 3 525.74 Rückgang Kontostand maximal: 483.90 (69.63%) Rückgang Equity maximal: 523.24 (71.95%)
Bruttoverlust: -3 198.03 Rückgang Kontostand relativ: 69.63% (483.90) Rückgang Equity relativ: 73.65% (369.45)
Profitfaktor: 1.10 Erwartetes Ergebnis: 1.76 Margin Stand: 317.21%
Erholungsfaktor: 0.63 Sharpe-Ratio: 0.08 Z-Score: 1.68 (90.70%)
AHPR: 1.0070 (0.70%) LR Korrelation: 0.51 OnTester Resultat: 0
GHPR: 1.0027 (0.27%) LR Standardfehler: 134.83
Gesamtzahl Positionen: 186 Sell-Positionen (gewonnen %) 94 (42.55%) Kauf-Positionen (gewonnen %) 92 (38.04%)
Anzahl Deals: 372 Gewinnpositionen (% gesamt), 75 (40.32%) Verlustpositionen (% gesamt) 111 (59.68%)
Größte Gewinnposition: 85.26 Größte Verlustposition: -264.99
Durchschnittliche Gewinnposition: 47.01 Durchschnittliche Verlustposition: -28.81
Maximum aufeinanderfolgende Gewinner ($): 5 (350.60) Maximum aufeinanderfolgende Verluste ($): 6 (-255.81)
Maximum aufeinanderfolgende Gewinne (Anzahl): 350.60 (5) Maximum aufeinanderfolgende Verluste (Anzahl): -413.34 (5)
Durchschnitt der aufeinanderfolgende Gewinner: 2 Durchschnitt der aufeinanderfolgende Verlierer: 2

Kapitalkurve RSI

Abb. 3.3 Kapitalkurve des RSI STOP-LOSS EA

ERGEBNISSE des CLASSICAL STOP-LOSS EA


Ergebnisse
Qualität der Historie 100%
Balken: 20160 Ticks: 603385 Symbole: 1
Nettogewinn gesamt: 3 672.06 Rückgang Kontostand absolut: 215.45 Rückgang Equity absolut: 217.30
Bruttogewinn: 10 635.21 Rückgang Kontostand maximal: 829.54 (19.27%) Rückgang Equity maximal: 1 159.20 (25.59%)
Bruttoverlust: -6 963.15 Rückgang Kontostand relativ: 48.76% (270.82) Rückgang Equity relativ: 51.81% (303.90)
Profitfaktor: 1.53 Erwartetes Ergebnis: 15.97 Margin Stand: 274.21%
Erholungsfaktor: 3.17 Sharpe-Ratio: 0.16 Z-Score: -0.14 (11.13%)
AHPR: 1.0120 (1.20%) LR Korrelation: 0.80 OnTester Resultat: 0
GHPR: 1.0093 (0.93%) LR Standardfehler: 545.00
Gesamtzahl Positionen: 230 Sell-Positionen (gewonnen %) 107 (44.86%) Kauf-Positionen (gewonnen %) 123 (38.21%)
Anzahl Deals: 460 Gewinnpositionen (% gesamt), 95 (41.30%) Verlustpositionen (% gesamt) 135 (58.70%)
Größte Gewinnposition: 392.11 Größte Verlustposition: -219.95
Durchschnittliche Gewinnposition: 111.95 Durchschnittliche Verlustposition: -51.58
Maximum aufeinanderfolgende Gewinner ($): 6 (1 134.53) Maximum aufeinanderfolgende Verluste ($): 9 (-211.43)
Maximum aufeinanderfolgende Gewinne (Anzahl): 1 134.53 (6) Maximum aufeinanderfolgende Verluste (Anzahl): -809.21 (4)
Durchschnitt der aufeinanderfolgende Gewinner: 2 Durchschnitt der aufeinanderfolgende Verlierer: 2


Kapitalkurve Klassik

Abb. 3.3 Kapitalkurve des CLASSIC STOP-LOSS EA


Beobachtung

Obwohl beide EA am Ende des Handelszeitraums profitabel waren, wurde beobachtet, dass der erste EA (RSI Stop-Loss EA) weniger Verluste hatte, von denen einige große Verluste waren.

Kapitalkurve der Verlustanalyse beim RSI Stop-Loss

Abb. 3.6 Kapitalkurve Verluste EA

Diese Verluste könnten sich auf die Gesamtrentabilität des EA und auch auf die richtige Geldverwaltung auswirken. Auf der anderen Seite hatte der klassische Stop-Loss EA mehr Verluste und machte am Ende der Handelsperiode auch das meiste Geld.


Fazit und Empfehlung

Geldmanagement ist in der Tat der heilige Gral des Handels. Aus dem obigen Experiment geht hervor, dass der EA, bei dem das Geldmanagement vollständig implementiert wurde, die meisten Gewinne bei mehr Verlusten erzielte. Dies ist auf die Konsistenz des Handels zurückzuführen. Die Festlegung des Stop-Loss auf den RSI ergibt jedoch nicht die gleiche Konsistenz für den ersten EA (RSI STOP-LOSS), da der Risikobetrag variiert.

Empfehlung

Die Absicherung ist eine Möglichkeit, die Verluste im ersten EA (RSI STOP-LOSS) zu reduzieren. Dies könnte zu einem konsistenteren Risikobetrag führen und den Gewinn auf lange Sicht verbessern.


Danke fürs Lesen!!!

Übersetzt aus dem Englischen von MetaQuotes Ltd.
Originalartikel: https://www.mql5.com/en/articles/9827

Beigefügte Dateien |
Die Verwendung von Kanälen und Gruppenchats der MQL5.community Die Verwendung von Kanälen und Gruppenchats der MQL5.community
Die Website MQL5.com bringt Händler aus der ganzen Welt zusammen. Die Nutzer veröffentlichen Artikel, teilen kostenlose Codes, verkaufen Produkte auf dem Markt, führen Freelance-Aufträge aus und kopieren Handelssignale. Sie können mit ihnen im Forum, in Händler-Chats und in MetaTrader-Kanälen kommunizieren.
Grafiken in der Bibliothek DoEasy (Teil 87): Grafische Kollektion - Verwaltung der Änderungen von Eigenschaften von Objekten auf allen offenen Charts Grafiken in der Bibliothek DoEasy (Teil 87): Grafische Kollektion - Verwaltung der Änderungen von Eigenschaften von Objekten auf allen offenen Charts
In diesem Artikel werde ich meine Arbeit an der Kontrolle von Standardereignissen für grafische Objekte fortsetzen und eine Funktionalität schaffen, die es den Nutzern ermöglicht, Änderungen der Eigenschaften von grafischen Objekten zu kontrollieren, die auf beliebigen im Terminal geöffneten Charts platziert sind.
Die Verwendung von AutoIt mit MQL5 Die Verwendung von AutoIt mit MQL5
Kurzbeschreibung. In diesem Artikel befassen wir uns mit dem Skripting des MetraTrader 5-Terminals durch die Integration von MQL5 mit AutoIt. Es wird gezeigt, wie man verschiedene Aufgaben durch Manipulation der Benutzeroberfläche des Terminals automatisieren kann, und es wird eine Klasse vorgestellt, die die AutoItX-Bibliothek verwendet.
Grafiken in der Bibliothek DoEasy (Teil 86): Grafische Objektkollektion - Verwaltung der Eigenschaftsänderungen Grafiken in der Bibliothek DoEasy (Teil 86): Grafische Objektkollektion - Verwaltung der Eigenschaftsänderungen
In diesem Artikel geht es um die Kontrolle der Änderung von Eigenschaften sowie um das Entfernen und Umbenennen grafischer Objekte in der Bibliothek.