Saltar a contenido

Optimizar un cBot en cTrader

Este artículo explica cómo optimizar robots de operaciones en cTrader Windows y Mac.

Puede ser difícil especificar un conjunto óptimo de parámetros iniciales para un cBot. Afortunadamente, cTrader ofrece una función integrada de optimización de cBot. La optimización toma su código y lo ejecuta varias veces, basando cada pasada en diversos valores de parámetros. Luego le presenta un conjunto de resultados personalizables que puede utilizar para definir la configuración óptima de parámetros.

Para utilizar esta función, seleccione una instancia de cBot y cambie a la pestaña Optimización.

Image title

Después, defina el período de backtesting para la optimización utilizando los calendarios desplegables o arrastrando el control deslizante.

Image title

Configuración de optimización

Como la optimización es esencialmente una serie de backtests, puede especificar la configuración de backtesting de manera similar a como se hace en la pestaña Backtesting.

Parámetros de optimización

Haga clic en el botón Parámetros a la izquierda del control deslizante del calendario. Debería ver la siguiente ventana.

Image title

En ella, marque las casillas junto a los parámetros del cBot que desea optimizar. El parámetro Timeframe está disponible para todos los cBots.

Criterios de optimización

Pulse el botón Criterios situado a la derecha del botón Parámetros de optimización. cTrader abrirá la siguiente pestaña.

Image title

Los criterios de optimización definen cómo el algoritmo de optimización clasifica su resultado después del backtesting. Puede elegir entre las siguientes opciones:

  • Estándar - una serie de criterios predefinidos que puede intentar minimizar o maximizar. Para ello, elija un criterio del menú desplegable de la derecha y seleccione la dirección de optimización en el menú relacionado de la izquierda. Para añadir un nuevo criterio, haga clic en Añadir criterio.
  • Personalizado - un criterio personalizado definido dentro del código de su cBot utilizando el método GetFitness() como se muestra en los ejemplos siguientes.
1
2
3
4
5
protected override double GetFitness(GetFitnessArgs args)
{
    // Maximise the winning trades/losing trades ratio.
    return args.WinningTrades / args.LosingTrades;
}
1
2
3
4
5
6
protected override double GetFitness(GetFitnessArgs args)
{
    /* Maximise the winning trades/losing trades ratio
    while giving winning trades more weight. */
    return Math.Pow(args.WinningTrades, 2) / args.LosingTrades;
}

Cálculos multicriterio

Si se utilizan varios criterios para calcular la eficacia de los parámetros, cTrader utilizará todos ellos por igual para calcular el valor de aptitud de un pase de optimización.

Concretamente, la plataforma multiplica los valores de todos los criterios maximizadores y multiplica por separado los valores de todos los criterios minimizadores. Posteriormente, divide el valor de multiplicación absoluto de los criterios maximizadores por el mismo valor de los criterios minimizadores.

El siguiente pseudocódigo muestra exactamente cómo se calculan los valores de aptitud multicriterio.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
numerator = 1.0
if (valuesToMaximize.Length > 0)
    numerator = Abs(Multiply(criteriaValuesToMaximize))

denominator = 1.0
if (valuesToMinimize.Length > 0)
    denominator += Abs(Multiply(criteriaValuesToMinimize))

/* The 'sign' variable can be either +` or -1 depending on whether
there are criteria for which their values are less than 0. */
sign = criteriaValuesToMinimize.Concat(criteriaValuesToMaximize).Any(v => v < 0) ? -1 : 1

fitness =  sign * numerator / denominator

Método

Haga clic en el botón Método (representado como GA o # dependiendo de la opción elegida). En el menú siguiente, elija qué método de optimización utiliza la plataforma.

Image title

Están disponibles las siguientes opciones:

  • Algoritmo genético - el algoritmo emula el proceso de evolución biológica. Por favor, consulte una sección aparte para obtener una descripción detallada.
  • Cuadrícula (#) - el algoritmo realiza secuencialmente un backtest de cada conjunto posible de parámetros.

Nota

Según nuestras estimaciones, el algoritmo genético es significativamente más rápido para encontrar valores óptimos de los parámetros.

Recursos

Haga clic en el botón Recursos para seleccionar qué porcentaje de la carga de su CPU se asigna al backtesting. Mueva el control deslizante para establecer el porcentaje de uso de la CPU.

Cuantos más recursos asigne, más rápido se completará el proceso de optimización. Sin embargo, es posible que observe una caída en el rendimiento al utilizar otras aplicaciones.

Image title

Tenga en cuenta que los recursos de la CPU también se pueden ajustar durante la propia optimización.

Iniciar y gestionar el procedimiento de optimización

Para proceder con la optimización, haga clic en el botón Reproducir a la derecha del control deslizante del calendario. Dependiendo de los recursos de su máquina, la configuración de optimización y la complejidad del cBot, la optimización puede llevar algún tiempo.

La barra de la interfaz de usuario inmediatamente debajo del control deslizante del calendario proporcionará información sobre el número de pases de backtesting completados, el tiempo transcurrido y la estimación del tiempo restante.

Image title

La pantalla central en la pestaña Optimización, mientras tanto, proporcionará una cuadrícula en tiempo real que contiene información sobre todos los pases de backtesting que el algoritmo ha completado.

Image title

Para aplicar un conjunto de parámetros probados durante un determinado pase, haga clic en el botón Aplicar. Solo se activa si no hay procedimientos de optimización en ejecución actualmente.

Alternativamente, marque la casilla Autoseleccionar el mejor pase en la esquina superior izquierda para que cTrader seleccione automáticamente el pase (y los parámetros) que ha logrado el mejor resultado posible según los criterios de optimización especificados.

Resultados de la optimización

Una vez completada la optimización, la tabla central mostrará la lista final de todos los pases de backtesting y sus resultados.

Esta tabla tiene las siguientes columnas. Como la cuadrícula es totalmente configurable, estas columnas se pueden arrastrar y soltar o desactivar completamente haciendo clic con el botón derecho en la tabla y deseleccionándolas del menú contextual.

Campo Definición
Pase El número de pase.
Aptitud El valor que muestra lo bien que se ajusta el pase a los criterios de optimización.
Capital Capital total al final del pase.
Saldo Saldo total al final del pase.
Beneficio neto La diferencia entre el saldo final y el saldo inicial.
Operaciones El número total de posiciones cerradas.
Operaciones con beneficio El número total de operaciones ganadoras logradas durante el pase.
Operaciones con pérdidas El número total de operaciones perdedoras logradas durante el pase.
Factor de beneficio La relación beneficio total/pérdida total.
*Disminución máxima del capital (%) El porcentaje máximo de disminución del capital.
Disminución máxima del saldo (%) El porcentaje máximo de disminución del saldo.
Disminución máxima del capital La disminución máxima del capital especificada en la divisa de depósito de la cuenta.
Disminución máxima del saldo La disminución máxima del saldo especificada en la divisa de depósito de la cuenta.
Operación media El beneficio medio de todas las operaciones realizadas durante el pase.
Parámetros de pase Haga clic en el botón Aplicar en esta columna para aplicar los parámetros de este pase a su cBot.

Seleccione un pase para ver estadísticas detalladas sobre él en la pantalla debajo de la cuadrícula central.

Las primeras siete pestañas de esta pantalla proporcionan la misma información que las mismas pestañas en la ventana Backtesting. La pestaña Parámetros de pase es exclusiva de la optimización.

Parámetros de pase

La pestaña Parámetros de pase proporciona la siguiente información.

Image title

cTrader resaltará en verde todos los parámetros optimizados, mientras que los parámetros fijos (no habilitados en el menú Parámetros) permanecerán sin resaltar.

Guardar y cargar resultados de optimización

cTrader también permite guardar y cargar resultados de optimización desde y hacia un archivo .optres almacenado localmente.

Nota

Un archivo .optres es simplemente una colección de pares clave-valor con claves que representan varias configuraciones y métricas de optimización.

Consejo

Puede utilizar archivos .optres para continuar refinando sus cBots en múltiples máquinas locales sin perder ningún progreso. También puede alimentar datos de este archivo a herramientas de IA generativa para intentar detectar patrones en los pases que su cBot ha completado.

Para guardar los resultados de optimización, espere hasta que el proceso haya concluido y haga clic en el icono Guardar. En el cuadro de diálogo del explorador de archivos, escriba el nombre del archivo y guárdelo.

Para cargar resultados de optimización, haga clic en el icono Cargar y seleccione el archivo requerido en la ventana del explorador de archivos.

Image title