Logo
🇺🇸  en🇧🇷  pt-br🇪🇸  es🇫🇷  fr🇯🇵  ja🇨🇳  zh
EUR (€)
  • Cartera
  • Algo Trading
  • Documentación
  • API
  • Contraer
  • Plataforma
  • Símbolos
  • Cartera
  • Algo Trading
  • Resultados
DocumentaciónSímbolosSímbolos de Yahoo FinanceModificadores de SímbolosSímbolos de BrasilBacktest de CarteraAlgo TradingResultados del Backtest

Algo Trading

La herramienta de Algo Trading ejecuta un algoritmo de trading que escribes en JavaScript. El código recibe los datos de mercado fecha a fecha, envía órdenes de compra y venta, y obtiene los mismos resultados que la herramienta de Cartera.

Campos:

  • Símbolos - Los activos que el algoritmo puede operar. Usa cualquiera de los tipos de símbolos, hasta 10.
  • Saldo - El efectivo inicial, en la moneda seleccionada en la parte superior de la página.
  • Rango - Las fechas de inicio y fin de la simulación.
  • Apalancamiento - Cuando está activado, permite las ventas en corto, de modo que el algoritmo puede vender activos que no tiene, dentro de los límites de margen indicados abajo. Lo obtenido con una venta en corto no se añade al efectivo. Úsalo con precaución, ya que aumenta tanto la rentabilidad potencial como los riesgos.
  • Margen Inicial - Un porcentaje (50% por defecto) que limita las nuevas posiciones en corto: el valor total en corto puede llegar a (efectivo + posiciones largas) / Margen Inicial. Por ejemplo, 50% permite posiciones en corto de hasta 2 veces el efectivo más las posiciones largas.
  • Margen Mínimo - Un porcentaje (30% por defecto) del valor en corto que debe seguir disponible como margen. Si el margen cae por debajo, la simulación se detiene con un error. No hay llamada de margen automática.
  • Código - El código JavaScript del algoritmo (ver abajo).

Código (AlgoWorkspace):

El código se ejecuta como el cuerpo de una función async, con this vinculado al AlgoWorkspace. Registra los listeners de eventos y luego llama a start() al final del código para iniciar la simulación. El código debe tener exactamente un listener de data, y cada listener debe llamar a next() al terminar.

Eventos disponibles:

  • this.on('start', async (next, timeseries) => { ... }) - Se ejecuta una vez antes de la primera fecha. timeseries tiene todos los datos de precios, indexados por fecha (Record<string, AssetDataFlat[]>). this.assets y this.portfolio aún no están definidos.
  • this.on('data', async (next) => { ... }) - Se ejecuta una vez por cada fecha con datos. Las órdenes se ejecutan después de que el listener llame a next(), al precio de esa fecha.
  • this.on('end', async (next, result) => { ... }) - Se ejecuta después de la última fecha, con el resultado final. result.summary.alpha y beta son Promises.
  • this.on('error', async (next, errors) => { ... }) - Se ejecuta cuando se cancelan órdenes de una fecha, p. ej. por falta de efectivo o margen. errors es un string[]. Una excepción en tu código detiene la simulación y aparece en la pestaña Advertencias.

Propiedades y métodos:

  • this.date - La fecha actual.
  • this.assets - Los precios de la fecha actual (AssetDataFlat[]: assetCode, date, value, currency). Solo se incluyen los símbolos con datos en esa fecha.
  • this.portfolio - Una copia de la cartera actual (cash, assets, total, longValue, shortValue, totalProfit, realizedProfit, margin). Cambiarla no tiene efecto, usa los métodos de abajo.
  • this.index - El número de la fecha actual, de 1 a this.length.
  • this.length - El número de fechas con datos.
  • this.inputs - Las entradas de la simulación.
  • this.state - Un objeto para guardar tus propios datos entre eventos.
  • this.buy(assetCode: string, quantity: number): void - Envía una orden de compra. La cantidad debe ser un número finito distinto de cero.
  • this.sell(assetCode: string, quantity: number): void - Envía una orden de venta. Vender más que la posición abre una posición en corto, si el Apalancamiento está activado.
  • this.print(...msgs: any[]): void - Añade un mensaje, con la fecha actual, a la pestaña Mensajes.
  • this.depositCash(amount: number): void - Añade efectivo a la cartera.
  • this.loadScript(url: string): Promise<number> - Carga una biblioteca JavaScript externa. Los scripts cargados se eliminan después de la ejecución.
  • this.download(obj: any, name?: string): Promise<void> - Descarga obj como un archivo JSON llamado name.json (invest-tester.json por defecto).

El código por defecto de la página Algo Trading es un ejemplo completo. Carga una biblioteca, coloca órdenes aleatorias y hace depósitos mensuales.

InvestTester | Creado por Tpessia
support@investtester.com