Voir comment télécharger gratuitement des robots de trading
Retrouvez-nous sur Twitter !
Rejoignez notre page de fans
Un script intéressant ?
Poster un lien vers celui-ci -
laisser les autres l'évaluer
Vous avez aimé le script ? Essayez-le dans le terminal MetaTrader 5
Scripts

Broker Spec Inspector - script pour MetaTrader 5

Seckin Erkut
Seckin Erkut
Algo Trading Systems Developer. I develop strategies and portfolios not by hypes but from solid academic literature.

I put my money where my mouth is, be sure to check the performance of my EAs through my signals.
| French English Русский 中文 Español Deutsch 日本語 Português 한국어 Italiano Türkçe
Vues:
52
Note:
(2)
Publié:
Mise à jour:
MQL5 Freelance Besoin d'un robot ou d'un indicateur basé sur ce code ? Commandez-le sur Freelance Aller sur Freelance
Tout trader qui utilise un système automatisé finit tôt ou tard par rencontrer l'erreur 130, « Stops non valides », ou par constater qu'un ordre n'apparaît tout simplement jamais. La réaction habituelle consiste à rejeter la faute sur le robot de trading. La plupart du temps, le robot fonctionne correctement et c'est le serveur qui applique une limite contractuelle.
qui n’apparaît jamais dans la fenêtre du terminal : le niveau des stops, le niveau de gel ou un pas de lot minimum que le dimensionnement de votre position ne respecte pas. Ces limites varient selon le symbole et le courtier, et elles changent sans
préavis. Ce script les affiche.
Chargez-le sur n'importe quel graphique. Il se contente de lire les spécifications : il n'ouvre, ne modifie ni ne ferme jamais rien, et il n'est pas nécessaire d'activer le trading algorithmique. Fournissez-lui une liste de symboles séparés par des virgules, ou laissez le champ d'entrée vide pour qu'il parcoure votre sélection dans le Market Watch.

CE QU'ELLE IMPRIME

Pour chaque symbole : chiffres, point, pas de cotation et valeur, taille du contrat, lot min. / pas / max., spread et s’il est variable, mode d’exécution, swap long et court, ainsi que la marge requise pour un lot minimum par rapport à votre marge disponible actuelle. Ensuite, la partie qui répond à la question proprement dite :

Avertissement concernant les courtiers

--- XAUUSD (bid 4402.15 / ask 4402.63) ---------------------
stops level 350 pts | freeze level 0 pts | EFFECTIVE band 351 pts
VERDICT: a stop/pending placed 100 pts from price would be REJECTED as 'Invalid price' (band is 351 pts)
buy at ask 4402.63: you asked SL 4401.63 -> nearest legal SL 4399.12 (moved out)
C'est la dernière ligne qui est utile. Elle ne se contente pas de vous indiquer qu'un stop de 100 points ne fonctionne pas sur ce titre ; elle vous indique le niveau exact que le serveur accepterait à la place.
LA RÈGLE
Deux seuils distincts peuvent entraîner le rejet d’un ordre stop, et les outils qui n’en vérifient qu’un seul donnent un résultat erroné chez la moitié des courtiers :
double MinStopDistance(const string sym)
{
long stops = SymbolInfoInteger(sym, SYMBOL_TRADE_STOPS_LEVEL);
long freeze = SymbolInfoInteger(sym, SYMBOL_TRADE_FREEZE_LEVEL);
long band = (stops > freeze ? stops : freeze) + 1;
return band * SymbolInfoDouble(sym, SYMBOL_POINT);
}

Ces quatre lignes renferment trois décisions.
La bande correspond à la plus GRANDE des deux limites, car certains serveurs laissent la valeur « freeze » à zéro et imposent des arrêts, tandis que d’autres font l’inverse. En choisissant la plus grande des deux, on couvre les deux cas sans avoir à savoir sur quel type de serveur on se trouve.
Un point est ajouté, car un niveau se situant exactement à la limite de la fourchette est encore refusé par de nombreux serveurs. La règle officielle est « plus proche que », mais la règle appliquée est souvent « plus proche que ou égal à », et un point ne coûte rien.
Le résultat est exprimé en unités PRICE, et non en points. C'est ce dont vous avez besoin lorsque vous calculez le niveau de stop réel, et cela évite la confusion entre points et pips qui entraîne une erreur d'un facteur dix sur les symboles à 5 chiffres.
UTILISEZ-LE DANS VOTRE PROPRE EA
C'est la deuxième fonction qui mérite d'être copiée. Elle prend le stop souhaité et renvoie celui le plus proche que le serveur acceptera, du bon côté du cours :
double LegalStopLoss(const string sym, const bool isBuy,
const double price, const double wanted)
{
double dist = MinStopDistance(sym);
int digits = (int)SymbolInfoInteger(sym, SYMBOL_DIGITS);
double sl = wanted;
if(isBuy) { if(price - sl < dist) sl = price - dist; }
else { if(sl - price < dist) sl = price + dist; }
return NormalizeDouble(sl, digits);
}

Un arrêt déjà légal reste inchangé ; vous pouvez donc sans risque faire passer tous les arrêts par celui-ci. L'intégration de votre calcul existant ne nécessite qu’une seule ligne de code :
double sl = LegalStopLoss(_Symbol, true, ask, ask - atr * 1.5);
C'est particulièrement important lorsque la volatilité est élevée par rapport à la fourchette. Un stop ATR qui convient parfaitement à l'EURUSD peut se retrouver à l'intérieur de la fourchette sur l'or ou sur un indice lors d'une séance calme – c'est précisément à ce moment-là que le rejet vous prend par surprise, car le même code fonctionnait encore hier.

REMARQUES SUR L'INTERPRÉTATION DES RÉSULTATS

Un écart de cotation important ne signifie pas que le courtier fait des difficultés. Cela reflète généralement la manière dont le symbole est coté et couvert, et c'est la raison pour laquelle un EA de scalping qui fonctionne sur un serveur ne fonctionne plus sur un autre, sans qu'une seule ligne de code n'ait été modifiée.
Comparez avant de migrer. L’exportation au format CSV est activée par défaut et génère le fichier BrokerSpecs.csv dans le répertoire MQL5\Files, avec une ligne par symbole indiquant la bande, la distance minimale de stop et le niveau légal le plus proche. Exécutez le script sur deux courtiers, comparez les fichiers côte à côte, et les différences qui vous auraient coûté une semaine de débogage apparaissent en une minute.
Vérifiez votre marge avant de modifier la taille de votre position. La colonne « Marge » correspond à un lot minimum. Si ce chiffre est déjà proche de votre marge disponible, la taille de votre position atteint un plafond que vous n’avez pas encore pris en compte.

Les symboles doivent figurer dans Market Watch et avoir enregistré au moins un tick. Si un symbole ne présente aucune donnée de tick, ouvrez son graphique une fois, puis relancez l'opération.


Traduit de l’anglais par MetaQuotes Ltd.
Code original : https://www.mql5.com/en/code/76178

Risk Guard — risk-based lot size, daily loss lock, max positions, oversized-trade trim, forced stop-loss Risk Guard — risk-based lot size, daily loss lock, max positions, oversized-trade trim, forced stop-loss

Enforces your own risk rules on every position, whether opened by hand or by another EA: shows the lot size that matches your risk, locks the account for the day after a set loss, caps open positions, trims positions that risk more than allowed, and adds a stop-loss to any position opened without one.

Prop-Firm Equity Guard - daily and max drawdown protection (FTMO-style) Prop-Firm Equity Guard - daily and max drawdown protection (FTMO-style)

Strict risk management utility for prop-firm challenges. Automatically monitors your entire account to prevent daily and max drawdown failures. It acts as a safety buffer against spread spikes and revenge trading by instantly closing all positions and pending orders before your evaluation is terminated.

Custom Simple Moving Average Custom Simple Moving Average

Une moyenne mobile adaptative à deux niveaux (moyenne de base + lissage secondaire) qui change de couleur en fonction de sa pente et signale les croisements entre le cours et la moyenne à l'aide de flèches.

Smart Loss Exit — early exit for losing positions (ATR adverse excursion, time in trade, EMA invalidation, RSI, money cap) with a CSV journal Smart Loss Exit — early exit for losing positions (ATR adverse excursion, time in trade, EMA invalidation, RSI, money cap) with a CSV journal

Closes losing positions early, before the full stop-loss, when a rule says the trade is not coming back: adverse move beyond N x ATR, too long in loss, EMA trend flipped, RSI against the position, or a money cap. Never touches a position in profit. Observe-only mode journals what would be closed without closing anything. Every exit is written to CSV with the rule, the age and the maximum adverse excursion, so the rules can be tuned from data.