Logo
🇺🇸  en🇧🇷  pt-br🇪🇸  es🇫🇷  fr🇯🇵  ja🇨🇳  zh
BRL (R$)
  • Portfólio
  • Algo Trading
  • Docs
  • API
  • Recolher
  • Plataforma
  • Símbolos
  • Portfólio
  • Algo Trading
  • Resultados
DocumentaçãoSímbolosSímbolos do Yahoo FinanceModificadores de SímbolosSímbolos BrasileirosBacktest de CarteiraAlgo TradingResultados do Backtest

Algo Trading

A ferramenta de Algo Trading executa um algoritmo de trading que você escreve em JavaScript. O código recebe os dados de mercado uma data por vez, envia ordens de compra e venda, e gera os mesmos resultados da ferramenta de Portfólio.

Campos:

  • Símbolos - Os ativos que o algoritmo pode negociar. Use qualquer um dos tipos de símbolo, até 10.
  • Saldo - O caixa inicial, na moeda selecionada no topo da página.
  • Intervalo - As datas de início e fim da simulação.
  • Alavancagem - Quando ativada, permite venda a descoberto, para que o algoritmo venda ativos que não possui, dentro dos limites de margem abaixo. O valor de uma venda a descoberto não é adicionado ao caixa. Use com cautela, pois aumenta tanto os retornos potenciais quanto os riscos.
  • Margem Inicial - Uma porcentagem (padrão 50%) que limita novas posições vendidas: o valor vendido total pode ser de até (caixa + posições compradas) / Margem Inicial. Por exemplo, 50% permite posições vendidas de até 2 vezes o caixa mais as posições compradas.
  • Margem Mínima - Uma porcentagem (padrão 30%) do valor vendido que deve ficar disponível como margem. Se a margem ficar abaixo dela, a simulação para com um erro. Não há chamada de margem automática.
  • Código - O código JavaScript do algoritmo (veja abaixo).

Código (AlgoWorkspace):

O código roda como o corpo de uma função async, com this vinculado ao AlgoWorkspace. Registre os listeners de eventos e chame start() no final do código para iniciar a simulação. O código deve ter exatamente um listener de data, e todo listener deve chamar next() ao terminar.

Eventos disponíveis:

  • this.on('start', async (next, timeseries) => { ... }) - Executado uma vez antes da primeira data. timeseries tem todos os dados de preço, indexados por data (Record<string, AssetDataFlat[]>). this.assets e this.portfolio ainda não estão definidos.
  • this.on('data', async (next) => { ... }) - Executado uma vez para cada data com dados. As ordens são executadas depois que o listener chama next(), ao preço dessa data.
  • this.on('end', async (next, result) => { ... }) - Executado após a última data, com o resultado final. result.summary.alpha e beta são Promises.
  • this.on('error', async (next, errors) => { ... }) - Executado quando ordens de uma data são canceladas, ex.: caixa ou margem insuficiente. errors é um string[]. Uma exceção no seu código interrompe a simulação e aparece na aba Avisos.

Propriedades e métodos:

  • this.date - A data atual.
  • this.assets - Os preços da data atual (AssetDataFlat[]: assetCode, date, value, currency). Só inclui os símbolos com dados nessa data.
  • this.portfolio - Uma cópia da carteira atual (cash, assets, total, longValue, shortValue, totalProfit, realizedProfit, margin). Alterá-la não tem efeito, use os métodos abaixo.
  • this.index - O número da data atual, de 1 a this.length.
  • this.length - O número de datas com dados.
  • this.inputs - As entradas da simulação.
  • this.state - Um objeto para guardar seus próprios dados entre eventos.
  • this.buy(assetCode: string, quantity: number): void - Envia uma ordem de compra. A quantidade deve ser um número finito diferente de zero.
  • this.sell(assetCode: string, quantity: number): void - Envia uma ordem de venda. Vender mais que a posição abre uma posição vendida, se a Alavancagem estiver ativada.
  • this.print(...msgs: any[]): void - Adiciona uma mensagem, com a data atual, à aba Mensagens.
  • this.depositCash(amount: number): void - Adiciona caixa à carteira.
  • this.loadScript(url: string): Promise<number> - Carrega uma biblioteca JavaScript externa. Os scripts carregados são removidos após a execução.
  • this.download(obj: any, name?: string): Promise<void> - Baixa obj como um arquivo JSON chamado name.json (padrão invest-tester.json).

O código padrão na página de Algo Trading é um exemplo completo. Ele carrega uma biblioteca, envia ordens aleatórias e faz aportes mensais.

InvestTester | Criado por Tpessia
support@investtester.com