- Generar ticks en el probador
- Gestión del tiempo en el comprobador: temporizador, Sleep, GMT
- Pruebas de visualización: gráfico, objetos, indicadores
- Pruebas multidivisa
- Criterios de optimización
- Obtener estadísticas financieras de prueba: TesterStatistics
- Evento OnTester
- Sintonización automática: ParameterGetRange y ParameterSetRange
- Grupo de eventos OnTester para el control de la optimización
- Enviar marcos de datos de los agentes al terminal
- Obtener marcos de datos en terminal
- Directivas del preprocesador para el probador
- Gestionar la visibilidad de los indicadores: TesterHideIndicators
- Emulación de operaciones de depósito y retirada
- Parada forzada de la prueba: TesterStop
- Ejemplo de Gran Asesor Experto
- Cálculos matemáticos
- Depuración y creación de perfiles
- Limitaciones de las funciones del probador
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;
|
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
|
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.
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).