Le dépôt GitHub d’OctoBot
Le code d’OctoBot se trouve dans un unique monorepo Python, hébergé sous l’organisation Drakkar-Software sur GitHub : github.com/Drakkar-Software/OctoBot (branche dev pour le développement, branche master pour la version stable).
La racine du dépôt contient l’initialisation du programme principal ainsi que la gestion des données de la
communauté. Tout le reste est réparti en packages, chacun dédié à un aspect différent du logiciel, dans son
propre dossier sous packages. Les packages sont construits avec Pants et
déclarés dans les root_patterns du fichier pants.toml à la racine du dépôt.
Chacun de ces packages était auparavant un dépôt GitHub distinct. Ces dépôts sont maintenant archivés et en lecture seule, tout le développement se fait dans le monorepo.
- packages/trading pour tout ce qui touche au trading et aux exchanges : connexions aux exchanges, récupération et mise à jour de leurs données, gestion des ordres, des trades et des portefeuilles.
- packages/evaluators pour tout ce qui concerne les évaluateurs et les stratégies.
- packages/services pour tout ce qui concerne les interfaces : graphique (web) et texte (telegram), l’envoi des notifications et la gestion des données d’analyse sociale, avec le moteur de mise à jour qui traite les nouvelles données d’un flux externe (par exemple reddit) dès qu’elles sont disponibles.
- packages/backtesting pour le moteur de backtesting et sa planification, ainsi que pour la collecte des données historiques et leur stockage unifié.
- packages/tentacles les tentacles : évaluateurs, stratégies, modes de
trading, interfaces, notificateurs, flux de données externes (reddit, telegram, etc.), gestion des formats
de données de backtesting et comportements spécifiques à chaque exchange. C’est la source des tentacles, le
dossier
tentaclesutilisé par un OctoBot en cours d’exécution est généré à partir de celle-ci. - packages/tentacles_manager pour l’installation, la mise à jour des tentacles et les interactions avec elles : obtenir la documentation, la configuration ou les dépendances d’une tentacle.
- packages/commons pour les outils et constantes communs utilisés par chacun des autres packages.
- packages/async_channel qui est utilisé par OctoBot comme framework de base pour chaque transfert de données au sein du bot. Cela permet une architecture très optimisée et évolutive, qui s’adapte à n’importe quel système tout en consommant très peu de CPU et de RAM.
- packages/agents pour les agents IA d’OctoBot : les agents individuels, les équipes d’agents et leur stockage.
- packages/copy pour le copy trading : la réplication des ordres et le rééquilibrage du portefeuille afin de suivre un compte copié.
- packages/flow pour le moteur d’automatisations d’OctoBot : les jobs, les parsers et la logique derrière les automatisations.
- packages/node pour OctoBot Node, qui permet d’exécuter n’importe quel OctoBot n’importe où en tant que service géré à distance.
- packages/protocol pour les structures de données partagées entre les environnements d’exécution d’OctoBot (comptes, ordres, trades, automatisations et leurs enums). Elles sont générées depuis un document OpenAPI vers des modèles Python, TypeScript et Rust.
- packages/sync pour le composant serveur qui permet aux OctoBot Node de servir de point de synchronisation personnel, avec son authentification par wallet et ses collections de données utilisateur chiffrées.
- packages/binary pour créer et publier les binaires Windows, Linux et MacOS de chaque version d’OctoBot.