English Русский 中文 Deutsch 日本語 Português 한국어 Français Italiano Türkçe
preview
Stoploss de PriceAction Fijo o RSI fijo (Smart StopLoss)

Stoploss de PriceAction Fijo o RSI fijo (Smart StopLoss)

MetaTrader 5Ejemplos | 10 diciembre 2021, 09:45
1 575 1
vwegba
vwegba

Introducción

La búsqueda de un grial en el trading me ha llevado a realizar esta investigación. El stop-loss es la herramienta comercial más importante cuando hablamos de gestión de dinero. La gestión de dinero es una de las diferentes formas en las que el tráder puede ganar dinero en el mercado y demostrar su consistencia a largo plazo. Como se mencionó anteriormente, la gestión de dinero está fuertemente vinculada con la relación stop-loss y riesgo-recompensa. La relación 1:1.5R (Riesgo:Recompensa) tiende a poseer una factor de beneficio más alta en comparación con el otro factor de beneficio de Riesgo:Recompensa, pero la relación 1:>1.9R (Riesgo: Recompensa) la mayoría de las veces tiende a ser más rentable y mantiene a los tráders con beneficio constante durante un largo periodo temporal (Santo Grial). Esta estrategia comercial del “Santo Grial” tiene un lado negativo. En una situación ideal, comerciar con 1:>1.9R (Riesgo:Recompensa) sería rentable si, de 10 transacciones (de 1 pip cada una), se perdieran 6 transacciones (6 pips) y se ganaran 4 (8 pips). Esto significaría que tenemos un beneficio de 2 pips. Aplicado a la vida real, puede que no sea del todo cierto. Un factor importante que contribuye a esto es un término conocido como “Stop-loss Hunt” o “Caza de Stop-loss”. En la caza de stop-loss, una transacción alcanza su stop-loss para obtener liquidez y luego se mueve en la dirección que hemos predicho. La caza de stop-loss es un problema importante en el trading y la gestión de dinero. También tiene un efecto psicológico en los tráders (en su mayoría, en los tráders nuevos). 

Caza de stop-loss

Fig 1.1 Caza de Stop-loss

La caza de stop-loss se vincula principalmente con stop-loss fijos o dinámicos en la acción del precio o en el gráfico de velas. Si no hay stop-loss en el gráfico de acción del precio, no se dará la caza de stop-loss. Pero un stop-loss cero equivale a la probabilidad de arruinar nuestra cuenta comercial (que es igual a uno (1))


Stop Loss de RSI

El oscilador RSI es una réplica del gráfico de líneas de acción del precio dibujado en una ventana de límite de 100 a 0

thRsi


Fig 1.2  RSI y Gráfico de Líneas

Si el indicador RSI y el gráfico de líneas resultan muy semejantes, entonces el uso del indicador RSI como stop-loss inteligente podría reducir el riesgo de caza de stop-loss.

Meta:

Mi meta aquí es comprobar si el uso de stop-loss de RSI podría reducir la caza de stop-loss y, sobre todo, si sería rentable a largo plazo.

Objetivo:

Se compararán dos estrategias iguales, una con un stop-loss establecido en el gráfico de acción del precio y otra con un stop-loss establecido en el indicador RSI




Estrategia y Código

Stop Loss clásico en el gráfico de acción del precio

Para el primer EA con stop-loss fijo en la acción del precio. A continuación, se muestran los requisitos de la estrategia.

Parámetros

Descripción

Indicador utilizado

MACD (12,26,9)

Indicador utilizado

Moving Average (200)

Indicador utilizado

Moving Average (50)

Indicador utilizado

ATR (5)

Marco Temporal

1 min

Entrada para Buy

Si la Media Móvil (50) está por encima de la Media Móvil (200) y la línea de MACD es mayor que la línea de señal cuando ambas líneas (MACD y la línea de señal) están por debajo de cero

Entrada para Sell

Si la Media Móvil (50) está por debajo de la Media Móvil (200) y la línea de MACD es menor que la línea de señal cuando ambas líneas (MACD y la línea de señal) están por debajo de cero

Salida

Take Profit y Stop Loss (1:2R).

La condición del stop-loss para la compra es la más baja de las veinte (20) velas después de la Entrada, menos el valor ATR (5)

Y la condición del stop-loss para la venta es la más alta de las veinte (20) velas después de la Entrada, más el valor ATR (5)

 


A continuación, mostramos la representación gráfica.

Stop-loss clásico de Entrada de Buy


Fig 2.1 Entrada de Buy

Stop-loss clásico de Entrada de Sell


Fig 2.2 Entrada de Sell

Código

La primera parte del código es principalmente para la declaración de variables y los datos de entrada. Aquí se han declarado todas las variables para los manejadores de los indicadores.

#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

Otras variables declaradas

double pipValue  = 0.0;// 

double Balance; // For the Current Balance

La variable donde se ha asignado a cada manejador en la función init()

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);
  }


Más abajo, mostramos un código que indica cómo funciona la estrategia

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);   
   }
   
}

Entrada (Buy y Sell)

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

}

A partir de los códigos anteriores, llamamos a dos métodos que son stoplossforSell(int num) y stoplossforBuy (int num). Estos dos métodos son específicos para identificar la vela más alta y la más baja del número asignado, respectivamente, después de activarse la entrada comercial. Por ejemplo, stoplossforSell(20) retorna la vela más alta entre las 20 velas anteriores a la entrada.

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;
           
 
 }

Este asesor introduce las transacciones una a una, comprobando si hay una transacción abierta o no. Si no las hay, se llama al método de estrategia.

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 de RSI en el indicador RSI


Para el segundo asesor con stop-loss fijo en el indicador RSI. A continuación, se muestran los requisitos de la estrategia.

Parámetros

Descripción

Indicador utilizado

MACD (12,26,9)

Indicador utilizado

Moving Average (200)

Indicador utilizado

Moving Average (50)

Indicador utilizado

ATR (5)

Marco Temporal

1 min

Entrada para Buy

Si la Media Móvil (50) está por encima de la Media Móvil (200) y la línea de MACD es mayor que la línea de señal cuando ambas líneas (MACD y la línea de señal) están por debajo de cero

Entrada para Sell

Si la Media Móvil (50) está por debajo de la Media Móvil (200) y la línea de MACD es menor que la línea de señal cuando ambas líneas (MACD y la línea de señal) están por debajo de cero

Salida

Take profit.

La condición de stop-loss para la compra es la más baja de veinte (10) valores RSI después de la entrada

Y la condición de stop-loss para la venta es la más alta de veinte (10) valores RSI después de la entrada

 

Si el RSI cruza el RSI más alto o más bajo, la transacción se cierra.

 


La línea se dibuja en el stop-loss de RSI para que la visualización resulte más fácil

Stop-loss de Entrada de Buy (stoploss de RSI)


Fig 2.3 Transacción Buy con stop-loss en RSI

La transacción se cierra cuando el valor actual de RSI es menor que la línea de Stop Loss en la ventana de RSI.

Stop-loss de Entrada de Sell (stoploss de RSI)


Fig 2.4 Transacción Sell con stop-loss en RSI

La transacción se cierra cuando el valor actual de RSI es mayor que la línea de Stop Loss en la ventana de RSI.

Código

La primera parte del código está principalmente dedicada a la declaración de variables y los datos de entrada. Es similar al primer indicador con algunas adiciones que se muestran más abajo

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

De forma similar, el método onint() también es semejante, con algunas adiciones que se muestran a continuación

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


El código de la estrategia es el mismo que el anterior. Pero la entrada tanto para la compra como para la venta no tiene stop-loss porque usaremos el nivel de RSI como stop-loss. A continuación, mostramos el código de las entradas.

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));
}


La parte final del código, que se diferencia del asesor anterior, abarca los métodos que obtienen el valor más bajo y más alto de RSI. Esta parte se llama desde el método de Entradas anterior, y usa los datos para dibujar una línea en el punto de RSI más bajo o más alto.

Nota: la línea dibujada se elimina en el método de estrategia cuando no hay una posición abierta

 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;
}

####

Ahora que los asesores están configurados y listos, podemos comenzar a probar ambos asesores para obtener el resultado necesario.


Prueba y resultado

Prueba de caza de Stop-Loss

En este apartado, mostraremos la prueba y el resultado obtenido de la simulación. La primera prueba que debemos realizar consiste en determinar si el RSI STOP-LOSS EA puede REDUCIR el problema de la caza de stop-loss durante el trading. Lo compararemos con el CLASSICAL STOP-LOSS EA.

Las pruebas se realizarán en el marco temporal de 1 minuto.

DATOS DE ENTRADA DE RSI STOP-LOSS EA

Experto: MACD_Smart_Stoploss
Símbolo: Volatility 10 Index
Periodo: M1 (2021.07.01 - 2021.07.15)
Inputs: afi=0
risk=0.05
atrValue=20
rsi=14
ai=0
movAvgTrend=200
movAvgDirection=50
i=0
fast=12
slow=26
signal=9
Bróker: Deriv Limited
Divisa: USD
Depósito Inicial: 500.00
Apalancamiento: 1:500



DATOS DE ENTRADA DE CLASSIC STOP-LOSS EA

Experto: MACD_Cross_Stoploss
Símbolo: Volatility 10 Index
Periodo: M1 (2021.07.01 - 2021.07.15)
Inputs: 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
Bróker: Deriv Limited
Divisa: USD
Depósito Inicial: 500.00
Apalancamiento: 1:50


RESULTADOS

A continuación, mostraremos una representación gráfica de las transacciones realizadas por ambos asesores. Hemos tomado un total de 3 muestras comerciales de cada uno.

Stoploss 1 de RSI


Fig 3.1 Muestra 1 de RSI STOP-LOSS EA

Price Action Stoploss


Fig 3.1a Muestra 1 de CLASSIC STOP-LOSS EA

Rsi stoploss 2

Fig 3.2 Muestra 2 de RSI STOP-LOSS EA

Price Action Stoploss

Fig 3.2a Muestra 2 de CLASSIC STOP-LOSS EA

Rsi Stoploss 3
Fig 3.3 Muestra 3 de RSI STOP-LOSS EA

Price Action Stoploss

Fig 3.3a Muestra 3 de CLASSIC STOP-LOSS EA


Por la comparación anterior, podemos ver que el RSI STOP-LOSS EA ha hecho un gran trabajo para evitar ser cazado por el mercado en comparación con el clásico Stop-Loss que se establece en el gráfico de acción del precio.


Prueba de rentabilidad

Ahora ha llegado el momento de hacernos la gran pregunta: "¿es esto rentable?". Como el RSI STOP-LOSS EA ha hecho un gran trabajo al evitar la caza de stop-loss, debería resultar rentable y también tener un factor de beneficio más alto, porque se activarían pocos stop-loss en comparación con el método clásico de stop-loss. Lógicamente, esto podría ser cierto. Pero para comprobar esta teoría, deberíamos realizar una prueba.

Para ambas pruebas se utilizarían datos similares a los de la prueba anterior, En ambos asesores realizaríamos un backtest de más de 100 transacciones en el marco temporal de 1 minuto. A continuación, mostramos los resultados


RESULTADOS DE RSI STOP-LOSS EA

Resultados
Calidad de la Historia: 100%
Barras: 20160 Ticks: 603385 Símbolos: 1
Beneficio Neto Total: 327.71 Reducción Absoluta del Balance: 288.96 Reducción Absoluta de la Equidad: 367.85
Beneficio Bruto: 3 525.74 Reducción Máxima del Balance: 483.90 (69.63%) Reducción Máxima de la Equidad: 523.24 (71.95%)
Pérdidas Brutas: -3 198.03 Reducción Relativa del Balance: 69.63% (483.90) Reducción Relativa de la Equidad: 73.65% (369.45)
Factor de Beneficio: 1.10 Beneficio Esperado: 1.76 Nivel de Margen: 317.21%
Factor de Recuperación: 0.63 Ratio de Sharpe: 0.08 Puntuación Z: 1.68 (90.70%)
AHPR: 1.0070 (0.70%) Correlación LR: 0.51 Resultado OnTester: 0
GHPR: 1.0027 (0.27%) Error Estándar LR: 134.83
Transacciones Totales: 186 Transacciones cortas (% ganadoras): 94 (42.55%) Transacciones largas (% ganadoras): 92 (38.04%)
Transacciones Totales: 372 Transacciones rentables (% del total): 75 (40.32%) Transacciones no rentables (% del total): 111 (59.68%)
Transacción rentable más larga: 85.26 Transacción no rentable más larga: -264.99
Transacción rentable media: 47.01 Transacción no rentable media: -28.81
Máximo de ganancias consecutivas ($): 5 (350.60) Máximo de pérdidas consecutivas ($): 6 (-255.81)
Beneficio máximo consecutivo (cuenta): 350.60 (5) Pérdidas máximas consecutivas (cuenta): -413.34 (5)
Media de ganancias consecutivas: 2 Media de pérdidas consecutivas: 2

rsistlEcurve

Fig 3.4 Curva de equidad para RSI Stop-loss EA

RESULTADOS DE CLASSICAL STOP-LOSS EA


Resultados
Calidad de la Historia: 100%
Barras: 20160 Ticks: 603385 Símbolos: 1
Beneficio Neto Total: 3 672.06 Reducción Absoluta del Balance: 215.45 Reducción Absoluta de la Equidad: 217.30
Beneficio Bruto: 10 635.21 Reducción Máxima del Balance: 829.54 (19.27%) Reducción Máxima de la Equidad: 1 159.20 (25.59%)
Pérdidas Brutas: -6 963.15 Reducción Relativa del Balance: 48.76% (270.82) Reducción Relativa de la Equidad: 51.81% (303.90)
Factor de Beneficio: 1.53 Beneficio Esperado: 15.97 Nivel de Margen: 274.21%
Factor de Recuperación: 3.17 Ratio de Sharpe: 0.16 Puntuación Z: -0.14 (11.13%)
AHPR: 1.0120 (1.20%) Correlación LR: 0.80 Resultado OnTester: 0
GHPR: 1.0093 (0.93%) Error Estándar LR: 545.00
Transacciones Totales: 230 Transacciones cortas (% ganadoras): 107 (44.86%) Transacciones largas (% ganadoras): 123 (38.21%)
Transacciones Totales: 460 Transacciones rentables (% del total): 95 (41.30%) Transacciones no rentables (% del total): 135 (58.70%)
Transacción rentable más larga: 392.11 Transacción no rentable más larga: -219.95
Transacción rentable media: 111.95 Transacción no rentable media: -51.58
Máximo de ganancias consecutivas ($): 6 (1 134.53) Máximo de pérdidas consecutivas ($): 9 (-211.43)
Beneficio máximo consecutivo (cuenta): 1 134.53 (6) Pérdidas máximas consecutivas (cuenta): -809.21 (4)
Media de ganancias consecutivas: 2 Media de pérdidas consecutivas: 2


classicalcure

Fig 3.5 Curva de equidad para Classical Stop loss EA


Observación

Aunque ambos asesores han resultado rentables al final del periodo comercial, hemos observado que el primer asesor (RSI Stop -Loss EA) ha tenido menos pérdidas en las que algunas resultan pérdidas enormes.

Análisis de pérdidas de la curva de equidad para stoploss RSI

Fig 3.6 Pérdidas de la curva de equidad

Estas pérdidas pueden influir en la rentabilidad general del asesor y también en la gestión adecuada del dinero. Por otro lado, el EA Stop Loss clásico tuvo más pérdidas y también ganó una mayor cantidad de dinero al final del periodo comercial.


Conclusión y recomendación

La gestión de dinero es de hecho el santo grial del trading. Partiendo del experimento anterior, el asesor en el que se ha implementado por completo la gestión de dinero ha obtenido el mayor benefico con mayor pérdidas. Esto se debe a la consistencia comercial. No obstante, definir un stop loss en el RSI no ofrece la misma consistencia para el primer asesor (RSI STOP-LOSS), ya que varía la cantidad del riesgo.

Recomendación

La cobertura es una buena forma de reducir las pérdidas en el primer asesor (RSI STOP-LOSS). Esto podría ofrecer una cantidad de riesgo más consistente y mejorar el beneficio a largo plazo.


¡Gracias por su atención!

Traducción del inglés realizada por MetaQuotes Ltd.
Artículo original: https://www.mql5.com/en/articles/9827

Archivos adjuntos |
Tolon
Tolon | 10 dic. 2021 en 10:49

Creo que puedo entender eso.

Usando AutoIt con MQL5 Usando AutoIt con MQL5
Descripción breve. En este artículo, exploraremos la creación de scripts del terminal MetraTrader 5 integrando MQL5 con AutoIt. En el presente material, abarcaremos cómo automatizar varias tareas manipulando la interfaz de usuario de los terminales, y también presentaremos una clase que utiliza la biblioteca AutoItX.
Combinatoria y teoría de la probabilidad en el trading (Parte IV): Lógica de Bernoulli Combinatoria y teoría de la probabilidad en el trading (Parte IV): Lógica de Bernoulli
En el presente artículo, hemos decidido hablar del conocido esquema de Bernoulli, y también mostrar cómo podemos utilizarlo al describir conjuntos de datos relacionados con el trading, para su posterior uso en la futura creación de un sistema comercial autoadaptable. Asimismo, buscaremos un algoritmo más general (la fórmula de Bernoulli constituye un caso especial dentro de este tipo), y encontraremos una aplicación para él.
Combinatoria y teoría de la probabilidad en el trading (Parte V): Análisis de curvas Combinatoria y teoría de la probabilidad en el trading (Parte V): Análisis de curvas
En este artículo, hemos decidido investigar un poco sobre la conversión de varios estados en estados dobles. El objetivo principal es el propio análisis y las conclusiones útiles que extraigamos, que nos pueden ayudar en el desarrollo posterior de algoritmos comerciales escalables basados ​​en la teoría de la probabilidad. Obviamente, no hemos podido evitar el uso de matemáticas, pero, teniendo en cuenta la experiencia de artículos anteriores, hemos observado que la información general resulta mucho más útil que los detalles en sí.
Gráficos en la biblioteca DoEasy (Parte 87): Colección de objetos gráficos - control de la modificación de propiedades en todos los gráficos abiertos Gráficos en la biblioteca DoEasy (Parte 87): Colección de objetos gráficos - control de la modificación de propiedades en todos los gráficos abiertos
En este artículo, continuaremos trabajando en el monitoreo de los eventos de los objetos gráficos estándar y crearemos una funcionalidad que nos permitirá controlar los cambios en las propiedades de los objetos gráficos colocados en cualquier gráfico abierto en el terminal.