Discusión sobre el artículo "Desarrollamos un asesor experto multidivisas (Parte 28): Añadimos un gestor de cierre de posiciones"

 

Artículo publicado Desarrollamos un asesor experto multidivisas (Parte 28): Añadimos un gestor de cierre de posiciones:

Cuando se ejecutan varias estrategias en paralelo, resulta recomendable cerrar periódicamente todas las posiciones abiertas y volver a empezar las estrategias. El código existente solo permite implementar este comportamiento con manipulaciones manuales. Vamos a intentar automatizar esta parte.

En la Parte 12, ya añadimos un módulo de gestión de riesgos al asesor multidivisa para limitar las pérdidas diarias y totales. Este no aumenta las ganancias, pero resulta fundamental para proteger el capital en condiciones adversas. Está basado en las reglas de prop-trading, con ajustes flexibles: reducción de capital en la divisa, como porcentaje del saldo o desde el inicio del día.

El módulo está implementado como una clase CVirtualRiskManager con métodos para realizar un seguimiento del saldo, las ganancias y la verificación de las restricciones. También se incluye una función de fijación de ganancias: una vez alcanzado el objetivo, todas las posiciones se cierran y la negociación se detiene.

Para las cuentas regulares, querríamos que la negociación se reiniciara automáticamente después de obtener ganancias. Actualmente esto requiere de intervención manual. Ha llegado el momento de automatizar también este momento.

Para reiniciar las estrategias comerciales una vez alcanzadas las ganancias objetivo, se consideraron dos opciones:

  1. ampliar el gestor de riesgos actual,

  2. crear un módulo aparte.

Nos hemos decantado por la segunda opción porque el gestor de riesgos actual opera independientemente de las estrategias: solo cierra posiciones reales sin afectar a las virtuales. Modificar esta lógica complicaría la arquitectura y violaría la independencia modular.

El gestor de riesgos también genera una carga de pruebas adicional, por lo que lo mejor es trasladar la nueva funcionalidad a un módulo independiente; este se puede usar incluso sin que el gestor de riesgos esté en funcionamiento.

El nuevo objetivo es un módulo que puede reiniciar todas las estrategias cuando se cumplen las condiciones especificadas (ganancias, pérdidas, tiempo, etc.), sin depender de la historia y sin intervención manual. Llamaremos al nuevo módulo gestor de cierre, ya que es un módulo independiente cuya presencia no es obligatoria, pero su incorporación puede mejorar los resultados, y gestiona el proceso de cierre completo de todas las posiciones, tanto reales como virtuales.


Autor: Yuriy Bykov