Vous voulez lire ceci en anglais ? Allez ici
VeighNa est un cadre de développement de système de trading quantitatif open source basé sur Python. Grâce aux contributions continues de la communauté open source, il est progressivement devenu une plateforme de trading quantitatif multifonctionnelle. Depuis sa sortie, il a accumulé de nombreux utilisateurs d'institutions financières ou connexes. domaines, y compris les fonds de capital-investissement, les sociétés de valeurs mobilières, les sociétés de contrats à terme, etc.
[VeighNa Elite Quantitative Terminal] destiné aux traders professionnels a été officiellement lancé, offrant un support parfait aux besoins des traders professionnels en termes de concurrence stratégique massive, de changement de position intelligent, d'exécution fractionnée d'algorithmes et de prise en charge du trading multi-comptes. Pour des informations plus détaillées, veuillez scanner le code QR ci-dessous pour suivre et cliquer sur [Community Communication -> Elite Membership Service] dans la barre de menu :
Si vous avez des questions lors du processus d'utilisation de VeighNa pour le développement secondaire (stratégies, modules, etc.), veuillez consulter la documentation du projet VeighNa . Si vous ne parvenez pas à résoudre le problème, veuillez vous rendre dans la section [Demander et aider] du site officiel. forum communautaire pour obtenir de l'aide. Vous êtes également invités à [Partage d'expérience] Partagez votre expérience en utilisant cette section !
Vous souhaitez obtenir plus d’informations sur VeighNa ? Veuillez scanner le code QR ci-dessous pour ajouter un assistant afin de rejoindre le [groupe WeChat de communication communautaire VeighNa] :
Une plateforme de trading quantitatif multifonctionnelle (Trader), qui intègre une variété d'interfaces de trading et fournit des API simples et faciles à utiliser pour des algorithmes de stratégie spécifiques et un développement fonctionnel, afin de créer rapidement les applications de trading quantitatif requises par les traders.
L'interface commerciale (passerelle) couvrant les variétés commerciales suivantes détenues au pays et à l'étranger :
marché intérieur
CTP (ctp) : contrats à terme et options nationaux
CTP Mini (mini) : contrats à terme et options nationaux
CTP Securities (sopt) : options ETF
Femas : avenir national
Hang Seng UFT (uft) : contrats à terme nationaux, options ETF
esunny : contrats à terme nationaux, or TD
Apex Feichuang (sec) : options ETF
Vertex HTS (hts) : options ETF
Zhongtai XTP (xtp) : titres nationaux (actions A), options ETF
Huaxin Singularity (tora) : titres nationaux (actions A), options ETF
Guotai Junan (hft) : titres nationaux (actions A, services financiers)
Topix OST (ost) : Titres nationaux (actions A)
Oriental Fortune EMT (emt) : titres nationaux (actions A)
Flying Squirrel (sgit) : or TD, contrats à terme nationaux
ksgold : Or TD
Lei Xing Asset Management (lstar) : Gestion d'actifs à terme
Rohon : gestion d'actifs à terme
jees : gestion d'actifs à terme
Zhonghui Yida (comstar) : marché interbancaire
Nuggets (gm) : Titres nationaux (Simulation)
Hang Seng Cloud UF (uf) : titres nationaux (simulation)
TTS (tts) : contrats à terme nationaux (simulation)
marché d'outre-mer
Interactive Brokers (ib) : titres étrangers, futures, options, métaux précieux, etc.
Disque externe Yisheng 9.0 (robinet) : contrats à terme à l'étranger
Contrats à terme directs (da) : contrats à terme à l'étranger
Application spéciale
RQData Quotes (rqdata) : cotations en temps réel sur tous les marchés (actions, indices, ETF, contrats à terme)
Xun Touyan Quotes (xt) : cotations en temps réel sur tous les marchés (actions, indices, obligations convertibles, ETF, contrats à terme, options)
Service RPC (rpc) : interface de communication inter-processus pour les architectures distribuées
Applications de trading (apps) couvrant les types de stratégies quantitatives suivants :
cta_strategy : le module de moteur de stratégie CTA, tout en conservant la facilité d'utilisation, permet aux utilisateurs d'effectuer un contrôle précis sur les rapports commandés et le comportement de retrait pendant le fonctionnement des stratégies CTA (réduire les dérapages de transaction et mettre en œuvre des stratégies à haute fréquence)
cta_backtester : module de backtest de stratégie CTA, sans utiliser Jupyter Notebook, utilise directement l'interface graphique pour effectuer une analyse de backtest de stratégie, l'optimisation des paramètres et d'autres travaux connexes
spread_trading : module de trading de spreads, prend en charge les spreads personnalisés, le calcul en temps réel des cotations et des positions de spread, et prend en charge le trading par algorithme de spread et les stratégies de spread automatiques.
option_master : module de négociation d'options, conçu pour le marché national des options, prend en charge plusieurs modèles de tarification d'options, les calculs de surface de volatilité implicite, le suivi du risque de valeur grecque et d'autres fonctions.
portfolio_strategy : module de stratégie de portefeuille, pour les stratégies quantitatives qui négocient plusieurs contrats en même temps (Alpha, arbitrage d'options, etc.), fournissant un backtesting des données historiques et des fonctions de trading automatique en temps réel
algo_trading : module de trading algorithmique, fournissant une variété d'algorithmes de trading intelligents couramment utilisés : TWAP, Sniper, Iceberg, BestLimit, etc.
script_trader : module de stratégie de script, conçu pour les stratégies quantitatives et les tâches de calcul multistandards. Il peut également implémenter des transactions sous forme d'instructions REPL sur la ligne de commande. Il ne prend pas en charge le backtesting.
paper_account : module de simulation locale, une fonction de trading de simulation purement localisée, une correspondance confiée basée sur les conditions de marché en temps réel obtenues à partir de l'interface de trading, et dotée d'enregistrements de transactions et de positions confiés
chart_wizard : module de graphique K-line, qui obtient des données historiques basées sur le service de données RQData (futures) ou l'interface de trading, et affiche les changements de marché en temps réel combinés avec Tick push
portfolio_manager : module de gestion de portefeuille de trading, basé sur des portefeuilles de trading stratégiques indépendants (sous-comptes), fournit une gestion des enregistrements de transactions commandées, un suivi automatique des positions de trading et des statistiques en temps réel des profits et pertes quotidiens.
rpc_service : module de service RPC, qui permet de démarrer un certain processus en tant que serveur. En tant que canal de marché et de routage de transactions unifié, il permet à plusieurs clients de se connecter en même temps pour mettre en œuvre un système distribué multi-processus.
data_manager : module de gestion des données historiques, affichez l'aperçu des données existantes dans la base de données via le répertoire arborescent, sélectionnez les données dans n'importe quelle période pour afficher les détails du champ, prenez en charge l'importation de données et l'exportation de fichiers CSV
data_recorder : module d'enregistrement du marché, configuré sur la base de l'interface graphique, enregistre les conditions du marché Tick ou K-line en temps réel dans la base de données en fonction des besoins, pour le backtesting de la stratégie ou l'initialisation réelle du marché
excel_rtd : Service de données en temps réel Excel RTD (Real Time Data), basé sur le module pyxll pour obtenir des mises à jour push en temps réel de diverses données (marchés, contrats, positions, etc.) dans Excel
Risk_manager : module de gestion des risques, qui fournit des statistiques et des restrictions sur le contrôle du flux de transactions, la quantité de commandes, le mandat d'activité, le nombre total d'annulations de commandes et d'autres règles, réalisant efficacement des fonctions de contrôle des risques front-end.
web_trader : module de service Web, conçu pour les exigences de l'architecture BS, implémente un serveur Web qui fournit des appels de fonctions actifs (REST) et un push de données passif (Websocket)
L'encapsulation de l'interface API de transaction Python (api) fournit l'implémentation d'accueil sous-jacente de l'interface de transaction ci-dessus.
Client REST (rest) : un client API REST hautes performances basé sur des E/S asynchrones coroutine, utilisant le modèle de programmation en boucle de messages d'événement et prenant en charge l'envoi de demandes de transactions en temps réel à haute concurrence.
Client Websocket (websocket) : un client API Websocket hautes performances basé sur une IO asynchrone coroutine, qui prend en charge l'exécution simultanée de la boucle d'événements partagée avec le client REST.
Le moteur événementiel (événement), simple et facile à utiliser, constitue le cœur du programme de trading événementiel.
Interface d'adaptateur pour ancrer diverses bases de données (base de données) :
Classe SQL
SQLite (sqlite) : base de données légère à fichier unique, pas besoin d'installer et de configurer des programmes de service de données, option par défaut de VeighNa, adaptée aux utilisateurs novices
MySQL (mysql) : une base de données relationnelle open source grand public avec une documentation extrêmement riche et peut remplacer d'autres implémentations compatibles NewSQL (telles que TiDB)
PostgreSQL (postgresql) : une base de données relationnelle open source avec des fonctionnalités plus riches. Elle prend en charge de nouvelles fonctions via des plug-ins d'extension. Elle est uniquement recommandée aux utilisateurs expérimentés.
Classe NoSQL
DolphinDB (dolphindb) : une base de données de séries chronologiques distribuées hautes performances, adaptée aux tâches à faible latence ou en temps réel avec des exigences de vitesse extrêmement élevées
Arctique (arctique) : une base de données de séries chronologiques financières hautes performances qui adopte des solutions d'optimisation des performances telles que le stockage par blocs et la compression LZ4 pour obtenir une lecture et une écriture efficaces des données de séries chronologiques.
TDengine (taos) : une base de données de séries chronologiques distribuée, hautes performances, prise en charge par SQL avec mise en cache intégrée, calcul en continu, abonnement aux données et autres fonctions système, ce qui peut réduire considérablement la complexité de la R&D, de l'exploitation et de la maintenance.
TimescaleDB (timescaledb) : une base de données de séries chronologiques développée sur la base de PostgreSQL. Elle est installée en tant qu'extension de plug-in et prend en charge le partitionnement automatique des données par espace et par temps.
MongoDB (mongodb) : une base de données de documents basée sur le stockage de fichiers distribués (format bson). Le cache mémoire de données chaudes intégré offre des vitesses de lecture et d'écriture plus rapides.
InfluxDB (influxdb) : une base de données de séries chronologiques spécialement conçue pour le stockage de données en colonnes offre une efficacité de lecture et d'écriture extrêmement élevée et des applications d'analyse périphérique.
LevelDB (leveldb) : une base de données Clé/Valeur hautes performances lancée par Google. Elle implémente un moteur de stockage in-process basé sur l'algorithme LSM et prend en charge des milliards de données massives.
Interface d'adaptateur (flux de données) pour ancrer les types de services de données suivants :
Xun Investment Research (xt) : actions, contrats à terme, options, fonds, obligations
MiKang RQData (rqdata) : actions, contrats à terme, options, fonds, obligations, or TD
Wing Chun Master (voltrader) : contrats à terme, options
Hang Seng UData (udata) : actions, contrats à terme, options
TuShare (tushare) : actions, contrats à terme, options, fonds
Vent (éolien) : actions, contrats à terme, fonds, obligations
Tinysoft (tinysoft) : actions, contrats à terme, fonds, obligations
Flush iFinD (ifind) : actions, contrats à terme, fonds, obligations
Tianqin TQSDK (tqsdk) : contrats à terme
Composant standard de communication inter-processus (rpc), utilisé pour mettre en œuvre des systèmes commerciaux complexes avec un déploiement distribué.
Le graphique K-line (graphique) hautes performances de Python prend en charge l'affichage de graphiques à grand volume de données et les fonctions de mise à jour des données en temps réel.
Les forums communautaires et les colonnes Zhihu incluent des tutoriels de développement sur le projet VeighNa et des recherches sur l'application de Python dans le domaine du trading quantitatif.
Le groupe de communication officiel 262656087 (QQ) est strictement géré (les membres plongeurs de longue date sont régulièrement supprimés), et les frais d'entrée du groupe seront reversés au fonds communautaire VeighNa.
Remarque : La description ci-dessus des fonctionnalités fonctionnelles est basée sur la situation au moment de la publication de la documentation et peut être mise à jour ou ajustée à l'avenir. Si la description de la fonction est différente de l'existence réelle, veuillez nous contacter via Issue pour un ajustement.
Téléchargez la version Release ici, décompressez-la et exécutez la commande suivante pour l'installer :
Fenêtres
install.bat
Ubuntu
bash install.sh
Macos
bash install_osx.sh
Remarque : Les bibliothèques dépendantes requises pour l'installation du framework VeighNa sont répertoriées dans setup.cfg, et les versions d'installation recommandées de ces bibliothèques dépendantes sont indiquées dans Requirements.txt.
Enregistrez un compte de simulation CTP sur SimNow et obtenez le code du courtier et l'adresse du serveur de cotation commerciale sur cette page.
Inscrivez-vous sur le forum communautaire VeighNa pour obtenir le compte et le mot de passe de la station VeighNa (le compte du forum et le mot de passe sont les mêmes)
Démarrez VeighNa Station (un raccourci sera automatiquement créé sur le bureau après l'installation de VeighNa Studio), saisissez le compte et le mot de passe de l'étape précédente pour vous connecter
Cliquez sur le bouton VeighNa Trader en bas pour démarrer votre trading ! ! !
Avis:
En plus de la méthode de démarrage graphique basée sur VeighNa Station, vous pouvez également créer run.py dans n'importe quel répertoire et écrire l'exemple de code suivant :
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 ()
Ouvrez CMD dans ce répertoire (maintenez Shift->clic droit sur la souris->ouvrez la fenêtre de commande/PowerShell ici) et exécutez la commande suivante pour démarrer VeighNa Trader :
python run.py
VeighNa utilise Github pour héberger son code source. Si vous souhaitez contribuer au code, veuillez utiliser le processus PR (Pull Request) de github :
Créer un problème - Pour les modifications plus importantes (telles que les nouvelles fonctionnalités, la refactorisation à grande échelle, etc.), il est recommandé d'ouvrir un problème pour en discuter en premier. Pour les améliorations plus petites (telles que les améliorations de documents, les corrections de bugs, etc.), il suffit de le faire. envoyer un PR directement.
Fork VeighNa - Cliquez sur le bouton Fork dans le coin supérieur droit
Clonez votre propre fork : git clone https://github.com/$userid/vnpy.git
Créez votre propre branche de fonctionnalités à partir de dev : git checkout -b $my_feature_branch dev
Modifiez $my_feature_branch et transférez les modifications à votre fork
Créez une [Pull Request] depuis la branche $my_feature_branch de votre fork vers la branche dev du projet principal - cliquez sur comparer entre les forks ici, sélectionnez le fork et la branche requis pour créer un PR
En attente de révision, besoin de continuer à s'améliorer, ou d'être fusionné !
Lorsque vous soumettez du code, veuillez respecter les règles suivantes pour améliorer la qualité du code :
flake8
dans le répertoire racine du projet. MIT