Cálculos matemáticos

El probador del terminal MetaTrader 5 puede utilizarse no sólo para probar estrategias de trading, sino también para realizar cálculos matemáticos. Para ello, seleccione el modo adecuado en los ajustes del probador, en la lista desplegable Simulación. Esta es la misma lista en la que seleccionamos el método de generación de ticks, pero en este caso, el probador no generará ticks ni cotizaciones, ni siquiera conectará el entorno de trading (cuenta de trading y símbolos).

La elección entre la enumeración completa de parámetros y un algoritmo genético depende del tamaño del espacio de búsqueda. Para el criterio de optimización, seleccione «Máximo personalizado». Otros campos de entrada en la configuración del probador (como el rango de fechas o los retrasos) no son importantes y, por tanto, se desactivan automáticamente.

En el modo «Cálculos matemáticos», cada ejecución del agente de pruebas se realiza con una llamada a sólo tres funciones: OnInit, OnTester, OnDeinit.

Un problema matemático típico para resolver en el probador de MetaTrader 5 es encontrar un extremo para una función de muchas variables. Para resolverlo es necesario declarar los parámetros de la función en forma de variables de entrada y colocar el bloque para calcular sus valores en OnTester.

El valor de la función para un conjunto específico de variables de entrada se devuelve como valor de salida de OnTester. No utilice ninguna función integrada que no sean funciones matemáticas en los cálculos.

Hay que recordar que, al optimizar, siempre se busca el valor máximo de la función OnTester. Por lo tanto, si necesita encontrar el mínimo, debe devolver los valores inversos o los valores multiplicados por -1.

Para entender cómo funciona, tomemos como ejemplo una función relativamente sencilla de dos variables con un máximo. Vamos a describirlo en el algoritmo de Asesor Experto MathCalc.mq5.

Se suele suponer que no conocemos la representación de la función de forma analítica, ya que, de lo contrario, sería posible calcular sus extremos. Pero ahora tomemos una fórmula bien conocida para asegurarnos de que la respuesta es correcta.

input double X1;
input double X2;
   
double OnTester()
{
   const double r = 1 + sqrt(X1 * X1 + X2 * X2);
   return sin(r) / r;
}

El Asesor Experto va acompañado del archivo MathCalc.set con los parámetros para la optimización: los argumentos X1 y X2 se iteran en los rangos [-15, +15] con un paso de 0.5.

Vamos a ejecutar la optimización y ver la solución en la tabla de optimización. La mejor pasada da el resultado correcto:

  X1=0.0
  X2=0.0
OnTester result 0.8414709848078965

En el gráfico de optimización, puede activar el modo 3D y acceder visualmente a la forma de la superficie.

Resultado de la optimización (maximización) de una función en el modo de cálculo matemático.

Resultado de la optimización (maximización) de una función en el modo de cálculo matemático.

Al mismo tiempo, el uso del probador en el modo de cálculos matemáticos no se limita a la investigación puramente científica. Sobre su base, en particular, es posible organizar la optimización de los sistemas de trading utilizando métodos de optimización alternativos bien conocidos, como el método del «enjambre de partículas» o el «recocido simulado». Por supuesto, para ello, tendrá que cargar el historial de cotizaciones o ticks en archivos y conectarlos al Asesor Experto probado, así como emular la ejecución de operaciones, contabilizando posiciones y fondos. Este trabajo rutinario puede resultar atractivo por el hecho de que se puede personalizar libremente el proceso de optimización (a diferencia de la «caja negra» integrada con un algoritmo genético) y controlar los recursos (principalmente la RAM).