>_ DevTrendspt

Idioma

Início

Linguagens

Seções

Frontend Backend Mobile DevOps AI / ML GameDev Blockchain Embarcados Segurança
Python

Como Construir um Bot de Trading em Python Sem Reinventar a Roda

Quando um programador decide experimentar trading algorítmico, tudo geralmente começa criando seu próprio script. O script solicita candles via API REST, calcula alguns indicadores e envia ordens. Um mês passa, e o projeto se transforma em uma construção pesada de tratamento de erros de rede, dessincronização de sockets e gambiarras caóticas para controle de ordens.

Em vez de escrever tudo do zero, faz mais sentido utilizar um framework pronto. O projeto VeighNa (anteriormente conhecido como VN.py) surgiu em 2015. Tem mais de 43 mil estrelas no GitHub, e o desenvolvimento ativo continua até hoje.

O Que É a Plataforma

VeighNa é um framework open-source para trading algorítmico em Python. A arquitetura interna é construída em torno de um motor de eventos. O sistema não precisa executar loops de espera intermináveis—ele reage a ticks recebidos, mudanças de status de ordens e sinais do temporizador do sistema.

O projeto tem foco institucional. Na China, é utilizado por corretoras de futuros, empresas de gestão de ativos e fundos de hedge privados. Isso deixa uma certa marca no código-fonte.

A maioria dos conectores integrados são adaptados para o mercado financeiro chinês (CTP, XTP, HTS). No entanto, existe um adaptador para Interactive Brokers para trabalhar com bolsas internacionais. Se a bolsa ou plataforma de criptomoedas necessária não estiver na lista, você precisará escrever seu próprio gateway herdando da classe base Gateway.

Módulos para Resolver Tarefas Práticas

A arquitetura do sistema consiste em três partes principais: o núcleo, as aplicações de trading (apps) e os adaptadores de dados.

Para estratégias, vários motores especializados são fornecidos:

  • CTA Strategy lida com trading de tendência e contra-tendência padrão em instrumentos únicos.
  • Spread Trading ajuda a implementar trading de pares e arbitragem espacial.
  • Option Master contém ferramentas para avaliação de opções, construção de curvas de volatilidade e cálculo de Gregos.
  • Portfolio Strategy foca em estratégias que negociam um basket de ativos de uma vez.

Entre os toques interessantes está a presença de interfaces prontas para backtesting. Para testar uma ideia em dados históricos, você não precisa necessariamente abrir o Jupyter Notebook. O sistema tem uma interface gráfica integrada baseada em PyQt, onde você pode executar otimização de parâmetros e visualizar imediatamente a curva de capital e gráficos de drawdown.

Para armazenar histórico, bancos de dados relacionais convencionais como SQLite e MySQL são suportados, assim como armazenamentos colunares especializados como QuestDB e TDengine, otimizados para entrada e saída rápida de séries temporais.

Machine Learning na Versão 4.0

A quarta geração do framework introduziu o módulo vnpy.alpha. Os desenvolvedores admitem honestamente que foram inspirados pelo projeto Qlib da Microsoft.

O módulo fecha o ciclo de desenvolvimento para estratégias de ML:

  • Geração e processamento de features baseado no conjunto de expressões de fatores Alpha158.
  • Treinamento de modelos de predição usando LightGBM, Lasso ou perceptron multicamadas (MLP).
  • Transição rápida do notebook de pesquisa para execução em conta real ou simulada.

O repositório contém Jupyter notebooks prontos com exemplos, então se familiarizar com o pipeline de preparação de dados e treinamento não será difícil.

Como É o Código

Iniciar um terminal de trading com o conjunto necessário de módulos pode ser feito em literalmente uma dúzia de linhas. No exemplo abaixo, montamos uma aplicação com uma conexão de gateway CTP e dois módulos: execução de estratégia CTA e teste histórico.

from vnpy.event import EventEngine
from vnpy.trader.engine import MainEngine
from vnpy.trader.ui import MainWindow, create_qapp

from vnpy_ctp import CtpGateway
from vnpy_ctastrategy import CtaStrategyApp
from vnpy_ctabacktester import CtaBacktesterApp


def main():
    qapp = create_qapp()

    event_engine = EventEngine()
    main_engine = MainEngine(event_engine)
    
    main_engine.add_gateway(CtpGateway)
    main_engine.add_app(CtaStrategyApp)
    main_engine.add_app(CtaBacktesterApp)

    main_window = MainWindow(main_engine, event_engine)
    main_window.showMaximized()

    qapp.exec()


if __name__ == "__main__":
    main()

Após iniciar, uma janela desktop completa será aberta com tabelas de ordens, posições, logs e gráficos de velas.

Vale a Pena Usar em Produção

VeighNa é uma plataforma massiva. Se você só precisa enviar algumas ordens para o mercado à vista uma vez por dia via API REST, o framework parecerá exageradamente complicado.

No entanto, a ferramenta certamente será útil se você está procurando uma arquitetura testada pelo tempo para trading orientado a eventos, planejando escrever seus próprios conectores, ou quer um terminal desktop pronto com gerenciamento de risco e capacidades de backtesting. O principal é estar preparado para o fato de que parte da documentação e comentários da comunidade são traduzidos do chinês via tradutor.

Projetos relacionados