Rejoignez notre page de fans
Result - type-safe error handling for MQL5 without exceptions - bibliothèque pour MetaTrader 5
- Vues:
- 39
- Note:
- Publié:
-
Besoin d'un robot ou d'un indicateur basé sur ce code ? Commandez-le sur Freelance Aller sur Freelance
Objectif
Ce fichier d'inclusion fournit un type de retour « valeur ou erreur » pour MQL5, afin que les fonctions puissent signaler explicitement leur réussite ou leur échec, plutôt que de passer par l'état global GetLastError() / ResetLastError() — qui est facile à oublier, facile à écraser, et qui impose l'utilisation de paramètres de sortie et de valeurs de retour « magiques ».
Fonctionnement
Une fonction renvoie un objet contenant soit une valeur, soit une erreur ; l'appelant doit vérifier son contenu avant d'utiliser la valeur.
- ResultValue<T> — pour les types de valeur (nombres, structures).
- Result<T> — le même contrat pour les objets pointés (classes).
- Error — une structure légère (code + description) ; les codes sont mappés à des noms lisibles via EnumToString.
- MQLError — un simple wrapper autour de GetLastError / ResetLastError / SetUserError.
- Macros — TRY , RETURN_ON_ERROR , PRINT_ON_ERROR , RETURN_SAME_ON_ERROR , RESULT_ON_ERROR — pour la propagation des retours anticipés sans code standard.
- Callbacks optionnels — Then , Match , MapError ( ils acceptent des fonctions de niveau supérieur ou statiques ; MQL5 ne dispose pas de fermetures).
Accesseurs : Value (), ValueOr (fallback), CurrentError (), IsError ().
Utilisation
// Fonctions de scène (niveau supérieur — MQL5 ne prend pas en charge les fermetures) ResultValue<double> EnsurePositive(const double &value) { if (value <= 0.0) { return ResultValue<double>::Fail("price must be positive"); } return ResultValue<double>::Ok(value); } ResultValue<double> ToPips(const double &price) { return ResultValue<double>::Ok(price / _Point); } Error Describe(const Error &error) { return Error::Create(error.code, "pipeline failed: " + error.description); } void OnOk(const double &value) { PrintFormat("[pipeline] result = %.1f pips", value); } void OnFail(const Error &error) { PrintFormat("[pipeline] %s", error.description); } // Le pipeline : lecture -> validation -> transformation -> (annotation des erreurs) -> traitement void RunPipeline() { SymbolDouble("EURUSD", SYMBOL_BID) .Then(EnsurePositive) .Then(ToPips) .MapError(Describe) .Match(OnOk, OnFail); }
Traduit de l’anglais par MetaQuotes Ltd.
Code original : https://www.mql5.com/en/code/74427
Clock (Spread)
What this indicator does Clock (Spread).mq5 is a MetaTrader 5 chart indicator that displays a small text label in the corner of the chart showing: Countdown timer until the current candle closes (in HH:MM:SS or MM:SS format, depending on timeframe) Current spread (Ask − Bid, in points), shown in parentheses next to the timer
Mediana Trendline
Draws parallel trend channels (Median, High, Low) on the current chart based on the last two closed candles of up to 7 higher timeframes (MN1, W1, D1, H4, H1, M30, M15), with individually configurable colors and line styles for each timeframe.
Pip Value Calculator
Valeur du pip en temps réel, calcul de la taille de la position en fonction du risque, analyse personnalisée du risque lié au volume et P/L des positions ouvertes : le tout dans un seul tableau de bord.
SniperGold SMC ProPlus (Institutional Smart Money Concepts)
SMC chart indicator: market structure (BOS/CHoCH), volume weighted order blocks, multi timeframe FVG, equal highs/lows, liquidity sweeps, premium/discount zones, a 3 time frame bias panel and an optional trade setup readout. Closed bar logic only (no repaint). It draws and alerts, it does not place trades.
