AIOMQL

Linda Hamilton
Libérer: 2025-01-23 00:27:12
original
417 Les gens l'ont consulté

AIOMQL

Présentation

Le package

aiomql est un cadre de trading algorithmique avancé qui améliore et étend les fonctionnalités de la bibliothèque intégrée MetaTrader5 Python (metatrader5). Son objectif est de simplifier le processus de création de robots de trading personnalisés tout en fournissant un riche ensemble d'outils et d'abstractions spécifiquement pour le trading algorithmique. aiomql Conçu dans un souci de flexibilité et d'adaptabilité, le framework peut répondre aux besoins d'une variété d'utilisateurs, de ceux qui recherchent une alternative asynchrone légère à l'intégration MetaTrader5 Python, aux développeurs créant des robots de trading multi-stratégies complexes.

Demande

Ce tutoriel présente la quatrième version du framework aiomql, qui offre des améliorations significatives par rapport aux versions précédentes en termes de vitesse, d'efficacité et de conception. L'un des points forts de cette version est l'inclusion d'une puissante fonctionnalité de backtesting, permettant aux utilisateurs de tester des stratégies de trading à l'aide de données historiques avant de les déployer en direct.

Bien que la connaissance des aiomql versions antérieures du framework puisse améliorer votre compréhension, ce n'est pas une condition préalable. Ce tutoriel est conçu pour être facilement compris même par les débutants qui n'ont jamais utilisé le framework. Cependant, pour bien comprendre et appliquer les concepts abordés, il faut une connaissance pratique de Python et une compréhension de base du trading algorithmique.

Bien que cet article soit principalement destiné à être une introduction au framework plutôt qu'un didacticiel étape par étape, il contient des extraits de code qui nécessitent Python 3.11. Si vous rencontrez des problèmes de compatibilité dans NumPy, vous pouvez les résoudre en installant une version prise en charge à l'aide de la commande suivante :

<code class="language-bash">pip install aiomql
pip uninstall numpy
pip install 'numpy<v2></v2></code>
Copier après la connexion

Organisation et structure de `aiomql`

aiomql Le framework est divisé en trois sous-packages principaux (core, contrib et lib), ainsi qu'un module de niveau supérieur utils.py qui fournit des fonctions utilitaires utilisées dans tout le framework. Pour plus de commodité, toutes les classes, fonctions, constantes et autres composants sont directement accessibles depuis le niveau supérieur.

Classe MetaTrader

Comme mentionné précédemment, la bibliothèque aiomql est la contrepartie asynchrone du package metatrader5. Cette fonctionnalité est implémentée via la classe MetaTrader, qui est un composant de base du framework. Cette classe réplique les fonctionnalités de la bibliothèque metatrader5, fournissant ses fonctions, constantes et types spécialisés sous forme de méthodes et de propriétés.

Caractéristiques principales

metatrader5 Les fonctions du package sont accessibles en tant que méthodes d'instance asynchrones dans la classe MetaTrader, conservant leurs noms d'origine. Cette conception garantit une intégration transparente pour les utilisateurs familiarisés avec la bibliothèque d'origine, tout en profitant des avantages de la programmation asynchrone.

La classe MetaTrader est conçue comme un gestionnaire de contexte asynchrone, simplifiant la gestion du terminal MetaTrader. Après avoir entré le contexte, il initialise automatiquement le terminal et effectue les opérations de connexion. À la sortie, il garantit un nettoyage et une déconnexion appropriés des ressources même si une erreur se produit. Cette structure fournit une méthode concise et efficace de gestion du cycle de vie, la rendant particulièrement adaptée aux flux de travail asynchrones.

Les versions non asynchrones de ces fonctions sont toujours accessibles, mais sont préfixées d'un trait de soulignement (_) pour indiquer qu'elles peuvent être traitées comme des méthodes privées.

MetaBackTester

MetaBackTester est une sous-classe de MetaTrader spécifiquement utilisée pour le backtesting. Il utilise une instance BackTestEngine, qui peut être fournie lors de l'initialisation ou récupérée de la configuration. Lorsque config.mode est défini sur "backtest", cette classe remplace automatiquement MetaTrader dans les applications qui reposent sur une connexion de terminal, garantissant une intégration transparente de la fonctionnalité de backtesting.

Base et _Base

Les classes

Base et _Base sont les composants de base qui forment les autres classes du framework, fournissant des utilitaires de base tels que la validation des données, la sérialisation et un accès transparent à MetaTrader ou MetaBackTester selon que le système est en trading en direct. ou mode backtesting Exemple. Bien que ces classes soient rarement utilisées directement, elles garantissent la stabilité et la fiabilité du système global en servant de base à des fonctionnalités plus spécialisées.

Base

La classe Base fournit de puissantes fonctions de traitement de données, axées sur la validation et la sérialisation. Lors de l'instanciation, seules les propriétés explicitement annotées dans le corps de la classe ou héritées d'une classe parent peuvent se voir attribuer des valeurs, et ces valeurs doivent être strictement conformes à leurs types définis, garantissant ainsi une gestion des données structurée et sécurisée.

Propriétés et méthodes importantes

  • exclude (set) : un ensemble de noms de propriétés à exclure lors de l'accès à la propriété ou de la génération d'une représentation par dictionnaire de l'objet.
  • include (set) : Une collection de noms d'attributs à inclure explicitement. Cette collection remplace la collection exclude si les deux collections sont fournies.
  • dict : Un attribut qui renvoie tous les attributs sous forme de dictionnaire, en appliquant les filtres spécifiés dans les collections exclude et include.
  • set_attributes(**kwargs) : Une méthode pour définir dynamiquement les propriétés d'une instance. Il valide les entrées et garantit qu’elles ont le bon type.
  • get_dict(exclude: set = None, include: set = None) : Une méthode qui renvoie les propriétés de l'instance sous forme de dictionnaire, permettant de spécifier les filtres exclude et include. Si les deux paramètres sont fournis, le paramètre include est prioritaire sur le paramètre exclude.

_Base

Cette classe est une sous-classe de Base avec des propriétés et des fonctionnalités supplémentaires spécifiquement pour la connexion aux terminaux.

Propriétés et méthodes importantes

  • config : Représente une instance de configuration. Cette propriété contient tous les paramètres de configuration nécessaires à l'exécution de la classe.
  • mt5 (MetaTrader | MetaBackTester) : Fournit une instance MetaTrader ou MetaBackTester, déterminée par la propriété config de l'objet mode. Le type d'instance dépend si le système est en mode de trading en direct (MetaTrader) ou en mode backtesting (MetaBackTester).

Constante

La bibliothèque MetaTrader5 organise son grand nombre de constantes en énumérations spécialisées, améliorant ainsi la clarté et la fonctionnalité pour les développeurs. Ces énumérations représentent diverses opérations de trading, types d'ordres, délais, etc., simplifiant leur utilisation en regroupant les constantes associées sous des catégories intuitives. Chaque énumération fournit des propriétés et, le cas échéant, des méthodes ou propriétés supplémentaires qui activent des fonctionnalités telles que la conversion, l'inversion ou la dérivation de valeurs. Cette organisation réduit les erreurs, améliore la lisibilité du code et facilite la gestion des constantes, notamment dans les applications de trading complexes.

Les énumérations telles que TradeAction, OrderFilling et TimeFrame encapsulent les constantes sous forme de valeurs entières tout en fournissant une représentation sous forme de chaîne de style Python pour une meilleure convivialité. Certaines énumérations (comme TimeFrame) contiennent des méthodes avancées pour convertir les secondes en intervalles prédéfinis ou accéder à toutes les valeurs possibles. En organisant systématiquement ces constantes, la bibliothèque MetaTrader5 garantit une expérience plus efficace et conviviale pour les développeurs, simplifiant l'interaction avec les opérations de trading et les données de la plateforme.

Modèle

Le module modèles fournit un ensemble bien organisé de classes de traitement de données construites sur la structure de la bibliothèque MetaTrader5. Toutes les classes héritent de la classe Base, qui ajoute des fonctionnalités telles que la validation des données, la sérialisation et le filtrage pour simplifier leur utilisation. Ces classes représentent diverses entités liées au trading telles que OrderSendResult, SymbolInfo et TradeRequest, permettant aux développeurs d'interagir efficacement avec l'environnement de trading de MetaTrader5.

Chaque classe encapsule des propriétés et caractéristiques spécifiques liées à son entité de transaction correspondante, garantissant une gestion des données robuste et structurée. Par exemple, SymbolInfo fournit des informations détaillées sur un instrument financier, tandis que TradeRequest permet la création et la soumission d'opérations de trading. Cette conception modulaire améliore la lisibilité, simplifie les flux de trading complexes et garantit la cohérence des données et la facilité d'utilisation pour les développeurs utilisant MetaTrader5 dans leurs applications.

TaskQueue

La classe

TaskQueue gère efficacement les tâches en arrière-plan d'un bot ou d'un backtester à l'aide d'instances asyncio.PriorityQueue pour une exécution simultanée. Il s'exécute en continu en arrière-plan, permettant une intégration transparente avec d'autres composants tels que la classe Trader qui l'utilise pour enregistrer les données d'exécution post-transaction. Les tâches sont ajoutées à la file d'attente via la méthode add, mais elles doivent d'abord être encapsulées dans un QueueItem qui contient les métadonnées de la tâche telles que les paramètres, la priorité et les exigences d'achèvement.

Avec un nombre configurable de travailleurs, des paramètres de délai d'attente et des priorités de tâches, TaskQueue garantit une gestion robuste des tâches et une gestion des erreurs. Il prend en charge les modes d'exécution limités ou infinis et peut nettoyer gracieusement les tâches restantes avant de les terminer en fonction de la priorité. Cette conception améliore le flux de travail en déchargeant et en gérant les opérations en arrière-plan de manière asynchrone, garantissant ainsi une fonctionnalité fluide et fiable des environnements de trading ou de test complexes.

Compte

La classe

Account est un singleton utilisé pour gérer les détails du compte du courtier, garantissant qu'une seule instance existe pendant la durée de vie de l'application. Il hérite de Base et _AccountInfo et fournit une interface structurée et conviviale pour accéder aux informations spécifiques au compte. Cette architecture garantit la cohérence et évite les instances en double, centralisant ainsi la gestion des comptes au sein de l'application.

En tant qu'AsyncContextManager, la classe Account simplifie la gestion des ressources en automatisant le processus d'initialisation et de nettoyage. En entrant dans son contexte, il initialise le terminal MetaTrader et se connecte au compte spécifié. À la sortie, il garantit que les ressources sont correctement fermées et nettoyées. Cette approche simplifiée améliore la fiabilité du traitement des ressources, rend la gestion des comptes plus intuitive et réduit le risque d'erreurs lors des opérations de trading.

Propriétés et méthodes importantes

  • connected (bool) : Indique si la connexion a réussi et si la connexion au terminal est active. Renvoie True si le compte est connecté.
  • refresh() : met à jour l'instance de compte en récupérant les derniers détails du compte depuis le terminal, garantissant ainsi que les données du compte restent à jour.

Gestion des risques et des actifs

La classe

RAM est chargée de gérer l'évaluation et la gestion des risques lors des activités de trading. Il possède des attributs tels que risk_to_reward, fixed_amount, min_amount, max_amount et risk, permettant aux traders de définir et de contrôler efficacement leur exposition au risque. Ces propriétés offrent la flexibilité de définir des paramètres de risque, des montants de risque minimum et maximum et des ratios risque/récompense pour chaque transaction.

Cette classe comprend des méthodes telles que get_amount, qui calcule le montant du risque pour chaque transaction en fonction de la marge disponible et du pourcentage de risque, et check_losing_positions et check_open_positions, qui garantissent que les pertes ou les montants des positions restent dans une plage prédéfinie. limites. En intégrant ces capacités, la classe RAM offre une approche globale de la gestion des risques, améliorant les capacités de prise de décision et promouvant des pratiques commerciales plus sûres.

Propriétés et méthodes importantes

  • risk (float) : Le pourcentage de capital à risque par transaction, exprimé sous forme d'entier (par exemple, 1 signifie 1 %). La valeur par défaut est 1.
  • risk_to_reward (float) : ratio risque-récompense, indiquant la relation entre le risque potentiel et la récompense. La valeur par défaut est 2.
  • fixed_amount (float) : le montant fixe du risque par transaction, s'il est défini, remplace les calculs basés sur le pourcentage.
  • get_amount() : calcule et renvoie le montant du risque pour chaque transaction en fonction des propriétés configurées telles que le risque, fixed_amount, min_amount et max_amount.
La classe

RAM est mieux utilisée dans la classe Trader, qui peut être utilisée avant de passer une commande.

Bougie et Bougies

Les classes

Candle et Candles sont des outils personnalisés de gestion des barres de prix récupérées depuis le terminal. La classe Candle encapsule les données d'une seule barre de prix, garantissant que les propriétés requises telles que l'ouverture, le haut, le bas et la fermeture (OHLC) sont présentes dans chaque instance. Il prend en charge les protocoles Python, notamment le hachage, l'itération et la comparaison, tout en fournissant des méthodes telles que keys() et values() pour gérer les propriétés. De plus, il ajoute dynamiquement les propriétés transmises lors de l'instanciation, permettant une personnalisation flexible.

La classe

Candles agit comme un conteneur pour plusieurs objets Candle, classés par ordre chronologique. Il utilise pandas DataFrame pour stocker et gérer ses données, permettant une intégration transparente avec des outils comme pandas-ta pour une analyse technique avancée. Cette classe constitue une base puissante pour développer des stratégies de trading en prenant en charge divers protocoles Python tels que le découpage et l'itération et en étendant les fonctionnalités via des propriétés spécialisées telles que les délais. Sa polyvalence garantit une utilisation fréquente dans des flux de travail analytiques complexes.

Propriétés et méthodes de la classe Candle

  • time (int) : heure de début du cycle de la bougie.
  • open (float) : Le prix d'ouverture de la bougie.
  • high (float) : Le prix le plus élevé atteint pendant la période des bougies.
  • low (float) : Le prix le plus bas atteint pendant la période des bougies.
  • close (float) : Le cours de clôture de la bougie.
  • tick_volume (float) : Nombre de ticks pendant la période de la bougie.
  • real_volume (float) : volume réel des échanges pendant la période des bougies.
  • spread (float) : propagation pendant la période de la bougie.
  • Index (int) : Une propriété personnalisée indiquant la position de la bougie dans la séquence.
  • set_attributes(**kwargs) : définit dynamiquement les propriétés de l'instance de bougie à partir des arguments de mot-clé fournis.
  • is_bullish() : Renvoie True si la bougie est haussière (le cours de clôture est supérieur ou égal au cours d'ouverture), False sinon.
  • is_bearish() : Renvoie True si la bougie est baissière (le cours de clôture est inférieur au cours d'ouverture), False sinon.
  • dict(exclude: set = None, include: set = None) : renvoie un dictionnaire d'attributs de bougie. Vous pouvez éventuellement utiliser la collection exclude ou include pour filtrer les attributs.

Propriétés et méthodes de la classe Bougies

  • Index (Series[int]) : pandas Série contenant les indices de toutes les bougies de l'objet.
  • time (Series[int]) : série pandas contenant toutes les durées de bougies dans l'objet.
  • open (Série[float]) : série pandas contenant les prix d'ouverture de toutes les bougies de l'objet.
  • high (Série[float]) : pandas Série contenant le prix le plus élevé de toutes les bougies de l'objet.
  • low (Série[float]) : pandas Série contenant le prix le plus bas de toutes les bougies de l'objet.
  • close (Série[float]) : pandas Série contenant les cours de clôture de toutes les bougies de l'objet.
  • tick_volume (Series[float]) : série pandas contenant les nombres de ticks de toutes les bougies de l'objet.
  • real_volume (Series[float]) : pandas Série contenant le volume réel de toutes les bougies de l'objet.
  • spread (Series[float]) : Série pandas contenant tous les spreads de bougies dans l'objet.
  • Candle (Type[Candle]) : Classe utilisée pour représenter une seule bougie au sein de l'objet.
  • timeframe (TimeFrame) : La période de temps de la bougie, calculée à partir de son horodatage.
  • data (DataFrame) : pandas DataFrame contenant les données de base pour toutes les bougies de l'objet.
  • rename(inplace=True, **kwargs) : Renommez les colonnes du DataFrame sous-jacent.
  • ta : accédez à la bibliothèque pandas-ta en effectuant des analyses techniques directement sur les bougies via l'attribut data.
  • ta_lib : Donne accès à la bibliothèque ta pour une analyse technique supplémentaire, utilisez-la avec des fonctions qui nécessitent que vous transmettiez des objets Series ou DataFrame comme arguments.
  • columns : renvoie les noms de colonnes du DataFrame sous-jacent.

Tiques et Tiques

Les classes

Ticks et Tick sont conçues pour gérer les données Tick du terminal de trading, similaire à la classe Candle. La classe Tick représente un seul Tick et ses propriétés incluent l'offre, la demande, le dernier prix et le volume, garantissant que chaque instance encapsule les données nécessaires pour un seul événement Tick. Il prend en charge la gestion dynamique des attributs et fournit un accès de type dictionnaire, ce qui le rend adaptable et facile à utiliser dans différents contextes.

La classe

Ticks agit comme un conteneur pour plusieurs objets Tick, stockant les données dans des pandas DataFrame pour une manipulation et une analyse efficaces. Il prend en charge l'itération, le découpage et diverses opérations de données, permettant une intégration transparente avec des outils tels que pandas-ta pour l'analyse technique. Cette classe est essentielle pour traiter de grandes quantités de données de ticks dans les systèmes de trading, fournissant une structure puissante pour l'analyse des données en temps réel ou historiques.

Symboles

La classe

_Symbol_ fournit une structure puissante pour encapsuler les données d'un instrument financier, prenant en charge les calculs et les opérations requis avant de lancer une transaction. En tant que sous-classe de _Base et SymbolInfo, il intègre un large éventail de propriétés et de méthodes pour gérer efficacement les instruments financiers. Cette classe peut être personnalisée pour différents instruments de différents courtiers, garantissant ainsi l'adaptabilité sur toutes les plateformes de trading.

La classe Symbol simplifie les tâches de trading complexes avec des méthodes utilitaires pour accéder aux données actuelles des Ticks, gérer la profondeur du marché et effectuer des conversions de devises. Il fournit la fonctionnalité permettant d'initialiser des symboles, de vérifier les volumes et de récupérer des taux ou des ticks historiques, ce qui en fait un élément important du développement d'une stratégie de trading. Sa conception garantit que les développeurs peuvent étendre et personnaliser son comportement pour répondre à des exigences commerciales spécifiques.

Propriétés et méthodes importantes

La classe

Symbol est une classe riche en fonctionnalités. Pour les besoins de cet article, je n’ai abordé que quelques-uns des plus importants que vous êtes le plus susceptible d’utiliser. tick et account sont les seules propriétés de la classe Symbol, contrairement à celles définies dans la classe parent SymbolInfo.

  • tick (Tick) : Représente le prix actuel Tick d'un instrument financier, fournissant des données de marché en temps réel.
  • account (Compte) : Instance du compte de trading courant associé au symbole.
  • __init__(*, name: str, **kwargs) : Initialiser l'instance de symbole. L'attribut name est obligatoire et doit correspondre au nom du symbole spécifié par le courtier dans le terminal.
  • initialize() : Remplit l'instance de symbole en récupérant le dernier tick de prix et les détails du terminal. En cas de succès, la propriété select est définie sur True et toutes les propriétés seront renseignées avec les données du serveur.
  • convert_currency(*, amount: float, from_currency: str, to_currency: str) : Convertit le montant spécifié d'une devise à une autre.
  • amount_in_quote_currency(*, amount: float) : Convertit le montant de la devise du compte vers la devise de cotation si la devise du compte est différente de la devise de cotation. Cette méthode est particulièrement utile pour effectuer des calculs de gestion des risques.
  • info_tick : Récupérez le cours actuel d'un instrument financier.
  • symbol_select(enable: bool = True) : ajoute ou supprime des symboles de la fenêtre MarketWatch.
  • check_volume(volume: float) : Vérifiez que le volume de transactions spécifié est dans les limites autorisées et ajustez si nécessaire.
  • round_off_volume(volume: float, round_down: bool = False) : Arrondit le volume au pas valide le plus proche.
  • compute_volume : Calcule le volume approprié pour une transaction.
  • copy_rates_from_pos(timeframe, start_position=0, count=500) : Obtenez des barres à partir d'un index spécifique.
  • copy_rates_from(timeframe, date_from, count=500) : Récupérez les taux de change historiques (barres) à partir de la date spécifiée.
  • copy_ticks_from(date_from, count=100, flags=CopyTicks.ALL) : Obtenez les données Tick à partir de la date spécifiée.
La classe

Symbol est un outil polyvalent et riche en fonctionnalités conçu pour gérer les instruments financiers, fournissant les méthodes nécessaires pour récupérer et transformer les données. Bien que cette introduction se concentre sur des fonctions clés telles que l'initialisation, la conversion de devises et la récupération des dernières données Tick, ses nombreuses autres fonctionnalités seront explorées dans les discussions futures. Cela inclut son intégration dans des systèmes de trading algorithmiques et la démonstration de son adéquation à divers cas d'utilisation.

Une contribution notable est la classe ForexSymbol, qui est une extension spécialisée de la classe Symbol et est conçue spécifiquement pour le trading Forex. Cette sous-classe est conçue pour répondre aux exigences uniques du trading de paires de devises, démontrant ainsi la flexibilité et le potentiel de personnalisation de la classe Symbol dans différents scénarios de trading.

Commander

La classe

Order simplifie la gestion des ordres de trading en combinant les propriétés et méthodes associées, facilitant ainsi la vérification, la validation et l'envoi des ordres. En tant que sous-classe de _Base et TradeRequest, il hérite de fonctionnalités puissantes tout en offrant une commodité supplémentaire. En définissant des valeurs par défaut raisonnables pour des propriétés telles que action, type_time et type_filling, il minimise la duplication de code lors de l'instanciation, garantissant ainsi l'efficacité et la clarté des opérations de transaction.

Ce cours simplifie les tâches principales telles que la récupération des commandes en attente, la vérification de l'adéquation des fonds et le calcul de la marge, des profits et des pertes. L'intégration de méthodes telles que send() et check() garantit un flux de travail transparent pour le lancement et la validation des opérations de trading, tandis que des utilitaires comme calc_margin() et calc_profit() facilitent l'analyse pré-négociation. Sa conception en fait un outil indispensable à la mise en œuvre efficace de stratégies de trading algorithmiques.

Propriétés et méthodes importantes de la classe Order

  • __init__ : Initialisez l'instance de commande à l'aide d'arguments de mots-clés qui doivent être des attributs TradeRequest valides. La valeur par défaut pour action est DEAL, pour type_time est DAY et pour type_filling est FOK, bien qu'elles puissent être personnalisées lors de l'instanciation.
  • check(**kwargs) : Vérifiez votre commande avant de la passer. Tous les arguments de mot-clé fournis mettront à jour l’objet de requête.
  • send : Envoyez la commande au terminal pour exécution.
  • calc_margin : Calcule la marge requise pour effectuer une transaction.
  • calc_profit : Calculez le profit potentiel de la transaction.
  • calc_loss : Calculez la perte potentielle d'une transaction.
  • request : Cette propriété renvoie l'objet de demande de transaction sous forme de dictionnaire.

Commerçant

La classe

Trader agit comme une classe de base abstraite riche en utilitaires pour gérer les ordres commerciaux. Il fournit des méthodes de base pour créer et gérer différents types de commandes, tout en gérant les processus clés tels que la vérification, le routage et l'enregistrement des transactions. Cette classe doit implémenter des méthodes place_trade dans ses sous-classes pour garantir une flexibilité d'adaptation à des stratégies de trading spécifiques.

Les fonctionnalités clés incluent des moyens de définir des niveaux de stop loss et de take profit en fonction des pips ou des pips, de créer des ordres avec ou sans niveaux de stop loss et de calculer le montant approprié pour une transaction. Cette classe s'intègre aux instances Symbol correctement initialisées et aux instances RAM facultatives pour l'évaluation des risques, permettant une gestion transparente des transactions. Il prend également en charge l'enregistrement des résultats des transactions pour faciliter le suivi et l'analyse des transactions exécutées.

Propriétés et méthodes importantes de la classe Trader

  • modify_order(**kwargs) : Modifiez les attributs de la commande à l'aide des paramètres de mots-clés fournis.
  • modify_ram(**kwargs) : met à jour les propriétés de l'instance RAM (Risk Assessment and Management) à l'aide des arguments de mots clés fournis.
  • check_order : Vérifiez votre commande avant de la passer pour vous assurer qu'elle répond aux conditions nécessaires.
  • send_order : Envoyez l'ordre au courtier pour exécution.
  • record_trade(*, result: OrderSendResult, parameters: dict = None, name: str = "") : enregistrez les détails de la transaction dans un fichier CSV ou JSON et déléguez la tâche à l'instance config.task_queue. Comprend les résultats de trading et les paramètres de stratégie (si fournis).
Le package

contrib est livré avec deux traders simples, ScalpTrader et SimpleTrader, où ScalpTrader est indiqué ci-dessous.

Séance et Séances

Les classes

Session et Sessions fournissent un cadre puissant pour gérer et exécuter les temps de trading. Session représente une période de temps définie en UTC, avec une heure de début et une heure de fin, et peut être spécifiée sous forme d'entier ou d'objet datetime.time. Ces sessions peuvent déclencher des actions prédéfinies, telles que la clôture de toutes les transactions ou uniquement les positions rentables/perdantes, ou des actions personnalisées spécifiées par l'utilisateur. Cela permet à la stratégie d'avoir un contrôle précis sur l'activité de trading pendant une période spécifique.

La classe

Sessions regroupe plusieurs instances Session dans une collection triée, ce qui facilite la gestion des périodes d'échange qui se chevauchent ou se suivent. Il agit comme un gestionnaire de contexte asynchrone, surveillant en permanence l'heure actuelle pour déterminer les sessions actives. S'il n'y a pas de sessions actives, l'instance Sessions suspend les opérations de trading jusqu'au début de la prochaine session programmée, garantissant ainsi le respect de la fenêtre de trading spécifiée.

En intégrant ces classes, les stratégies de trading peuvent facilement incorporer des règles basées sur le temps, augmentant ainsi leur précision et leur fiabilité. Cette fonctionnalité est particulièrement utile dans les systèmes automatisés qui nécessitent le strict respect des heures de négociation (comme le trading sur le Forex ou en bourse) ou dans les systèmes automatisés qui nécessitent que les opérations soient alignées sur des intervalles de temps prédéfinis.

Propriétés et méthodes importantes de la classe Session

  • start (datetime.time) : L'heure de début de la session en UTC.
  • end (datetime.time) : L'heure de fin de la session en UTC.
  • on_start (str) : Spécifie l'action à effectuer au démarrage de la session, telle que "close_all", "close_win", "close_loss" ou une action personnalisée.
  • on_end (str) : Spécifie l'action à effectuer à la fin de la session, similaire à on_start.
  • custom_start (Callable) : Fonction personnalisée facultative à exécuter au démarrage de la session.
  • custom_end (Callable) : Fonction personnalisée facultative à exécuter à la fin de la session.
  • name (str) : le nom de la session, s'il n'est pas fourni, est par défaut une combinaison d'heure de début et d'heure de fin.
  • in_session : Vérifiez si l'heure actuelle est dans la session.
  • begin : Effectuez l'action spécifiée par on_start ou custom_start au début de la session.
  • close : Effectuez l'action spécifiée par on_end ou custom_end à la fin de la session.
  • duration : renvoie la durée de la session sous forme d'objet Durée avec des heures, des minutes et des secondes.
  • close_all : Fermez toutes les positions ouvertes.
  • close_win : Fermez toutes les positions rentables.
  • close_loss : Clôturez toutes les positions perdantes.
  • action(action: str) : Effectuez l'action spécifiée, comme fermer une position ou déclencher une fonction personnalisée.
  • until : Calcule le temps en secondes depuis l'heure actuelle jusqu'au début de la session.

Propriétés et méthodes importantes de la classe Sessions

  • sessions (list[Session]) : Une liste d'objets Session triés par leur heure de début.
  • current_session (Session | Aucune) : La session actuellement active (le cas échéant).
  • find(moment: datetime.time = None) : recherchez et renvoyez les conversations contenant l'heure spécifiée. Si aucune heure n’est fournie, l’heure actuelle est utilisée.
  • find_next(moment: datetime.time = None) : Recherchez et revenez à la prochaine session après l'heure spécifiée. Si aucune heure n’est fournie, la valeur par défaut est l’heure actuelle.
  • check : Surveiller la session en cours. S'il n'y a pas de session active, il attendra le démarrage de la prochaine session.
  • config : Instance de configuration associée à la session, déterminant le mode (live ou backtest).

Stratégie

La classe

Strategy est le cadre de base pour développer des stratégies de trading et peut être intégrée de manière transparente avec Bot et Backtester. En tant que classe de base abstraite, elle est dotée de nombreuses fonctionnalités mais doit implémenter des méthodes trade dans les classes dérivées. Cette méthode constitue la logique commerciale de base de la stratégie. La classe Strategy agit comme un gestionnaire de contexte asynchrone et exécute la stratégie à l'aide de la méthode run_strategy, en appelant la méthode live_strategy ou backtest_strategy selon le mode de fonctionnement.

Avec des attributs tels que symbol, sessions et parameters, cette classe garantit que la stratégie peut être personnalisée et adaptée à des instruments financiers et à des sessions de trading spécifiques. L'intégration de méthodes collaboratives multitâches telles que sleep et delay garantit que les stratégies restent efficaces et synchronisées avec les mises à jour du marché dans un environnement en direct ou backtest. Cela fait de la classe Strategy un outil puissant et flexible pour créer des systèmes de trading complexes.

Propriétés et méthodes

  • name (str) : Le nom de la stratégie. S’il n’est pas fourni explicitement, la valeur par défaut est le nom de la classe.
  • symbol (Symbole) : L'instrument financier associé à la stratégie.
  • parameters (dict) : Dictionnaire des paramètres spécifiques à la politique.
  • sessions (Sessions) : La séance de trading au cours de laquelle la stratégie est active.
  • mt5 (MetaTrader | MetaBackTester) : Instance de MetaTrader ou MetaBackTester en fonction du mode (live ou backtest).
  • config : Paramètres de configuration de la politique.
  • running (bool) : indique si la stratégie est actuellement en cours d'exécution.
  • backtest_controller (BackTestController) : Contrôleur utilisé pour gérer les opérations de backtest.
  • current_session (Session) : La session de trading actuellement active.
  • __init__(symbol: Symbol, params: dict = None, sessions: Sessions = None, name: str = "") : Utilisez les symboles, les paramètres et la stratégie d'initialisation de session donnés.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal