Tolérance aux pannes
Le terme « tolérance aux pannes » fait référence à la capacité d'un système automatisé à continuer de fonctionner en cas de défaillance. Pour les algos cTrader, la tolérance aux pannes signifie que les processus hébergeant les cBots, les plug-ins et les indicateurs peuvent continuer à fonctionner même en cas d'erreurs.
Cet article explique comment fonctionne la tolérance aux pannes et décrit les principaux avantages que cette fonctionnalité offre aux traders algorithmiques.
La tolérance aux pannes en une minute !
- Selon les règles de tolérance aux pannes, lorsqu'il rencontre une exception, un algo continue de fonctionner. Cette fonctionnalité rend les algos cTrader encore plus stables et offre des opportunités pour affiner la façon dont votre code est exécuté.
- Les algos peuvent désormais générer automatiquement les exceptions qu'ils rencontrent dans le journal des opérations, fournissant des informations précieuses que vous pouvez utiliser pour affiner votre code.
- Vous pouvez utiliser la méthode
OnException(Exception exception)pour personnaliser la façon dont vos algos réagissent aux exceptions. Utilisez ce gestionnaire d'événements pour créer des extensions fiables et efficaces.
Règles de tolérance aux pannes
En bref, la tolérance aux pannes garantit que tous les algos suivent les règles détaillées ci-dessous :
- Lorsqu'il rencontre une exception, un algo doit continuer à fonctionner.
- Chaque exception qui se produit pendant le fonctionnement d'un algo doit être enregistrée.
- Les utilisateurs doivent avoir la possibilité d'introduire des règles personnalisées déterminant comment les algos gèrent diverses exceptions.
La tolérance aux pannes permet aux algos d'ignorer essentiellement toutes les erreurs qui ne menacent pas de faire planter leurs processus. Bien que les exceptions puissent toujours empêcher l'exécution du code, la tolérance aux pannes réduit considérablement le nombre de fois qu'un algo peut planter de manière inattendue.
La méthode OnException()
Selon les règles de tolérance aux pannes, les algos doivent ignorer les exceptions. Cependant, vous pouvez également personnaliser la façon dont vos algos réagissent à certaines exceptions, ou remplacer entièrement les comportements de tolérance aux pannes par défaut.
Pour ce faire, utilisez la méthode OnException(). Elle agit comme le gestionnaire dédié pour toutes les exceptions non gérées. Sa signature par défaut est la suivante :
1 2 3 4 | |
Considérez l'exemple suivant dans lequel la méthode OnException() est utilisée pour modifier la façon dont un cBot réagit à l'exception NullReferenceException.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | |
Pour déclencher l'exception NullReferenceException, nous faisons en sorte que notre cBot ferme une position courte qui peut ne pas exister. Lorsqu'il rencontre l'exception spécifiée, notre cBot est censé afficher une MessageBox affichant un texte explicatif, afin que nous puissions réagir rapidement à cette exception et ajuster les comportements de notre cBot.
Notez que le gestionnaire OnException() n'est pas censé gérer les exceptions qui se produisent pendant l'invocation de cette méthode. Néanmoins, ces exceptions sont toujours enregistrées dans le journal des événements.
Avantages de la tolérance aux pannes
La tolérance aux pannes est un aspect crucial du fonctionnement du trading algorithmique dans cTrader en offrant les avantages suivants.
- La tolérance aux pannes améliore considérablement la fiabilité des algos et offre de nouvelles opportunités pour affiner votre approche du trading automatisé.
- Comme les algos peuvent afficher les exceptions qu'ils rencontrent dans le journal des événements, vous pouvez facilement déterminer les conditions dans lesquelles un algo a rencontré une erreur particulière.
- En permettant la gestion des événements d'exception, la méthode
OnException()peut être utilisée pour perfectionner les comportements de vos algos et améliorer leur fiabilité.
Gérer les plantages
Comme indiqué précédemment, plusieurs erreurs peuvent faire planter des processus entiers. Elles sont les suivantes :
- L'exception
OutOfMemoryException. - L'exception
StackOverflowException. - Toute exception non gérée qui se produit dans un thread séparé.
- Toute autre erreur qui pourrait menacer de faire planter le processus dans lequel un algo s'exécute.
Lorsqu'il rencontre l'une des erreurs ci-dessus, une instance d'indicateur sera arrêtée ; elle ne sera pas redémarrée automatiquement. Toutefois, l'exception sera toujours enregistrée dans le journal.
En revanche, lorsqu'un processus hébergeant une instance de cBot plante, il sera redémarré automatiquement (l'exception étant enregistrée dans le journal).
Instances multiples dans un seul processus
Il existe des cas où un seul processus peut héberger plusieurs instances de cBot. Si l'une de ces instances rencontre une exception qui la fait planter, l'ensemble du processus plantera également. Au redémarrage, le processus redémarrera toutes les instances de cBot qu'il hébergeait à l'origine.
Résumé
La tolérance aux pannes offre plusieurs opportunités précieuses pour rendre les algorithmes encore plus stables et efficaces. Le gestionnaire OnException() fournit une couche de contrôle supplémentaire sur la façon dont vos algorithmes réagissent aux exceptions.