Trading Window and Spread Guard
- Utilitaires
-
Kazuma Uezono
MQL5 / MQL4 / Pine Script v6 developer and active trader.
Seller on the MQL5 Market (indicators for MT4/MT5).
Services:
- TradingView Pine Script to MT5/MT4 conversion (bar-by-bar matching, with tester report)
- MT4 to MT5 migration - Version: 1.1
- Activations: 5
Trading Window and Spread Guard est un utilitaire pour MetaTrader 5 qui indique à vos propres Expert Advisors quand ne pas ouvrir de nouvelles transactions. Vous définissez jusqu'à cinq fenêtres d'arrêt (jour de la semaine et heure, par exemple le rollover quotidien, les heures de nuit peu liquides ou les heures où les spreads de votre courtier sont larges) et une limite de spread. Tant qu'une fenêtre est active, ou tant que le spread d'un symbole dépasse votre limite, le guard lève un drapeau que vos EA peuvent lire. En option, il peut aussi clôturer les positions ouvertes pendant que les nouvelles transactions étaient bloquées.
C'est un outil pour mettre le trading en pause, pas une stratégie de trading. Il ne cherche pas de bons moments pour trader, ne donne aucun signal d'achat ou de vente et n'ouvre jamais de position ni ne place d'ordre sur un compte réel ou démo. Il n'empêche pas les pertes : il peut seulement faire en sorte que vos EA sautent les nouvelles entrées, ou clôturer une nouvelle position après son ouverture. Les heures à éviter, et la décision de trader ou non et de quelle manière, restent les vôtres.
Avec les réglages par défaut, rien n'est actif : aucune fenêtre, limite de spread désactivée, clôture désactivée. Tant que vous ne remplissez pas les paramètres, le guard affiche seulement son panneau.
Important : vos EA doivent lire le drapeau. Un EA qui ne vérifie pas le drapeau continue de trader comme avant. La vérification tient en quelques lignes de code (ci-dessous). Pour un EA que vous ne pouvez pas modifier, seule l'option « Clôturer les positions ouvertes pendant le blocage » fonctionne, et elle clôture la position après son ouverture, ce qui coûte le spread et la commission.
Fonctionnalités
- Jusqu'à 5 fenêtres d'arrêt. Formats : 12:00-12:30 (chaque jour), Mon-Fri 23:50-01:15 (commence chaque jour indiqué et peut passer minuit), Mon,Wed,Fri 08:00-08:30, Fri 21:00-Mon 01:00 (une seule période sur plusieurs jours). Jours en anglais (Mon ou Monday, casse indifférente) ou en japonais ; All = chaque jour. La fin peut être 24:00. Les fenêtres qui se touchent ou se chevauchent sont fusionnées.
- Heures des fenêtres en heure du serveur (par défaut) ou en heure de cet ordinateur.
- Limite de spread en points : une valeur pour tous les symboles, plus des valeurs facultatives par symbole (par exemple GOLD=50,US30=300).
- Symboles : le symbole du graphique (par défaut), une liste, ou * = tous les symboles de l'Observation du marché (jusqu'à 100).
- Drapeaux pour vos EA sous forme de variables globales du terminal, avec des fonctions de lecture prêtes à l'emploi (TWG_Reader.mqh).
- En option : clôture des positions ouvertes pendant le blocage, uniquement pour les symboles et magic numbers que vous choisissez. Les positions qui existaient déjà au démarrage du guard ne sont jamais touchées.
- Panneau : état (OK ou BLOCKED et la raison), prochaine fenêtre avec compte à rebours, vos fenêtres, spread et limite, réglages de clôture, noms des drapeaux et dernier message. Anglais ou japonais (automatique selon la langue du terminal). Bouton de repli.
- Alertes popup et notifications push facultatives lorsqu'un arrêt commence ou se termine, qu'un spread devient trop large ou qu'une position est clôturée.
Paramètres principaux
- Stop windows : base horaire des fenêtres (heure du serveur / heure de l'ordinateur), Window 1 à Window 5 (vide = désactivé).
- Spread limit : ON/OFF (OFF par défaut), spread maximal en points (30 par défaut), maximum par symbole.
- Symbols and positions : symboles (vide = ce graphique, * = tous ceux de l'Observation du marché, ou une liste), clôturer les positions ouvertes pendant le blocage (OFF par défaut), clôturer seulement ces magic numbers (vide = tous, 0 = transactions manuelles).
- Flags : préfixe du nom des variables globales ("TWG" par défaut).
- Alerts (popup, push), Panel (affichage, langue, coin, décalages, taille de police), slippage maximal à la clôture, démonstration dans le testeur de stratégie.
- 23 paramètres en 7 groupes.
Fonctionnement
- Le guard vérifie toutes les 250 ms et écrit les drapeaux environ une fois par seconde ; votre EA voit donc un changement environ 1 à 2 secondes plus tard.
- Drapeaux (variables globales du terminal ; valeurs en heure UTC, en secondes ; "TWG" est le préfixe par défaut) :
- TWG.TIME : fin de la fenêtre d'arrêt en cours, 0 en dehors des fenêtres.
- TWG.SPR.<symbole> (par exemple TWG.SPR.EURUSD) : supérieur à l'heure actuelle tant que le spread de ce symbole dépasse la limite. Un drapeau par symbole surveillé.
- TWG.NEXT : début de la prochaine fenêtre d'arrêt. TWG.HB : dernière mise à jour (indique que le guard fonctionne).
- Un drapeau est actif tant que sa valeur est supérieure à TimeGMT().
- Vérification de base pour votre EA (même logique que TWG_Reader.mqh avec le préfixe par défaut) :
bool GuardBlocks(const string sym)
{
if(MQLInfoInteger(MQL_TESTER)) return false;
double now = (double)TimeGMT();
if(GlobalVariableGet("TWG.HB") < now - 30) return false; // guard not running
return GlobalVariableGet("TWG.TIME") > now || GlobalVariableGet("TWG.SPR." + sym) > now;
}
Avant chaque nouvelle entrée : if(GuardBlocks(_Symbol)) return;
- TWG_Reader.mqh ajoute TWG_IsBlocked, TWG_TimeBlocked, TWG_SpreadBlocked, TWG_SecondsLeft et TWG_GuardRunning. Le téléchargement du Market ne contient que l'EA ; le texte complet de ce fichier est publié dans les commentaires de ce produit. Dans le testeur de stratégie, ces fonctions répondent toujours « non bloqué », vos backtests ne changent donc pas.
- Le jour de la semaine est le jour où la fenêtre commence. "Mon-Fri 23:50-01:15" crée cinq fenêtres qui commencent du lundi 23:50 … au vendredi 23:50 et se terminent à 01:15 le lendemain. Le lundi 00:00–01:15 n'est pas couvert, car cette partie commencerait le dimanche. Pour couvrir le week-end et le lundi matin, ajoutez une deuxième fenêtre comme Fri 21:00-Mon 01:15. (Avec Fri 21:00-Mon 01:00, le lundi 01:00–01:15 reste ouvert.)
- « Ouverte pendant le blocage » signifie : l'heure d'ouverture de la position se trouve dans une fenêtre d'arrêt, ou le spread de son symbole dépassait la limite à ce moment-là (vérifié pour les positions de moins de 10 minutes).
- La clôture est envoyée dès que la nouvelle transaction apparaît dans le terminal.
- Vous pouvez lancer le guard sur plusieurs graphiques avec le même préfixe (par exemple pour surveiller différents symboles). Les drapeaux gardent alors la valeur la plus longue. Utilisez des préfixes différents si des groupes d'EA ont besoin de règles différentes.
Remarques et limites
- Aucune garantie. Le guard ne bloque pas les ordres lui-même. Seuls les EA qui vérifient le drapeau sautent les nouvelles entrées.
- Retirer le dernier guard lève l'arrêt. Quand vous le retirez ou fermez son graphique, il efface ses drapeaux immédiatement. Si le terminal s'arrête de façon inattendue, les fonctions de lecture considèrent le guard comme arrêté après 30 secondes. Par défaut, elles autorisent alors le trading. Si votre EA doit attendre quand le guard ne fonctionne pas, appelez TWG_IsBlocked(_Symbol, "TWG", true) (blockIfGuardStopped = true).
- Les drapeaux ont environ 1 à 2 secondes de retard. Un ordre envoyé dans la première seconde d'une fenêtre ou d'un pic de spread peut encore passer. Les pics de spread plus courts qu'une vérification peuvent être manqués.
- Les ordres en attente ne sont ni supprimés ni modifiés. Un ordre en attente exécuté pendant un arrêt ouvre une nouvelle position, qui n'est clôturée que si l'option de clôture est activée et que la position est dans le périmètre.
- Sur un compte netting, le volume ajouté à une position ouverte auparavant n'est pas une nouvelle position et n'est pas clôturé.
- Si le filtre de magic numbers est vide, l'option de clôture ferme aussi les transactions que vous ouvrez à la main dans le périmètre (magic 0 = transactions manuelles). Chaque clôture coûte le spread et la commission et peut se terminer par une perte. Le guard ne peut pas empêcher un autre EA d'envoyer des ordres ; si un EA continue d'ouvrir des transactions pendant un arrêt, chacune est clôturée.
- Les drapeaux de spread n'existent que pour les symboles surveillés. Si votre EA trade d'autres symboles, ajoutez-les à la liste ou utilisez *.
- Les heures des fenêtres suivent l'horloge choisie. L'heure du serveur change avec l'heure d'été de votre courtier ; l'heure de l'ordinateur suit ce PC.
- Les variables globales appartiennent à un seul terminal. Lancez le guard dans le même terminal MetaTrader 5 que vos EA.
- Le guard ne fonctionne que lorsque MetaTrader 5 est lancé et connecté. La clôture exige aussi que Algo Trading soit activé (bouton de la barre d'outils) et autorisé dans les réglages de l'EA.
- Testeur de stratégie : les drapeaux restent en mémoire uniquement. Quand le paramètre "Tester only: demo window and small demo positions" est activé (par défaut), le guard ouvre de petites positions de démonstration (lot minimal, magic 73190) : une avant une fenêtre, que le guard laisse ouverte, et une à l'intérieur, que le guard clôture aussitôt (la démonstration nettoie ses positions quelques minutes plus tard). Si aucune fenêtre n'est définie, il utilise une fenêtre de démonstration (30 minutes ou 2 barres, au plus une fois par jour). Le rapport du testeur ne montre que cette démonstration et n'est pas un résultat de trading ; il peut afficher une petite perte. Avec un très petit dépôt (par exemple 10 USD), il peut n'y avoir aucune transaction de démonstration. La démonstration ne s'exécute jamais sur un compte réel ou démo.
Compatibilité et support
- MetaTrader 5 uniquement (comptes hedging et netting). La version MetaTrader 4 est vendue séparément. Attachez-le à un seul graphique ; ajoutez d'autres graphiques seulement si nécessaire.
- Pas de DLL, pas d'internet, pas de serveur externe.
- Essayez d'abord tous les réglages sur un compte démo.
- Support par messages MQL5, réponse sous 3 jours ouvrés : installation, réglages, signalement de bugs et appel des fonctions de lecture. Nous ne pouvons pas conseiller quelles heures ou quels spreads éviter, donner d'avis sur le marché ou de décisions de trading, ni modifier votre EA à votre place.
- Aucun résultat de votre trading n'est promis ni sous-entendu.
