Docs - Algo Trading
La herramienta de Algo Trading es una plataforma avanzada que permite a los usuarios escribir, probar y simular algoritmos de trading personalizados utilizando JavaScript. Proporciona un entorno flexible y basado en eventos donde los usuarios pueden implementar estrategias de trading complejas y realizar backtests contra datos históricos del mercado.
Campos:
- Símbolos - Un array de símbolos de activos que el algoritmo operará. Estos pueden incluir cualquiera de los tipos de símbolos descritos en la sección Símbolos.
- Saldo - El saldo inicial en efectivo disponible para operar, denominado en la moneda base. Esto representa el capital inicial para el algoritmo de trading.
- Fecha - Una tupla de fechas de inicio y fin que define el período histórico sobre el cual se simulará el algoritmo.
- Apalancamiento - Cuando se establece como verdadero, permite el trading apalancado, permitiendo al algoritmo tomar posiciones mayores que el saldo en efectivo disponible. Esto debe usarse con precaución ya que aumenta tanto los rendimientos potenciales como los riesgos.
- Margen Inicial - El requisito de margen inicial, representado como un decimal entre 0 y 1. Esto solo es aplicable cuando el Apalancamiento está habilitado. Define la proporción del valor de la posición que debe estar cubierta por el efectivo disponible.
- Margen Mínimo - El requisito de margen mínimo, también representado como un decimal entre 0 y 1. Este es el umbral por debajo del cual se activaría una llamada de margen. Solo es aplicable cuando el Apalancamiento está habilitado.
- Código - El código JavaScript que define el algoritmo de trading. Aquí es donde los usuarios implementan su lógica de trading, utilizando el entorno AlgoWorkspace proporcionado.
Código (AlgoWorkspace):
El AlgoWorkspace proporciona un entorno basado en eventos para la ejecución del algoritmo. Ofrece un conjunto de eventos, propiedades y métodos que permiten a los usuarios interactuar con el entorno de simulación e implementar su lógica de trading.
Eventos disponibles:
this.on('start', async (next, timeseries) => { ... })- Se activa al inicio de la simulación. El parámetro timeseries proporciona acceso al conjunto completo de datos históricos para todos los activos.this.on('data', async (next) => { ... })- Se activa para cada punto de datos (típicamente cada día de trading) en la simulación. Aquí es donde se implementa típicamente la lógica principal de trading.this.on('end', async (next, result) => { ... })- Se activa al final de la simulación. El parámetro result proporciona acceso a los resultados finales de la simulación.this.on('error', async (next, errors) => { ... })- Se activa cuando ocurre un error durante la simulación. El parámetro errors contiene detalles sobre el(los) error(es) encontrado(s).
Propiedades y métodos:
this.date- La fecha actual en la simulación.this.assets- Un array que contiene el precio actual y otros datos relevantes para cada activo que se está operando.this.portfolio- Representa el estado actual de la cartera, incluyendo el saldo en efectivo y las posiciones de los activos.this.index- El índice de iteración actual en la simulación.this.length- El número total de iteraciones en la simulación.this.inputs- Contiene los parámetros de entrada iniciales para la simulación.this.state- Un objeto definido por el usuario para almacenar datos de estado personalizados a lo largo de la simulación.this.buy(assetCode: string, quantity: number): void- Ejecuta una orden de compra para el activo y cantidad especificados.this.sell(assetCode: string, quantity: number): void- Ejecuta una orden de venta para el activo y cantidad especificados.this.print(...msgs: string[]): void- Registra mensajes en la salida de la simulación.this.depositCash(amount: number): void- Agrega la cantidad especificada de efectivo a la cartera.this.loadScript(path: string): Promise- Carga un archivo JavaScript externo, permitiendo el uso de bibliotecas o módulos adicionales.this.download(obj: any, name?: string): void- Genera un archivo descargable que contiene los datos del objeto especificado.
Estas herramientas y métodos proporcionan un entorno integral para implementar y probar estrategias de trading complejas. Los usuarios pueden acceder a datos de mercado, gestionar una cartera, ejecutar operaciones y analizar resultados, todo dentro del AlgoWorkspace.