English Русский 中文 Deutsch 日本語 Português
Evaluando la efectividad de los sistemas comerciales mediante el análisis de sus componentes

Evaluando la efectividad de los sistemas comerciales mediante el análisis de sus componentes

MetaTrader 4Probador | 10 agosto 2016, 16:27
997 0
Alexander Fedosov
Alexander Fedosov

Introducción

Cualquier persona que comience a dedicarse al comercio en los mercados financieros entiende rápidamente que en esta esfera profesional el éxito solo es posible con un enfoque sistemático. Comerciar a la buena de dios, sin sistema, de forma emocional, normalemnte no conduce a un resultado positivo, o puede que sí, pero suele ser algo fugaz, y al final todo acaba en un mar de lágrimas. Por eso, cualquier análisis, sea de tipo gráfico, basado en indicadores o de cualquier otro tipo, es uno de los componentes clave para comerciar con éxito en los mercados financieros. Este artículo es una investigación sui generis de varios sistemas comerciales sencillos independientes, en la que se analiza su efectividad y la utilidad de su aplicación conjunta.


Definiendo los criterios para la valoración de la efectividad de un sistema comercial

Normalmente, la valoración de la efectividad de cualquier sistema comercial constituye un cierto conjunto de parámetros determinados y definidos, así como ciertos valores resultantes del propio sistema. Como parámetros establecidos pueden actuar los periodos de los indicadores, el tamaño de los stop-loss o take-profit, o bien un conjunto más complejo de coeficientes del sistema que influyen en la entrada y salida del mercado. Los valores resultantes, a su vez, son el beneficio neto, la reducción, el tanto por ciento de operaciones con éxito y el valor medio de las operaciones con éxito en la divisa del depósito.

Cualquier sistema comercial reduce con el tiempo su efectividad, puesto que la naturaleza de los mercados de divisas cambia todo el tiempo, y esto se acaba notando por los índices de resultado. Así que nos vemos obligados a cambiar los parámetros del sistema, a adaptarlos a las condiciones cambiantes. Para comenzar, en el marco de este artículo debemos definir el concepto de sistema comercial complejo.

Un sistema comercial complejo es un conjunto de bloques separados que tienen sus algoritmos y parámetros y que funcionan los unos con los otros de forma conjunta. Además, el funcionamiento de cualquiera de los bloques incluidos en este sistema se puede valorar conforme a un conjunto de criterios establecido. Veamos el esquema de valoración de la efectividad del sistema presentado en la fig.1. Se trata de un sistema complejo que consta de tres bloques A, B, C, cada uno de los cuales tiene sus propios parámetros. El funcionamiento y efectividad de este sistema se valorará según tres parámetros: 1, 2, 3. Con el tiempo, cambian las condiciones del mercado en el que comercia este sistema, y los parámetros 1-3 cambiarán hacia el lado negativo, lo que nos indicará que ya es hora de afinar de nuevo el sistema. Esto se puede hacer de la forma siguiente:

  1. Iniciamos la optimización de los nueve parámetros para adaptar el sistema a la situación real actual del mercado. Pero en este método existe una redundancia: ¿para qué optimizar todos los parámetros si es totalmente plausible detectar cuál de los bloques ha comenzado ha realizar peor su trabajo?
  2. Por consiguiente, el segundo método. Se crea un sistema común de criterios de valoración para los tres bloques del sistema К1, К2, К3, que permita evaluar y comparar la efectividad del funcionamiento de cada uno de los bloques por separado.

Ventajas de este método:

  • Se evita la redundancia. No tiene razón optimizar lo que ya funciona de maravilla.
  • Monitoreo del sistema. Se puede realizar una medición de los parámetros K1-K3 a través de ciertos intervalos temporales, aclarando al mismo tiempo cómo se comportan el sistema y sus bloques juntos y por separado, en diferentes momentos del mercado (sesiones comerciales, salida de noticias, etc).
  • Análisis de vulnerabilidad. Permite detectar cuál de los bloques tira del sistema hacia abajo, para realizar la optimización y mejora de solo este bloque, y no del sistema al completo.


Fig. 1. Sistema comercial complejo


Ejemplo de valoración de la efectividad del sistema con la ayuda del análisis de sus componentes

Para poner a prueba la efectividad de todo el sistema comercial, comprobaremos cómo funcionan los bloques del sistema por separado y de forma conjunta. El sistema para prueba constará de dos bloques:

  1. Bloque А. Basado en las señales del indicador estándar Parabolic SAR.
  2. Bloque В. Basado en las señales del indicador estándar Accelerator Oscillator(AC).

Ahora vamos a decidir el conjunto de criterios de valoración de estos bloques:

  • Criterio K1 — beneficio neto.
  • Criterio K2 — reducción máxima.
  • Criterio K3 — operaciones con beneficios (% del total).

Para que esté totalmente claro, elegiremos como parámetros de efectividad general del sistema los mismos índices:

  • Parámetro 1 — beneficio neto.
  • Parámetro 2 — reducción máxima.
  • Parámetro 3 — operaciones con beneficios (% del total).

Podemos encontrar ejemplos de señales de entrada en el mercado para estos indicadores en la documentación de la biblioteca estándar MQL5: las señales Parabolic SAR y las señales Accelerator Oscillator (primeras condiciones). Vamos a describir para cada una de ellas las condiciones de entrada y esclareceremos las condiciones en las que son efectivas en un intervalo de simulación dado.

Los parámetros al completo del asesor de prueba escrito más abajo tienen el aspecto siguiente:


Fig.2. Parámetros del asesor


//+------------------------------------------------------------------+
//|                                                                  |
//|                                                Alexander Fedosov |
//|                           https://www.mql5.com/es/users/alex2356 |
//+------------------------------------------------------------------+
#property copyright "Alexander Fedosov"
#property link      "https://www.mql5.com/es/users/alex2356"
#property version   "1.00"
#property strict

#include "trading.mqh"

input int            tm = 1;                       //Test mode 1,2 or 3
input int            SL = 40;                      //Stop-loss
input int            TP = 70;                      //Take-profit
input bool           lot_const = false;            //Lot of balance?
input double         lt=0.01;                      //Lot if Lot of balance=false 
input double         Risk=2;                       //The risk in the lot of the balance, %
input int            Slippage= 5;                  //Slippage
input int            magic = 2356;                 //Magic number
input ENUM_TIMEFRAMES tf1 = PERIOD_H1;             //Timeframe for the calculation module1
input ENUM_TIMEFRAMES tf2 = PERIOD_M5;             //Timeframe for the calculation module2
input double         Step = 0.02;                  //Step PSAR
input double         Mxm = 0.2;                    //Maximum PSAR

CTrading tr(magic,Slippage,lt,lot_const,Risk,5);
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   if(tm<1 || tm>3)
      return;
//--- Condiciones de entrada en el mercado para el módulo Parabolic SAR
   if(tm==1 && !tr.isOpened(magic))
     {
      double psar[],prc[];
      ArrayResize(psar,3);
      ArrayResize(prc,3);
      for(int i=0; i<3; i++)
        {
         psar[i]=iSAR(_Symbol,tf1,Step,Mxm,i);
         prc[i]=iClose(_Symbol,tf1,i);
        }

      if(psar[2]>prc[2] && psar[1]<prc[1] && psar[0]<prc[0])
         tr.OpnOrd(OP_BUY,lt,TP,SL);
      if(psar[2]<prc[2] && psar[1]>prc[1] && psar[0]>prc[0])
         tr.OpnOrd(OP_SELL,lt,TP,SL);

     }
//--- Condiciones de entrada en el mercado para el módulo AC
   if(tm==2 && !tr.isOpened(magic))
     {
      double ac[];
      ArrayResize(ac,3);
      for(int i=0; i<3; i++)
         ac[i]=iAC(Symbol(),tf2,i);

      if(ac[2]>0 && ac[1]>0 && ac[1]>ac[2])
         tr.OpnOrd(OP_BUY,lt,TP,SL);
      if(ac[2]<0 && ac[1]<0 && ac[1]<ac[2])
         tr.OpnOrd(OP_SELL,lt,TP,SL);

     }
//--- Condiciones de entrada en el mercado cuando los dos módulos operan juntos
   if(tm==3 && !tr.isOpened(magic))
     {
      double psar[],prc[],ac[];
      ArrayResize(psar,3);
      ArrayResize(prc,3);
      ArrayResize(ac,3);
      for(int i=0; i<3; i++)
        {
         psar[i]=iSAR(_Symbol,tf1,Step,Mxm,i);
         prc[i]=iClose(_Symbol,tf1,i);
         ac[i]=iAC(Symbol(),tf2,i);
        }
      if((psar[2]>prc[2] && psar[1]<prc[1] && psar[0]<prc[0]) || (ac[2]>0 && ac[1]>0 && ac[1]>ac[2]))
         tr.OpnOrd(OP_BUY,lt,TP,SL);
      if((psar[2]<prc[2] && psar[1]>prc[1] && psar[0]>prc[0]) || (ac[2]<0 && ac[1]<0 && ac[1]<ac[2]))
         tr.OpnOrd(OP_SELL,lt,TP,SL);

     }

  }
//+------------------------------------------------------------------+

El primer parámetro del asesor de prueba es tm (Test mode), y puede adoptar los valores 1, 2 o 3. Estos valores corresponden a los tres modos de funcionamiento:

  • etm = 1. Se usan solo las condiciones de entrada en el mercado con la ayuda del indicador Parabolic SAR. Modo de funcionamiento solo del bloque А.
  • tm = 2. Se usan solo las condiciones de entrada en el mercado con la ayuda del indicador Accelerator Oscillator. Modo de funcionamiento solo del bloque B.
  • tm = 3. Funcionamiento conjunto de ambos bloques. Funciona todo el sistema.

Cambiando el parámetro Test Mode, podremos descubrir los parámetros que nos interesen: para los bloques А y В son K1-K3, para todo el sistema, los parámetros 1-3. A continuación, se presentan los resultados de la simulación del bloque con Parabolic SAR (fig.3), del bloque con AC (fig.4) y de su funcionamiento conjunto (fig.5).


Fig.3. Simulación del módulo Parabolic SAR



Fig.4. Simulación del módulo AC



Fig.5. Funcionamiento conjunto de los módulos Parabolic SAR y AC

En base a los resultados de los tres modos de funcionamiento diferentes, adjuntamos un recuadro comparativo para que quede más claro:

Test Mode Beneficio neto Operaciones con beneficios,% Reducción máxima
1 27,56 37,91 32,71
2 106,98 39,19 38,94
3 167,16 40,64 18,62

 

Modelado de la situación de empeoramiento del funcionamiento del sistema

Y ahora vamos a cambiar los parámetros del bloque А (Test Mode = 1) hacia el lado de la reducción de la efeciencia. Esto servirá para responder a la pregunta sobre qué sucederá al sistema en el caso de que uno de sus bloques cambie a peor.

Para modelar la reducción de la efectividad del sistema, cambiaremos un parámetro relacionado con el funcionamiento del bloque А, se trata de Timeframe for the calculation module1 , lo haremos de la forma mostrada en la fig.6. Esto cambiará su periodo de cálculo, basado en Parabolic SAR, lo que influirá en los lugares de entrada en el mercado, y por consiguiente, cambiará la efectividad del funcionamiento de todo el sistema.


Fig.6. Modelado de la reducción de la efectividad del sistema



Fig.7. Resultado del cambio del parámetro del módulo basado en Parabolic SAR

Para que quede más claro, compararemos los índices que hemos observado en el funcionamiento del bloque А con dos valores distintos de su parámetro Timeframe for the calculation module1:

Timeframe for the calculation module1 Beneficio neto Operaciones con beneficios,% Reducción máxima
1 Hour 27.56 37.91 32.71
4 Hours 2.54 36.73 43.21

 

Resulta obvio que el cálculo según el periodo de 4 horas ha empeorado los resultados del funcionamiento del módulo, además, de los tres criterios de valoración. La simulación de todo el sistema con valores premeditadamente peores de uno de sus componentes también ha reducido los parámetros 1-3 de la efectividad del sistema, como se muestra en la fig.8.


Fig.8. Funcionamiento conjunto de los módulos Parabolic SAR (empeorado) y AC

Ahora vamos a reunir todos los resultados para aclarar cómo han influido los cambios en el funcionamiento del bloque A en la efectividad general del sistema.

Timeframe for the calculation module1 Beneficio neto (módulo 1) Operaciones con beneficios,%
(módulo 1)
Reducción máxima,%
(módulo 1)
Beneficio neto
(sistema)
Operaciones con beneficios,%
(sistema)
Reducción máxima,%
(sistema)
4 Hours 2.54 36.73 43.21 139.34 40.00 24.9
1 Hour 27.56 37.91 32.71 167.16 40.64 18.62

Estos resultados han demostrado que la investigación de los bloques del sistema complejo por separado para mejorar la efectividad es muy actual e influye de forma positiva en los parámetros de valoración de todo el sistema. Además, se han confirmado las tesis del inicio del artículo: este método está menos saturado que la optimización de todo el sistema como un objeto íntegro. Asimismo, este método da posibilidades adicionales de observar el sistema.


Conclusión

En este artículo se ha analizado el método de valoración de la efectividad de los sistemas comerciales mediante el análisis de sus componentes. Basándonos en la simulación y la investigación del sistema complejo de bloques y sus módulos, podemos sacar las siguientes conclusiones:

  • Este método de valoración es menos redundante que la optimización de todos los parámetros de los sistemas, dado que se detectan solo aquellos componentes que necesitan optimizaciones y mejoras.
  • La creación de sistemas comerciales en forma de componentes con el uso de bloques que puedan ser valorados según unos criterios determinados, permite controlarlos de forma más efectiva, detectar sus puntos débiles y modernizarlos de manera más flexible.
Para que la simulación sea correcta, es necesario crear una carpeta aparte, por ejemplo, MQL4\Experts\article1924, y colocar ambos archivos en ella.

Traducción del ruso hecha por MetaQuotes Ltd.
Artículo original: https://www.mql5.com/ru/articles/1924

Archivos adjuntos |
trading.mqh (30.03 KB)
Lógica difusa para crear estrategias de trading manual Lógica difusa para crear estrategias de trading manual
Este artículo sugiere las maneras de mejorar la estrategia de trading manual mediante la aplicación de teoría de conjuntos difusa. Como ejemplo hemos incluido una descripción paso a paso en la búsqueda de la estrategia y la selección de sus parámetros, seguido de la aplicación de lógica difusa para desenfocar criterios demasiado formales para entrar en el mercado. Así, después de la modificación de la estrategia obtenemos condiciones flexibles para la apertura de una posición que tiene una reacción razonable a una situación de mercado.
Cómo crear un indicador de gráficos no estándar para MetaTrader Market Cómo crear un indicador de gráficos no estándar para MetaTrader Market
Con la ayuda de gráficos offline, de la programación en el lenguaje MQL4 y un poco de empeño usted podrá conseguir gráficos de cualquier tipo: "Punto-figura", "Renko", "Kagi", "Range bars", equivolumen, etc. En este artículo le mostraremos cómo hacer esto sin usar DLL, de forma que pueda publicar y adquirir estos indicadores "dos en uno" en el Mercado.
Protección contra activaciones erróneas del robot comercial Protección contra activaciones erróneas del robot comercial
La rentabilidad de los sistemas comerciales se determina no solo por la lógica y la precisión del análisis de la dinámica de los instrumentos financieros, sino también por la calidad del algoritmo de ejecución de esta lógica. Una expresión característica de ejecución defectuosa de la lógica principal del robot comercial son las activaciones erróneas. En el artículo se analizan variantes para resolver este problema.
LifeHack para tráders: un back test está bien, pero cuatro están mucho mejor LifeHack para tráders: un back test está bien, pero cuatro están mucho mejor
A cualquier tráder le surge la misma pregunta antes de la primera simulación: "¿cuál de los cuatro modos debo utilizar?" Cada uno de los modos propuestos tiene sus ventajas y peculiaridades, por eso haremos la tarea más simple, ¡iniciaremos todos los modos a la vez con solo un botón! En el artículo se muestra cómo con la ayuda de Win API y un poco de magia se pueden ver los cuatro gráficos de simulación.