Docs - Algo Trading
A ferramenta de Algo Trading é uma plataforma avançada que permite aos usuários escrever, testar e simular algoritmos de negociação personalizados usando JavaScript. Ela fornece um ambiente flexível e orientado a eventos onde os usuários podem implementar estratégias de negociação complexas e fazer backtests contra dados históricos de mercado.
Campos:
- Símbolos - Um array de símbolos de ativos que o algoritmo negociará. Estes podem incluir qualquer um dos tipos de símbolos descritos na seção Símbolos.
- Saldo - O saldo inicial em dinheiro disponível para negociação, denominado na moeda base. Isso representa o capital inicial para o algoritmo de negociação.
- Data - Uma tupla de datas de início e fim definindo o período histórico sobre o qual o algoritmo será simulado.
- Alavancagem - Quando definido como verdadeiro, permite negociação alavancada, permitindo que o algoritmo assuma posições maiores que o saldo em dinheiro disponível. Isso deve ser usado com cautela, pois aumenta tanto os retornos potenciais quanto os riscos.
- Margem Inicial - O requisito de margem inicial, representado como um decimal entre 0 e 1. Isso só é aplicável quando a Alavancagem está ativada. Define a proporção do valor da posição que deve ser coberta pelo dinheiro disponível.
- Margem Mínima - O requisito de margem mínima, também representado como um decimal entre 0 e 1. Este é o limite abaixo do qual uma chamada de margem seria acionada. Só é aplicável quando a Alavancagem está ativada.
- Código - O código JavaScript que define o algoritmo de negociação. É aqui que os usuários implementam sua lógica de negociação, usando o ambiente AlgoWorkspace fornecido.
Código (AlgoWorkspace):
O AlgoWorkspace fornece um ambiente orientado a eventos para a execução do algoritmo. Ele oferece um conjunto de eventos, propriedades e métodos que permitem aos usuários interagir com o ambiente de simulação e implementar sua lógica de negociação.
Eventos disponíveis:
this.on('start', async (next, timeseries) => { ... })- Acionado no início da simulação. O parâmetro timeseries fornece acesso ao conjunto completo de dados históricos para todos os ativos.this.on('data', async (next) => { ... })- Acionado para cada ponto de dados (tipicamente cada dia de negociação) na simulação. É aqui que a lógica principal de negociação é tipicamente implementada.this.on('end', async (next, result) => { ... })- Acionado no final da simulação. O parâmetro result fornece acesso aos resultados finais da simulação.this.on('error', async (next, errors) => { ... })- Acionado quando ocorre um erro durante a simulação. O parâmetro errors contém detalhes sobre o(s) erro(s) encontrado(s).
Propriedades e métodos:
this.date- A data atual na simulação.this.assets- Um array contendo o preço atual e outros dados relevantes para cada ativo sendo negociado.this.portfolio- Representa o estado atual do portfólio, incluindo saldo em dinheiro e posições em ativos.this.index- O índice de iteração atual na simulação.this.length- O número total de iterações na simulação.this.inputs- Contém os parâmetros de entrada iniciais para a simulação.this.state- Um objeto definido pelo usuário para armazenar dados de estado personalizados ao longo da simulação.this.buy(assetCode: string, quantity: number): void- Executa uma ordem de compra para o ativo e quantidade especificados.this.sell(assetCode: string, quantity: number): void- Executa uma ordem de venda para o ativo e quantidade especificados.this.print(...msgs: string[]): void- Registra mensagens na saída da simulação.this.depositCash(amount: number): void- Adiciona a quantidade especificada de dinheiro ao portfólio.this.loadScript(path: string): Promise- Carrega um arquivo JavaScript externo, permitindo o uso de bibliotecas ou módulos adicionais.this.download(obj: any, name?: string): void- Gera um arquivo para download contendo os dados do objeto especificado.
Essas ferramentas e métodos fornecem um ambiente abrangente para implementar e testar estratégias de negociação complexas. Os usuários podem acessar dados de mercado, gerenciar um portfólio, executar negociações e analisar resultados, tudo dentro do AlgoWorkspace.