Quer ler isso em inglês ? Clique aqui
VeighNa é uma estrutura de desenvolvimento de sistema de negociação quantitativa de código aberto baseada em Python. Com contribuições contínuas da comunidade de código aberto, ela cresceu gradualmente e se tornou uma plataforma de negociação quantitativa multifuncional desde seu lançamento, acumulou muitos usuários de instituições financeiras ou relacionadas. campos, incluindo fundos de private equity, empresas de valores mobiliários, empresas de futuros, etc.
O [Terminal Quantitativo VeighNa Elite] para traders profissionais foi lançado oficialmente, fornecendo suporte perfeito para as necessidades dos traders profissionais em termos de simultaneidade de estratégia massiva, mudança inteligente de posição, execução de divisão de algoritmo e suporte de negociação multicontas. Para obter informações mais detalhadas, leia o código QR abaixo e clique em [Comunicação da Comunidade -> Serviço de Associação Elite] na barra de menu :
Se você tiver alguma dúvida durante o processo de uso do VeighNa para desenvolvimento secundário (estratégias, módulos, etc.), verifique a documentação do projeto VeighNa . Se você não conseguir resolver o problema, vá para a seção [Perguntar e Ajuda] do oficial . fórum da comunidade para obter ajuda. Você também é bem-vindo ao [Compartilhamento de experiência] Compartilhe sua experiência usando esta seção!
Quer obter mais informações sobre VeighNa? Leia o código QR abaixo para adicionar um assistente para ingressar no [grupo WeChat de comunicação da comunidade VeighNa]:
Uma plataforma de negociação quantitativa multifuncional (Trader), que integra uma variedade de interfaces de negociação e fornece APIs simples e fáceis de usar para algoritmos de estratégia específicos e desenvolvimento de funções, para construir rapidamente aplicações de negociação quantitativa exigidas pelos traders.
A interface comercial (gateway) abrange os seguintes produtos comerciais de propriedade nacional e estrangeira:
mercado interno
CTP (ctp): Futuros e opções nacionais
CTP Mini (mini): Futuros e opções nacionais
Títulos CTP (sopt): opções de ETF
Femas: futuros domésticos
Hang Seng UFT (uft): Futuros domésticos, opções de ETF
esunny: futuros domésticos, ouro TD
Apex Feichuang (seg): opções de ETF
Vertex HTS (hts): opções de ETF
Zhongtai XTP (xtp): títulos nacionais (ações A), opções de ETF
Huaxin Singularity (tora): títulos nacionais (ações A), opções de ETF
Guotai Junan (hft): Títulos nacionais (ações A, serviços financeiros)
Topix OST (ost): Títulos nacionais (ações A)
Oriental Fortune EMT (emt): Títulos Domésticos (Ações A)
Esquilo Voador (sgit): ouro TD, futuros domésticos
ksgold: Ouro TD
Lei Xing Asset Management (lstar): Gestão de Ativos Futuros
Rohon: Gestão de Ativos Futuros
jees: gestão de ativos futuros
Zhonghui Yida (comstar): mercado interbancário
Nuggets (gm): Títulos Domésticos (Simulação)
Hang Seng Cloud UF (uf): Títulos Domésticos (Simulação)
TTS (tts): Futuros domésticos (simulação)
mercado externo
Interactive Brokers (ib): títulos estrangeiros, futuros, opções, metais preciosos, etc.
Disco externo Yisheng 9.0 (toque): futuros no exterior
Futuros Diretos (da): Futuros no Exterior
Aplicação especial
Cotações RQData (rqdata): Cotações em tempo real em todos os mercados (ações, índices, ETFs, futuros)
Cotações de Xun Touyan (xt): cotações em tempo real em todos os mercados (ações, índices, títulos conversíveis, ETFs, futuros, opções)
Serviço RPC (rpc): interface de comunicação entre processos para arquiteturas distribuídas
Aplicativos de negociação (apps) que abrangem os seguintes tipos de estratégias quantitativas:
cta_strategy: O módulo do mecanismo de estratégia CTA, embora mantenha a facilidade de uso, permite que os usuários conduzam um controle refinado sobre os relatórios comissionados e o comportamento de retirada durante a operação de estratégias CTA (reduza o deslizamento da transação e implemente estratégias de alta frequência)
cta_backtester: módulo de backtest de estratégia CTA, sem usar Jupyter Notebook, usa diretamente a interface gráfica para realizar análise de backtest de estratégia, otimização de parâmetros e outros trabalhos relacionados
spread_trading: Módulo de negociação de spread, suporta spreads personalizados, cálculo em tempo real de cotações e posições de spread, suporta negociação de algoritmo de spread e modos de estratégia de spread automático
option_master: Módulo de negociação de opções, projetado para o mercado de opções doméstico, suporta vários modelos de precificação de opções, cálculos de superfície de volatilidade implícita, rastreamento de risco de valor grego e outras funções
portfolio_strategy: Módulo de estratégia de portfólio, para estratégias quantitativas (Alpha, arbitragem de opções, etc.) que negociam vários contratos ao mesmo tempo, fornecendo backtesting de dados históricos e funções de negociação automática em tempo real
algo_trading: Módulo de negociação algorítmica, que fornece uma variedade de algoritmos de negociação inteligentes comumente usados: TWAP, Sniper, Iceberg, BestLimit, etc.
script_trader: módulo de estratégia de script, projetado para estratégias quantitativas multipadrão e tarefas de cálculo. Ele também pode implementar transações na forma de instruções REPL na linha de comando.
paper_account: módulo de simulação local, uma função de negociação de simulação puramente localizada, correspondência confiável com base nas condições de mercado em tempo real obtidas da interface de negociação e fornecida com registros de posição e push de transação confiados
chart_wizard: módulo de gráfico de linha K, que obtém dados históricos com base no serviço de dados RQData (futuros) ou interface de negociação e exibe mudanças de mercado em tempo real combinadas com Tick push
portfolio_manager: O módulo de gerenciamento de carteira de negociação, baseado em carteiras de negociação estratégicas independentes (subcontas), fornece gerenciamento de registros de transações comissionadas, rastreamento automático de posições de negociação e estatísticas em tempo real de lucros e perdas diárias.
rpc_service: módulo de serviço RPC, que permite que um determinado processo seja iniciado como um servidor. Como um canal unificado de roteamento de transações e mercado, permite que vários clientes se conectem ao mesmo tempo para implementar um sistema distribuído multiprocesso.
data_manager: módulo de gerenciamento de dados históricos, visualiza a visão geral dos dados existentes no banco de dados por meio do diretório em árvore, seleciona dados em qualquer período de tempo para visualizar detalhes do campo, suporta importação de dados e exportação de arquivos CSV
data_recorder: Módulo de registro de mercado, configurado com base na interface gráfica, registra as condições do mercado Tick ou K-line em tempo real no banco de dados de acordo com as necessidades, para backtesting de estratégia ou inicialização real do mercado
excel_rtd: serviço de dados em tempo real Excel RTD (Real Time Data), baseado no módulo pyxll para obter atualizações push em tempo real de vários dados (mercados, contratos, posições, etc.) no Excel
Risk_manager: Módulo de gerenciamento de risco, que fornece estatísticas e restrições sobre controle de fluxo de transações, quantidade de pedidos, atribuição de atividades, número total de cancelamentos de pedidos e outras regras, realizando efetivamente funções de controle de risco front-end.
web_trader: Módulo de serviço Web, projetado para requisitos de arquitetura BS, implementa um servidor Web que fornece chamadas de função ativa (REST) e envio passivo de dados (Websocket)
O encapsulamento da interface da API de transação Python (api) fornece a implementação de encaixe subjacente da interface de transação acima.
Cliente REST (rest): um cliente API REST de alto desempenho baseado em E/S assíncrona de corrotina, usando o modelo de programação de loop de mensagem de evento para oferecer suporte ao envio de solicitação de transação em tempo real de alta simultaneidade
Cliente Websocket (websocket): um cliente API Websocket de alto desempenho baseado em E/S assíncrona de corrotina, que oferece suporte à execução simultânea do loop de eventos compartilhado com o cliente REST.
O mecanismo (evento) orientado a eventos simples e fácil de usar serve como o núcleo do programa de negociação orientado a eventos.
Interface do adaptador para acoplamento de vários bancos de dados (banco de dados):
Classe SQL
SQLite (sqlite): banco de dados leve de arquivo único, sem necessidade de instalar e configurar programas de serviço de dados, opção padrão do VeighNa, adequado para usuários novatos
MySQL (mysql): um banco de dados relacional de código aberto convencional com documentação extremamente rica e pode substituir outras implementações compatíveis com NewSQL (como TiDB)
PostgreSQL (postgresql): um banco de dados relacional de código aberto com recursos mais ricos. Suporta novas funções por meio de plug-ins de extensão. É recomendado apenas para usuários experientes.
Classe NoSQL
DolphinDB (dolphindb): um banco de dados de série temporal distribuído de alto desempenho, adequado para tarefas de baixa latência ou em tempo real com requisitos de velocidade extremamente alta
Ártico (Ártico): Um banco de dados de séries temporais financeiras de alto desempenho que adota soluções de otimização de desempenho, como armazenamento em bloco e compactação LZ4, para obter leitura e gravação eficientes de dados de séries temporais.
TDengine (taos): um banco de dados de série temporal distribuído, de alto desempenho e com suporte SQL, com cache integrado, computação de streaming, assinatura de dados e outras funções do sistema, que podem reduzir significativamente a complexidade de P&D, operação e manutenção.
TimescaleDB (timescaledb): um banco de dados de série temporal desenvolvido com base em PostgreSQL. É instalado como uma extensão de plug-in e suporta particionamento automático de dados por espaço e tempo.
MongoDB (mongodb): Um banco de dados de documentos baseado em armazenamento de arquivos distribuído (formato bson). O cache de memória de dados dinâmicos integrado fornece velocidades de leitura e gravação mais rápidas.
InfluxDB (influxdb): Um banco de dados de série temporal especialmente projetado para armazenamento de dados de coluna TimeSeries fornece eficiência de leitura e gravação extremamente alta e aplicações de análise periférica.
LevelDB (leveldb): um banco de dados de chave/valor de alto desempenho lançado pelo Google. Ele implementa um mecanismo de armazenamento em processo baseado no algoritmo LSM e suporta bilhões de dados massivos.
Interface adaptadora (datafeed) para acoplamento dos seguintes tipos de serviços de dados:
Xun Investment Research (xt): ações, futuros, opções, fundos, títulos
MiKang RQData (rqdata): ações, futuros, opções, fundos, títulos, ouro TD
Mestre Wing Chun (voltrader): futuros, opções
Hang Seng UData (udata): ações, futuros, opções
TuShare (tushare): ações, futuros, opções, fundos
Vento (vento): ações, futuros, fundos, títulos
Tinysoft (tinysoft): ações, futuros, fundos, títulos
Flush iFinD (ifind): ações, futuros, fundos, títulos
Tianqin TQSDK (tqsdk): Futuros
Componente padrão de comunicação entre processos (rpc), usado para implementar sistemas de negociação complexos com implantação distribuída.
O gráfico (gráfico) de linha K de alto desempenho do Python suporta exibição de gráfico de grande volume de dados e funções de atualização de dados em tempo real.
Os fóruns da comunidade e as colunas Zhihu incluem tutoriais de desenvolvimento do projeto VeighNa e pesquisas sobre a aplicação de Python na área de negociação quantitativa.
O grupo oficial de comunicação 262656087 (QQ) é administrado de forma rigorosa (membros que são mergulhadores há muito tempo são removidos regularmente), e a taxa de entrada do grupo será doada ao fundo comunitário VeighNa.
Nota: A descrição acima dos recursos funcionais é baseada na situação no momento do lançamento da documentação, podendo ser atualizada ou ajustada no futuro. Caso a descrição da função seja diferente da existência real, entre em contato conosco através do Issue para ajuste.
Baixe a versão Release aqui, descompacte-a e execute o seguinte comando para instalá-la:
Windows
install.bat
Ubuntu
bash install.sh
MacOS
bash install_osx.sh
Nota: As bibliotecas dependentes necessárias para a instalação da estrutura VeighNa estão listadas em setup.cfg, e as versões de instalação recomendadas dessas bibliotecas dependentes são fornecidas em requisitos.txt.
Registre uma conta de simulação CTP no SimNow e obtenha o código da corretora e o endereço do servidor de cotação de negociação nesta página.
Registre-se no Fórum da Comunidade VeighNa para obter a conta e senha da Estação VeighNa (a conta e a senha do fórum são as mesmas)
Inicie o VeighNa Station (um atalho será criado automaticamente na área de trabalho após a instalação do VeighNa Studio), digite a conta e a senha da etapa anterior para fazer login
Clique no botão VeighNa Trader na parte inferior para iniciar sua negociação! ! !
Perceber:
Além do método gráfico de inicialização baseado na Estação VeighNa, você também pode criar run.py em qualquer diretório e escrever o seguinte código de exemplo:
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 ():
"""Start VeighNa Trader"""
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 ()
Abra o CMD neste diretório (mantenha pressionada Shift-> clique com o botão direito do mouse-> abra a janela de comando/PowerShell aqui) e execute o seguinte comando para iniciar o VeighNa Trader:
python run.py
VeighNa usa o Github para hospedar seu código-fonte. Se você quiser contribuir com código, use o processo PR (Pull Request) do github:
Crie um problema - Para mudanças maiores (como novos recursos, refatoração em grande escala, etc.), é recomendado abrir um problema para discuti-lo primeiro. Para melhorias menores (como melhorias de documentos, correções de bugs, etc.), apenas. envie um PR diretamente.
Fork VeighNa - Clique no botão Fork no canto superior direito
Clone seu próprio fork: git clone https://github.com/$userid/vnpy.git
Crie seu próprio branch de recursos a partir de dev : git checkout -b $my_feature_branch dev
Modifique $my_feature_branch e envie as alterações para seu fork
Crie uma [solicitação pull] do branch $my_feature_branch do seu fork para o branch dev do projeto principal - clique em comparar entre os forks aqui, selecione o fork e o branch necessários para criar um PR
Aguardando revisão, precisa continuar melhorando ou ser mesclado!
Ao enviar o código, siga as seguintes regras para melhorar a qualidade do código:
flake8
no diretório raiz do projeto. MIT