WonderTrader
est un cadre de développement de trading quantitatif à haute efficacité et hautement disponible basé sur le module de base C++
qui convient à tous les types de transactions sur l'ensemble du marché.
WonderTrader
s'appuie sur le cadre de base C++
à haute vitesse et sur le cadre de couche d'application efficace et facile à utiliser (wtpy), et s'engage à créer un scénario de trading quantitatif de R&D à guichet unique entièrement automatisé à partir de la R&D, du trading, des opérations et de la planification. .
WonderTrader
a lancé un nouveau moteur UFT dans 0.9
pour répondre aux besoins du trading à latence ultra-faible. Après une série d'optimisations, la latence du système est inférieure à 175 nanosecondes .
La véritable architecture de trading de WonderTrader
WonderTrader
Moteur de trading riche
- Le moteur CTA , également appelé moteur de stratégie de synchronisation , convient généralement aux stratégies avec moins d'objectifs, une logique de calcul plus rapide et est axé sur les événements et le temps. Les scénarios d'application typiques incluent le timing d'une offre unique, l'arbitrage en dessous de la fréquence moyenne, etc. Pour la stratégie DualThrust fournie dans la démo, le temps moyen nécessaire pour un seul recalcul est d'environ 70 microsecondes pour la version d'implémentation Python et d'environ 4,5 microsecondes pour la version d'implémentation C++.
- Le moteur SEL , également appelé moteur de stratégie asynchrone , convient généralement aux stratégies temporelles qui ont de nombreux objectifs et prennent beaucoup de temps à calculer la logique. Les scénarios d'application typiques incluent des stratégies de sélection de titres multifactorielles, des stratégies transversales long-short, etc.
- Le moteur HFT , également appelé moteur de stratégie haute fréquence , est principalement destiné aux stratégies haute fréquence ou à faible latence. Il est piloté par les événements et le délai du système est compris entre 1 et 2 microsecondes.
- Le moteur UFT , également appelé moteur de stratégie ultra-rapide , est principalement destiné aux stratégies à ultra-haute fréquence ou à ultra-faible latence, pilotées par les événements, et le délai du système est inférieur à 200 nanosecondes.
Interface de développement complète
- Interface de données efficace et facile à utiliser : Chaque stratégie aura un module de contexte indépendant. Le contexte mettra automatiquement en cache les données requises par la stratégie, et la stratégie pourra être appelée directement.
- Interface de signal simple : La stratégie n'a besoin que de définir la position cible et elle sera automatiquement exécutée en arrière-plan.
- Logique de politique sans contexte : la politique n'a pas besoin d'enregistrer elle-même des données. Il suffit d'interroger l'interface à chaque fois. Toutes les données sont mises en cache en mémoire et l'efficacité des accès est garantie.
Gestion stratégique professionnelle
- Gestion unifiée des combinaisons de stratégies : L'approche de combinaison de stratégies est principalement utilisée pour se coordonner avec la gestion des produits des organisations professionnelles. Une plaque combinée correspond à plusieurs objectifs de plusieurs stratégies, puis fixe un montant de fonds unitaire de base. Il s'agit d'une plaque combinée de base pour la gestion des produits, qui est pratique pour l'expansion.
- Exécution de la fusion de la position cible : Une fois la position cible fusionnée, le risque d'auto-transaction est évité, tandis que l'occupation de la marge et les frais de commission sont réduits.
- Stockage indépendant des positions théoriques : Les positions théoriques de la stratégie sont stockées indépendamment, et les performances globales du disque combiné sont également calculées indépendamment, ce qui facilite leur gestion en interne.
- Exécution simultanée de plusieurs comptes : Une fois la position cible de la combinaison déterminée, elle est exécutée simultanément via plusieurs canaux de négociation, ce qui peut garantir efficacement la cohérence des performances des différents comptes.
Type complet de support de backtest
- Prise en charge complète du langage : qu'il s'agisse d'une stratégie développée en
C++
, d'une stratégiepython
développée souswtpy
ou d'une stratégie développée sous d'autres sous-frameworks de langage, toutes sont backtestées dans un moteur de backtesting unifié .- Efficacité élevée du backtesting : le moteur de backtesting est développé en
C++
, l'efficacité du backtesting est élevée et la vitesse est rapide. Qu’il s’agisse d’une stratégieC++
ou d’une stratégiePython
, cela peut être rapidement vérifié.- Prise en charge complète de la stratégie : En plus des stratégies CTA et SEL , les stratégies HFT , les stratégies UFT et les unités d'exécution peuvent également être backtestées.
Asservissement de données efficace
- Serveur de données local : le moteur de stockage intégré de
WonderTrader
utilise le stockage local, établit un serveur de données localement et diffuse les données de marché en temps réel via le portudp
pour obtenir une structure de service1+N
, qui peut fournir des services de données indifférenciés à plusieurs combinaisons. disques en même temps. L'architecture professionnelle au niveau du fournisseur de données prend en charge la mise en place d'un système de distribution à plusieurs niveaux pour faire face facilement à divers scénarios de demande.- Mise en cache des données historiques : pendant le processus de transaction, toutes les données historiques sont mises en cache dans la mémoire. Dans le même temps, le mécanisme de référencement direct des tranches de données de la mémoire est adopté pour éviter fondamentalement la copie des données et améliorer l'efficacité de l'accès.
- Moteur de stockage efficace : les données en temps réel utilisent des fichiers
mmap
, qui peuvent lire et écrire à grande vitesse sans perdre de données. Dans le même temps, il prend en charge la base de données MySQL pour stocker les données historiques, ce qui rend plus pratique la création de votre propre base de données de recherche en investissement sur cette base.
Contrôle des risques flexible
- Contrôle des risques de fonds du disque combiné : le disque combiné a une échelle de fonds prédéfinie, et le contrôle des risques de fonds du disque combiné peut être effectué sur la base des fonds virtuels du disque combiné. Le plus grand avantage est que si la combinaison est à la baisse, après le déclenchement du contrôle des risques, même si le compte de capital n'atteint pas la ligne de contrôle des risques, il ne continuera pas à baisser.
- Contrôle des risques de trafic de canal : Destiné principalement aux risques de conformité , contrôlant des indicateurs tels que le nombre total de commandes annulées, le nombre de commandes passées sur une courte période et le nombre de commandes annulées.
- Contrôle des risques des fonds du compte : Il est cohérent avec le contrôle des risques des fonds au sens général, contrôlant principalement le retrait des fonds du compte, etc.
- Intervention manuelle d'urgence : fournissez une entrée pour une intervention manuelle d'urgence et réalisez des objectifs de contrôle en téléchargeant un fichier de configuration. Il convient principalement aux risques liés à un seul produit. S'il existe un risque sur l'ensemble du marché, le système peut être arrêté manuellement.
- Mécanisme d'embrayage : Le mécanisme d'embrayage s'appuie sur le mécanisme de séparation des signaux et d'exécution. Il est principalement utilisé pour déconnecter directement l'exécution du signal via le mécanisme d'embrayage s'il y a un risque dans la stratégie ou la combinaison. L'avantage est que cela n'affecte pas la logique de la stratégie et déconnecte uniquement l'exécution du signal. Vous pouvez continuer à observer la performance de la stratégie à une étape spécifique du marché et la confirmer par des recherches théoriques.
Console puissante (service de surveillance wtpy)
- Surveillance des opérations de disque combinées : Vous pouvez afficher les journaux d'opérations en temps réel, les données théoriques de stratégie, les données des canaux de négociation, etc., et fournir une entrée pour le démarrage et l'arrêt manuels.
- Service de planification automatique : planifie de manière entièrement automatique les tâches planifiées (démarrage, arrêt, redémarrage), prend en charge la configuration des répétitions de tâches sur une base hebdomadaire et prend en charge la tutelle des processus.
- Notification d'événements en temps réel : le service de surveillance reçoit les événements poussés par le disque combiné, puis les transmet au terminal de surveillance pour inviter l'utilisateur.
- Visionneuse de backtest : Grâce au module WtBtSnooper, vous pouvez visualiser et analyser les données de backtest.
- Déploiement à distance entièrement automatique (en construction) : Déploiement à distance en ligne entièrement automatique, fournissant des services de déploiement automatisés pour divers scénarios d'application tels que l'environnement de backtest et l'environnement de disque réel.
Contrôle interne de l'équipe La méthode de gestion stratégique de portefeuille constitue une solution parfaite pour la gestion des équipes internes.
C++
peut assurer une confidentialité maximale des politiques, et les chercheurs en investissement n’ont pas à s’inquiéter des fuites de politiques ; Trading multi-comptes ( configuration multi-produits ) Pour les combinaisons de stratégies dans différents cycles de marché, l'équipe moyenne disposera d'une combinaison de stratégies la plus adaptée pour le moment. Cependant, au cours d'une même période, l'équipe peut gérer plusieurs comptes en même temps, mais en fait, les combinaisons de stratégies utilisées par ces comptes sont les mêmes. A l'heure actuelle, l'architecture d'exécution M+1+N fournie par la plateforme WonderTrader
peut parfaitement répondre à cette demande.
Supposons que la taille du capital de base d'une certaine combinaison P soit de 5 millions, que le rendement attendu soit de 30 %, que le prélèvement maximum soit de 10 % et que le rapport rendement/risque soit de 3 : 1 ; et le montant des fonds sur le compte A est de 10 millions, et le montant maximum acceptable est de 10 %. Le compte B utilise également cette combinaison pour échanger P, et le montant des fonds est également de 10 millions, mais il peut Le retracement maximum accepté est de 20 % ; à l'heure actuelle, étant donné que les paramètres de risque du compte A sont cohérents avec le marché de base, l'augmentation de la taille du lot du compte A est la taille du capital/taille du fonds du marché de base = 1 000 W/500 W = 2. fois ; le compte B peut le tolérer. Le prélèvement maximum est de 20 %, le ratio de taille du lot doit donc être doublé, c'est-à-dire que le compte B peut être attribué 4 fois.
Suivi multi-cibles Certaines plateformes de trading quantitatif qui utilisent des langages interprétés (tels que Python
) pour développer des modules de base sont capables de divers scénarios d'application lorsqu'il n'y a que quelques cibles. Mais lorsque le nombre de cibles à suivre atteint plus de 100, voire plus de 50, il ne peut pas répondre à la demande. D'une part, cela consomme beaucoup de ressources. En utilisant des mécanismes multiprocess
et autres, bien que chaque cible s'exécute indépendamment, des centaines de nouveaux processus seront créés pour des centaines de cibles, ce qui consomme beaucoup de mémoire et de CPU. , la stratégie est inefficace et il existe une sérieuse concurrence pour les ressources. Dans certaines circonstances, la réponse stratégique sera également plus lente. Le cœur de WonderTrader
est développé en C++
et le servo de données est conçu dès le début pour fournir des services à plusieurs combinaisons en même temps. En même temps, la stratégie et l'exécution sont séparées, et l'exécution du signal et le calcul de la stratégie s'exécutent de manière totalement indépendante. deux fils différents. Avec une telle architecture, les besoins de suivi multistandard peuvent être bien satisfaits.
Stratégie informatique intensive La quantité de calculs requis pour certaines stratégies est stupéfiante. La stratégie de sélection de titres est typique. Qu'elle utilise plusieurs facteurs ou fondamentaux, elle filtrera progressivement des milliers d'actions pour obtenir le pool d'actions cible final. De plus, certains cadres multistandards multifactoriels comportent également une grande quantité de calculs. Une telle stratégie nécessite énormément de calculs et prend beaucoup de temps. Le moteur SEL
de WonderTrader
est personnalisé pour répondre à ce besoin. Le moteur SEL
adopte un modèle asynchrone basé sur le temps. En enregistrant le calendrier de recalcul auprès du moteur (prenant en charge plusieurs cycles tels que intrajournalier, quotidien, hebdomadaire et mensuel), il déclenche le recalcul régulièrement, puis ajuste les positions cibles de plusieurs cibles. , produisant ainsi un signal.
Trading rapide WonderTrader
utilise C++
comme langage de développement de base sous-jacent. L'un des objectifs les plus importants est de rechercher des performances ultimes , de sorte que le trading à haute fréquence ou le trading rapide représente une très grande proportion dans les scénarios d'utilisation de WonderTrader
. WonderTrader
a ouvert un nouveau UFTEngine dans la version v0.9
, spécialement conçu pour les scénarios de trading extrêmement rapides. Différent du HFTEngine
d'origine, HFTEngine
cible les hautes fréquences générales et se concentre sur la fourniture de composants sous-jacents de haute performance à la couche d'application . Il prendra en compte davantage de problèmes de compatibilité et de problèmes d'amarrage de la couche d'application. Le délai du système est de 1 à 2 microsecondes. UFTEngine
est complètement séparé du projet WtCore
et ne fournit pas d'interfaces avec la couche application. Tout est développé et implémenté en C++
, et le délai système est inférieur à 200 ns .
Trading algorithmique WonderTrader
dispose d'un module d'entrée d'exécuteur indépendant WtExecMon
, sur lequel les utilisateurs peuvent mettre en œuvre le trading algorithmique. Dans l'architecture d'exécution M+1+N de WonderTrader
, la partie exécution 1+N est supprimée et peut être utilisée comme exécuteur de trading algorithmique indépendant . Lorsque les utilisateurs l'utilisent, en définissant la position cible de la cible spécifiée, l'unité d'exécution de l'algorithme peut passer des ordres de négociation selon l'algorithme prédéfini. Les utilisateurs peuvent ajouter plus d'unités d'exécution d'algorithmes en implémentant leur propre module WtExecFact
. La couche inférieure C++
efficace peut fournir une forte garantie pour l'effet d'exécution de l'unité d'exécution de l'algorithme.
wtpy
WonderTrader
, un sous-framework Python3
de WonderTrader
développé en utilisant Python3
Python
possède de nombreuses bibliothèques tierces très populaires et puissantes pour le traitement des données de séries chronologiques.Python
est très pratique pour l’écriture de code et le débogage. Il peut être exécuté directement sans compilation.Python
permettent également d'appliquer Python
à davantage de scénarios.wtpy
est une extension de WonderTrader
en langage Python
.wtpy
dispose également d'un puissant composant de service de surveillance intégré WtMonSvr
. Ce composant fournit une interface de surveillance webui
à distance, qui peut surveiller le fonctionnement de la combinaison de stratégies en temps réel. Il fournit également un service de planification automatique 24×7
pour protéger vos transactions. WonderTrader
WonderTrader
github
: https://github.com/wondertrader/wondertradergitee
: https://gitee.com/wondertrader/wondertraderwtpy
github
: https://github.com/wondertrader/wtpygitee
: https://gitee.com/wondertrader/wtpywtpy
: https://pypi.org/project/wtpy/ wtpy
peut être installé directement dans python3.8
ou supérieur. pip install wtpy --upgrade
WonderTrader
Wt4ElegantRL
utilisant wtpy
comme moteur de backtest sous-jacent https://github.com/drlgistics/Wt4ElegantRL wondertrader
pour recevoir des informations en temps réel de WonderTrader
610730738
(complet) Groupe 2 367916500
(veuillez star
avant de rejoindre, puis fournir votre nom d'utilisateur github
)WonderTrader
, veuillez consulter https://docs.wondertrader.com/WonderTrader
https://dumengru.github.io/docs_wondertrader/WonderTrader
de @ZzzzHeJ https://zzzzhej.github.io/WonderTrader-Learning-Notes/