Interruptions et limites de requêtes.
L’API rétablit le terminal. Vous gérez le client.
Télécharger l'exemple Python · PY ↓
Transcription étape par étape
- 0:00
Interruptions et limites de requêtes.
Ce tutoriel explique comment gérer les interruptions MT5 et les limites de requêtes : laisser l’API rétablir le service, reprendre le flux et réessayer les lectures sans risque. Nous utilisons de vraies réponses d’un compte de démonstration.
- 0:18
Vérifiez la session existante.
Ouvrez mt5.mrpc.pro. Conservez votre clé API et l’id du terminal. Cette réponse enregistrée de ConnectState affiche Connected, avec isConnected, isAlive et apiIsAlive à true. Le terminal fonctionne. Une coupure du navigateur ou une requête en échec ne signifie pas, à elle seule, qu’il faut créer un autre terminal.
- 0:46
Laissez agir la restauration automatique.
MetaRPC surveille les terminaux et tente de restaurer automatiquement les sessions actives éligibles, en conservant leur id. Votre application doit suspendre les opérations concernées et laisser le temps au service, plutôt que rappeler Reconnect ou ConnectEx en boucle. Vérifiez l’état à intervalles réguliers, puis l’accès au compte avec AccountSummary avant de reprendre. La restauration prend du temps ; elle n’est pas immédiate après chaque erreur.
- 1:18
Agissez selon la cause.
Une déconnexion volontaire, une session expirée, une suspension ou des identifiants incorrects appellent une action adaptée. Lisez la cause et corrigez les identifiants ou le problème du compte. Reconnect et ConnectByToken sont des outils de restauration explicite, pas une boucle autour de chaque requête. Si une session éligible reste indisponible, gardez les opérations en pause et transmettez au support le code d’erreur et l’heure.
- 1:52
Rétablissez le WebSocket du client.
Le terminal et le WebSocket de votre application sont deux connexions distinctes. Quand les lectures du compte fonctionnent, fermez le socket défaillant et ouvrez OnSymbolTick avec l’id enregistré et la clé API. Rétablissez les abonnements aux symboles. Ces vrais messages EURUSD contiennent bid, ask et les horodatages. Vérifiez l’arrivée de nouvelles données et évitez les flux en double. Un flux qui fonctionne peut rester ouvert.
- 2:27
Reconnaissez une limitation réelle.
Voici un véritable refus AccountSummary obtenu par un test de lecture limité. HTTP Status Code 200 signifie que l’API a renvoyé une réponse. Le champ error non nul contient TERMINAL_RATE_LIMIT_EXCEEDED et précise que l’appel n’a pas été exécuté. La limite observée était de trois cents appels hors trading par minute glissante, partagés par les clients de ce terminal. Consultez les limites actuelles au lieu de figer ce nombre dans le code.
- 3:02
Respectez le délai indiqué.
Dans cette réponse, error.properties contient la paire clé-valeur RetryAfterSeconds, avec la valeur 1. Attendez au moins une seconde, puis ajoutez un petit délai aléatoire avant de réessayer la lecture. Suspendez aussi les autres processus partageant le quota du terminal. Un nouveau refus implique de lire le nouveau délai. Pour HTTP Status Code 429, respectez l’en-tête Retry-After.
- 3:35
Reprenez progressivement.
Après l’attente, la vraie lecture réussit : HTTP Status Code 200, aucune erreur API et les données du compte de démonstration. Ne renvoyez pas toutes les lectures accumulées d’un seul coup. Mettez les informations répétées en cache, coordonnez le rythme entre processus et utilisez OnSymbolTick pour les cours. Une limitation impose d’attendre, pas de reconnecter le terminal.
- 4:03
Définissez des tentatives limitées.
L’exemple Python se limite à AccountSummary. Il réessaie uniquement les refus explicites de limitation ou d’occupation accompagnés d’un délai valide, ajoute un délai aléatoire et s’arrête après trois tentatives. Les autres erreurs remontent à l’appelant. Gardez les identifiants dans des variables d’environnement. Prévoyez une politique distincte et bornée pour les interruptions ; ne généralisez pas cette fonction aux connexions et aux opérations de trading.
- 4:37
Clarifiez une opération incertaine.
Si la réponse à une requête de trading se perd, le courtier peut déjà l’avoir traitée. La restauration automatique ne révèle pas son résultat. Une fois l’accès rétabli, consultez OpenedOrders et DealsHistory. Utilisez les tickets disponibles et comparez symbole, sens, volume et heure. Des opérations semblables peuvent se confondre : gardez une requête non résolue en pause au lieu de la renvoyer automatiquement.
- 5:09
Terminez proprement.
Lorsque vous terminez volontairement la session, arrêtez les abonnements et appelez Disconnect. Le flux de démonstration a été arrêté et le terminal déconnecté ; aucune opération n’a été modifiée. Retenez ceci : MetaRPC restaure les terminaux éligibles, le client rétablit son socket si nécessaire, attend en cas de limitation et clarifie tout résultat incertain avant une nouvelle opération.