Mejoramiento
<< Click to Display Table of Contents >> Mejoramiento |
Puede ajustar los parámetros de entrada de una estrategia a través de la optimización. La optimización es el proceso de probar un rango de valores a través de pruebas repetitivas iterativas para determinar los valores de entrada óptimos durante el período de prueba histórico en función de su capacidad de optimización. Para ejecutar una optimización, necesitará:
•Acceso a datos históricos.
•Costumbre NinjaScript * estrategia
•Una comprensión profunda de las capacidades de backtesting de Strategy Analyzer
Consejo : Hay varias estrategias de muestra predefinidas que se instalan con NinjaTrader que puede explorar. |
Cómo ejecutar una optimización
Ejecutando una optimizaciónPara ejecutar una optimización, seleccione el tipo de Backtest de " Optimización" en el panel de configuración de Strategy Analyzer .
Establecer el rango de pruebaPuede probar el rango de parámetros de estrategia a probar haciendo clic izquierdo en el triángulo para expandir los subparámetros de estrategias.
Nota: Si no ve el triángulo, asegúrese de que el tipo de Backtest esté configurado en " Optimización ".
Min . - El valor inicial que desea probar
En la imagen de arriba, la entrada "Rápido" tiene un valor inicial (inicial) de 10 y un valor final de 30 con un incremento de 1. Esto significa que el primer valor probado será 10, luego 11, luego 12 hasta 30. La entrada "Lento" tiene un valor inicial de 6, un valor final de 16 con un incremento de 1. En función de esta configuración, se procesarán un total de 200 (20 valores únicos para "Rápido" multiplicado por 10 valores únicos para "Lento") iteraciones de backtest para encontrar la combinación óptima de valores de entrada basada en la mejor aptitud de optimización.
Establecer la aptitud de optimizaciónLa optimización se basa en la mejor aptitud de optimización que seleccione. Si establece la propiedad "Optimizar en ..." en "Beneficio neto máximo", el optimizador buscará los valores de entrada óptimos que devuelvan el beneficio máximo posible. Hay más de 10 criterios de optimización diferentes que puede seleccionar y personalizar a través de NinjaScript. Consulte la sección "Comprender las propiedades de optimización" a continuación para obtener más información. |
Comprender las propiedades de optimización
Propiedades de optimizaciónAdemás de las propiedades específicas de optimización que se describen a continuación, las propiedades son idénticas a las que se encuentran en la ventana de propiedades del backtest. Para obtener más información, consulte la sección "Descripción de las propiedades del backtest" de la página Backtest a Strategy de la Guía de ayuda.
Las siguientes propiedades específicas de optimización están disponibles:
|
Comprender los resultados de optimización
Comprender los resultados de optimizaciónUna vez que se complete el proceso de optimización, verá aparecer la Cuadrícula de resultados de optimización en la pestaña Analizador. Los resultados se agruparán por instrumento y muestran la combinación de parámetros que logró el mayor rendimiento. La columna "Rendimiento" es dinámica y siempre será el Optimization Fitness que seleccionó para el parámetro " Optimizar " cuando ejecutó la optimización.
Los mejores resultados de optimizaciónLa pestaña Optimizer mostrará el número superior de resultados según el valor que establezca para la propiedad "Conservar los mejores # resultados" en la ventana de diálogo Optimizer. La columna Parámetros muestra los valores de entrada optimizados.
1.El valor óptimo para la entrada "Rápida" para la estrategia de demostración utilizada para esta optimización 2.El valor óptimo para la entrada "lenta" para la estrategia de demostración utilizada para esta optimización |
Ejecutando una prueba de canasta
Prueba de cestaEjecutar una optimización a través de una lista de instrumentos funciona de manera muy similar a ejecutar un backtest de canasta regular. Para obtener información general, consulte la página Cesta de prueba de varios instrumentos. Sin embargo, al ejecutar una optimización en varios instrumentos, estará disponible una opción opcional "Agregada".
|
Comprender los factores que afectan el rendimiento de la optimización.
32 bit vs 64 bitCuando ejecuta una optimización en la versión de 32 bits de NinjaTrader para consumir menos memoria, no almacenamos ningún dato comercial para cada backtest que se ejecuta. Por lo tanto, si desea hacer un análisis comercial de uno de los resultados de la prueba posterior devueltos por una optimización, NinjaTrader debe volver a ejecutar la prueba posterior para obtener los datos comerciales, esto agrega un pequeño retraso al cambiar entre pruebas. La versión de 64 bits de NinjaTrader aprovechará la memoria RAM adicional disponible para NinjaTrader y mantendrá los resultados comerciales de cada prueba retrospectiva, lo que le permitirá cambiar rápidamente entre los informes de resultados de la prueba.
Mantenga los mejores # resultados Si descubre que se está quedando sin memoria del sistema durante sus pruebas de retroceso, reduzca este número de resultados para mantener una mejora significativa en la memoria utilizada por NinjaTrader .
Ejecutando múltiples pruebas a la vezNo podrá hacer más en un período de tiempo más pequeño al separar múltiples pruebas manualmente y ejecutarlas al mismo tiempo en la misma PC. NinjaTrader utilizará de manera eficiente todos los núcleos de CPU para cualquier optimización y realizar las pruebas más rápidas posibles.
Recursos de CPUAsegúrese de tener tantos recursos del sistema disponibles para la optimización como sea posible, esto generalmente significa asegurarse de que todas las demás aplicaciones estén cerradas. Además, como el motor de optimización NinjaTrader está optimizado para aprovechar la mayor cantidad de recursos del sistema posible, es aconsejable no activar una optimización durante un tiempo en el que necesitaría usar la PC. Por ejemplo, no se recomienda iniciar una optimización mientras gestiona la salida de una operación.
Datos comerciales históricosLa propiedad IncludeTradeHistoryInBacktest se establece en falso de forma predeterminada cuando se aplica una estrategia en el Analizador de estrategias para la optimización. Esto proporciona un uso de memoria más ágil, pero a expensas de no poder acceder a objetos comerciales para intercambios históricos. Por lo tanto, los campos como SystemPerformance.AllTrades.Count que dependen de referencias a objetos Trade no tendrán tales referencias para trabajar. Si desea guardar estos objetos para referencia en su código, puede establecer IncludeTradeHistoryInBacktest en verdadero en el estado Configurar, pero esto puede resultar en un mayor uso de memoria. Para obtener más información, consulte la página Trabajar con datos comerciales históricos .
Ejecución de optimizaciones eficientesSe espera que las optimizaciones de estrategia consuman una buena cantidad de recursos de CPU, simplemente debido a la naturaleza del procesamiento iterativo de datos que realizan. Las estrategias con un número relativamente grande de parámetros para la optimización pueden multiplicar este impacto. Cuando trabaje con estrategias con una gran cantidad de parámetros, evite usar "1" como valor de incremento para el optimizador, para evitar forzar al algoritmo del optimizador a ejecutar la cantidad máxima de permutaciones. Cambiar el valor de incremento a tan solo "2" puede reducir el número de permutaciones a la mitad, y aumentar este valor puede tener un impacto progresivamente menor.
El algoritmo genético puede ofrecer una solución alternativa para aumentar los valores de incremento de parámetros. En lugar de ejecutar pruebas de fuerza bruta iterando sobre todas las permutaciones, el algoritmo genético ignora intencionalmente las combinaciones de parámetros que probablemente produzcan resultados subóptimos.
Especialmente en conjuntos de parámetros más grandes con valores de incremento más finos, los límites superiores de permutaciones potenciales / combinaciones de parámetros podrían alcanzarse para ambos enfoques de optimización: el mensaje de error "La estrategia necesita al menos un parámetro para optimizar" sería una indicación para reelaborar el # de parámetros o aumente los valores de incremento para alcanzar un recuento de permutación más significativo.
Usar un servidor virtual / en la nubeSi está utilizando un servidor virtual o en la nube como base para su configuración cuando ejecuta pruebas de optimización en el Analizador de estrategias, tenga en cuenta que dichos entornos generalmente pueden asignar los recursos disponibles bajo demanda. NinjaTrader seguirá aprovechando todos los hilos disponibles para su procesamiento, sin embargo, esos recursos disponibles se determinarán al inicio de la plataforma NinjaTrader. Entonces, si sus recursos virtuales hubieran cambiado mientras estaba en una sesión de trabajo, reinicie nuevamente para asegurarse de que el rendimiento sea óptimo. |