Funciones de aptitud personalizadas para optimización
La optimización de cBot es el proceso de determinar los mejores valores posibles de los parámetros para un cBot antes de implementarlo para operaciones en vivo. En cTrader, puede optimizar cBots según una amplia gama de criterios integrados, como maximizar los beneficios o minimizar la disminución del capital. Sin embargo, también puede escribir sus propias funciones de aptitud para la optimización, lo que puede ser útil si desea aplicar criterios de rendimiento personalizados a un cBot. En este artÃculo y su correspondiente video, discutimos cómo funcionan las funciones de aptitud personalizadas.
Tenga en cuenta que este artÃculo no cubre el proceso de optimización de cBot utilizando criterios integrados.
Definir funciones de aptitud personalizadas
Una función de aptitud personalizada es simplemente una anulación del método GetFitness().
1 2 3 4 | |
La anulación debe aceptar un solo argumento del tipo GetFitness args para que cuente como una función de aptitud personalizada.
Escribir una función de aptitud personalizada
Dado que el método GetFitness() debe devolver un double, el cuerpo del método debe contener un cálculo que resulte en un valor de este tipo.
Por ejemplo, podemos escribir una función de aptitud personalizada simple que eleve al cuadrado el número total de operaciones ganadoras realizadas por un cBot y luego divida este valor por el valor total de las operaciones perdedoras. De esta manera, asignamos más peso a las operaciones ganadoras y, en cierto sentido, permitimos que el cBot optimizado realice algunas jugadas arriesgadas.
Asà es como se verÃa nuestra función de aptitud.
1 2 3 4 | |
En este punto, podemos añadir la anulación a cualquier cBot que queramos, luego guardarlo y construirlo.
Usar una función de aptitud personalizada en la optimización
Después de añadir nuestra función, necesitamos añadir una instancia de nuestro cBot elegido y luego cambiar a la pestaña Backtesting. Para realizar la optimización utilizando nuestra función personalizada, todo lo que tenemos que hacer es abrir la sección Criterios de optimización y seleccionar la opción Personalizado. Después, podemos ejecutar la optimización como de costumbre.
Durante la optimización, se asignarán puntuaciones de aptitud más altas a los pases durante los cuales el cBot haya maximizado la relación entre el número de operaciones ganadoras al cuadrado y el número de operaciones perdedoras.
Modificar la función de aptitud personalizada
También podemos volver a nuestra función personalizada y modificarla de la siguiente manera.
1 2 3 4 5 6 7 8 9 10 11 | |
Esta función sigue el algoritmo anterior, pero solo aplica el cálculo personalizado si un cBot ha realizado más de 20 operaciones. En cualquier otro caso, la función devuelve el double más bajo posible. En teorÃa, esto deberÃa mejorar los resultados al reducir la posibilidad de sesgo estadÃstico.
Si reconstruimos el bot y ejecutamos la optimización de nuevo, deberÃamos ver varios pases obtener una puntuación de aptitud muy baja debido al bajo número total de operaciones realizadas por el cBot.
Por último, queremos minimizar la disminución del capital mientras seguimos fomentando la operación activa.
1 2 3 4 5 6 7 8 | |
Si ejecutamos la optimización de nuevo, deberÃamos ver los mejores pases posibles dada nuestra estrategia de operación.
Las funciones de aptitud personalizadas proporcionan una excelente herramienta para determinar los mejores valores de parámetros posibles adaptados a su enfoque único de operación.