Stop Level et Freeze Level : pourquoi le SL est refusé
Sommaire
- Si le SL ne se place pas, ce n'est pas forcément un bug de l'EA
- Fonctionnement : deux « distances minimales »
- Stop Level
- Freeze Level
- « 0 » ne veut pas dire « sans restriction »
- Les distances s'élargissent lors des annonces
- Procédure de vérification et checklist
- Contrôle de distance minimale côté EA
- Limites et points d'attention
- En résumé
Si le SL ne se place pas, ce n'est pas forcément un bug de l'EA
Allons droit au but : quand le SL ne peut pas être placé ou déplacé, la cause n'est le plus souvent pas la logique de l'EA, mais une « distance minimale » définie par les spécifications du symbole. MT5 impose deux règles : le « Stop Level », qui fixe de combien le SL ou le TP doit être éloigné du prix actuel, et le « Freeze Level », qui interdit toute modification lorsque le prix s'approche du SL, du TP ou d'un ordre en attente.
Le piège, c'est que ces distances ne sont pas toujours les mêmes. Un SL qui passe sans problème en temps normal peut être rejeté juste après une annonce économique. Quand nous développons un EA, nous vérifions systématiquement cette distance avant d'envoyer l'ordre. Cet article présente le fonctionnement, la procédure de vérification et les limites des contre-mesures côté EA.
Comparaison courtiers recommandés →
🎁 Télécharger EA gratuit📧 Cours gratuit par e-mail (8 e-mails) + pack de 13 indicateurs MT5 réservé aux abonnés
* Confidentialité strictement protégée. Vous pouvez vous désabonner à tout moment.
Fonctionnement : deux « distances minimales »
Stop Level
Le Stop Level (SYMBOL_TRADE_STOPS_LEVEL) exprime, en points, la distance minimale entre le prix actuel et le SL ou le TP. Pour une position acheteuse, la mesure part du Bid, prix de référence pour la clôture ; pour une position vendeuse, elle part de l'Ask. Si vous essayez de placer un SL plus proche, le serveur rejette l'ordre et MT5 renvoie le code « Invalid stops » (10016).
Freeze Level
Le Freeze Level (SYMBOL_TRADE_FREEZE_LEVEL) est la distance en deçà de laquelle un ordre ne peut plus être modifié ni supprimé lorsque le prix s'approche du SL, du TP ou du prix d'un ordre en attente. Lorsqu'un EA de trailing stop essaie de déplacer le SL juste avant la clôture et se voit refuser, c'est généralement la cause. Le code renvoyé est « Frozen » (10029).
| Élément | Signification | Opérations concernées | Code de rejet principal |
|---|---|---|---|
| Stop Level | Distance minimale entre le prix actuel et le SL/TP | Définition du SL/TP à l'ouverture, modification du SL | Invalid stops (10016) |
| Freeze Level | Distance en deçà de laquelle toute modification est interdite quand le prix approche du SL/TP ou d'un ordre en attente | Modification du SL/TP, modification ou annulation d'un ordre en attente | Frozen (10029) |
« 0 » ne veut pas dire « sans restriction »
Même si les spécifications affichent un Stop Level de 0, cela ne garantit pas que vous pouvez placer le SL aussi près que vous le souhaitez. Certains courtiers semblent appliquer côté serveur une autre règle dans ce cas (par exemple une distance basée sur le spread). Nous n'avons pas pu vérifier l'implémentation de tous les courtiers, c'est pourquoi nous adoptons une approche prudente : « 0 = au moins la distance du spread ».
Les distances s'élargissent lors des annonces
Le Stop Level et le Freeze Level ne sont pas des valeurs fixes : le courtier peut les modifier. Certains les élargissent temporairement autour des annonces économiques importantes, juste après l'ouverture du lundi ou pendant la période de rollover. Le spread s'élargit en général aux mêmes moments ; un SL de vente, mesuré à partir de l'Ask, doit alors être placé plus loin que ne l'exigerait le seul mouvement du marché.
Autrement dit, même si les spécifications habituelles vous laissent penser que « cette distance suffit », l'ordre peut être refusé au moment le plus critique. Avec un EA qui parvient à entrer en position sans SL, vous risquez en outre de vous retrouver avec une position totalement exposée.
Procédure de vérification et checklist
Vérifiez les points suivants sur votre compte :
- Ouvrir les spécifications du symbole : dans la fenêtre Market Watch, clic droit sur le symbole → « Spécification ». Notez les valeurs de « Stop Level » et « Freeze Level » (en points).
- Convertir les points en prix : la valeur d'un point diffère entre XAUUSD et USDJPY ; vérifiez le nombre de décimales avant de convertir en écart de prix.
- Comparer avec la distance de SL de l'EA : vérifiez que la distance de SL utilisée dans les paramètres ou la logique de l'EA est nettement supérieure au Stop Level augmenté du spread.
- Revérifier autour des annonces : ouvrez le même écran juste avant la publication et regardez si les valeurs changent. Impossible de savoir à l'avance si votre courtier le fait : il faut aller voir.
- Consulter les journaux : dans les onglets « Journal » et « Experts », vérifiez l'absence de messages « Invalid stops » ou « Frozen ». Nous détaillons aussi la façon de diagnostiquer un ordre rejeté dans EA et savoir-faire MT5.
Pour la configuration de l'EA elle-même, consultez Configuration d'un EA ; pour les différences de conditions de trading entre courtiers, la comparaison des courtiers Forex.
Contrôle de distance minimale côté EA
Dans nos EA, juste avant d'envoyer un ordre, nous effectuons les contrôles suivants, dans cet ordre :
- Récupérer à chaque fois le Stop Level, le Freeze Level et le spread du moment (ne jamais réutiliser une valeur lue une seule fois au démarrage)
- Définir la distance minimale comme la plus grande des deux valeurs (Stop Level et Freeze Level), à laquelle on ajoute le spread et une petite marge
- Si le SL est plus proche que cette distance, ne pas élargir le SL de force, mais renoncer à l'entrée
Nous ne concevons pas l'EA pour élargir automatiquement le SL, car un SL plus large rend la perte par trade supérieure à celle prévue. Si la taille de lot est calculée à rebours à partir de la distance de SL, élargir uniquement le SL fait dérailler le pourcentage de risque. Renoncer réduit les opportunités, mais nous estimons que c'est préférable à prendre un risque non prévu.
Limites et points d'attention
Ce contrôle ne résout pas tous les problèmes.
- Difficile à reproduire en backtest : d'après notre compréhension, le testeur de stratégie de MT5 utilise les spécifications actuelles du symbole et ne reproduit pas l'élargissement des distances lors d'annonces passées. Plus le SL d'un EA est court, plus l'écart entre résultats de test et résultats réels risque d'être important. Par exemple, GOLD TRIPWIRE a une durée de détention moyenne de 0:21:12 en backtest : nous le classons parmi les types sensibles à ce genre d'écart.
- Les trades écartés modifient les résultats : parmi les trades que le contrôle fait écarter, certains auraient été gagnants. Avec ce contrôle, vous ne tradez plus exactement comme dans le backtest.
- Les conditions changent aussi au moment de l'envoi : elles peuvent évoluer entre le moment où le contrôle est passé et celui où l'ordre atteint le serveur ; on ne peut donc pas ramener les rejets à zéro.
- Le SL lui-même peut subir du slippage : même si le SL est bien placé, en cas de brusque mouvement du marché, l'exécution peut se faire à un prix moins favorable que le SL. Le contrôle de distance minimale n'est pas une protection contre le slippage.
En résumé
- Si le SL ne peut pas être placé, la cause est le plus souvent le Stop Level (distance minimale) ou le Freeze Level (distance de modification interdite) du symbole
- En cas de rejet, le code renvoyé est « Invalid stops » ou « Frozen »
- Un Stop Level de 0 ne signifie pas toujours « sans restriction » : éloignez-vous au moins de la valeur du spread
- Certains courtiers élargissent les distances et le spread autour des annonces, et l'ordre peut être refusé au moment le plus critique
- Côté EA, notre conception consiste à relever les valeurs du moment à chaque fois, à les contrôler et, si la distance est insuffisante, à renoncer à l'entrée plutôt qu'à élargir le SL
- Le backtest reproduit mal les variations passées de ces distances ; plus le SL d'un EA est court, plus il faut surveiller l'écart en exploitation réelle
Associés
2026-05-18
Dimensionnement de position pour les EA
2026-11-06
MT5 : codes de rejet d'ordre et ordre de diagnostic
2026-11-04
MagicNumber : bien gérer plusieurs EA sur un même compte
2026-11-02
MT5 : ordres, positions et pièges du compte netting
📧 Cours gratuit par e-mail (8 e-mails) + pack de 13 indicateurs MT5 réservé aux abonnés
* Confidentialité strictement protégée. Vous pouvez vous désabonner à tout moment.
Une question sur les EA ou le Forex ?
Vous pouvez la publier sur le forum de trading Nattzy (inscription gratuite). Les questions qui dépassent cet article sont aussi les bienvenues : réglages d'EA, choix du courtier, etc.
Poser ma question sur Nattzy ↗