und werden Sie Mitglied unserer Fangruppe
Veröffentliche einen Link auf das Skript, damit die anderen ihn auch nutzen können
Bewerten Sie es im Terminal MetaTrader 5
Result - type-safe error handling for MQL5 without exceptions - Bibliothek für den MetaTrader 5
- Ansichten:
- 4
- Rating:
- Veröffentlicht:
-
Benötigen Sie einen Roboter oder Indikator, der auf diesem Code basiert? Bestellen Sie ihn im Freelance-Bereich Zum Freelance
Zweck
Diese Include-Datei stellt einen Rückgabetyp vom Typ „Wert oder Fehler“ für MQL5 bereit, sodass Funktionen Erfolg oder Misserfolg explizit melden können, anstatt dies über den globalen Status von GetLastError() / ResetLastError() zu tun – was leicht zu vergessen und leicht zu überschreiben ist und Out-Parameter sowie „magische“ Rückgabewerte erzwingt.
Funktionsweise
Eine Funktion gibt ein Objekt zurück, das entweder einen Wert oder einen Fehler enthält; der Aufrufer muss dies vor der Verwendung des Werts überprüfen.
- ResultValue<T> – für Werttypen (Zahlen, Strukturen).
- Result<T> – derselbe Vertrag für Objekte, die über einen Zeiger gehalten werden (Klassen).
- Error – eine schlanke Struktur (Code + Beschreibung); Codes werden über EnumToString lesbaren Namen zugeordnet.
- MQLError — ein schlanker Wrapper um GetLastError / ResetLastError / SetUserError.
- Makros — TRY , RETURN_ON_ERROR , PRINT_ON_ERROR , RETURN_SAME_ON_ERROR , RESULT_ON_ERROR — für die Weitergabe von vorzeitigen Rückgaben ohne Boilerplate-Code.
- Optionale Callbacks — Then , Match , MapError ( sie akzeptieren Funktionen auf oberster Ebene oder statische Funktionen; MQL5 kennt keine Closures).
Zugriffsfunktionen: Value (), ValueOr (Fallback), CurrentError (), IsError ().
Verwendung
// Stage-Funktionen (auf oberster Ebene – MQL5 kennt keine Closures) 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); } // Die Pipeline: Einlesen -> Validieren -> Transformieren -> (Fehler kennzeichnen) -> Bearbeiten void RunPipeline() { SymbolDouble("EURUSD", SYMBOL_BID) .Then(EnsurePositive) .Then(ToPips) .MapError(Describe) .Match(OnOk, OnFail); }
Übersetzt aus dem Englischen von MetaQuotes Ltd.
Originalpublikation: https://www.mql5.com/en/code/74427
SimpleTradeStats
Statistik der abgeschlossenen Geschäfte. Der Indikator zeigt die Handelsergebnisse an, gefiltert nach der „magischen Zahl“.
V1N1 LONNY MT5
EA für das Daytrading mit Ausbrüchen aus der asiatischen Handelsspanne. Für mehrere Symbole, M15/M30/H1. Platziert während der Londoner Handelssitzung ausserhalb der asiatischen Handelsspanne vor Beginn der Londoner Sitzung Pending-Stop-Orders unter Verwendung von PSAR-, MACD- und Stochastic-Signalen, mit automatischer Umstellung auf Sommerzeit in London und New York, strukturellen Stopps, Trailing Stops und Break-Even.
Pip Value Calculator
Aktueller Pip-Wert, risikobasierte Lot-Größenbestimmung, benutzerdefinierte Volumen-Risikoanalyse und Gewinn/Verlust offener Positionen – alles in einem Fenster.
SR Zone Scanner
Scanner für Unterstützungs- und Widerstandszonen in mehreren Zeitrahmen mit Stärke-Bewertung und Sofortbenachrichtigungen – M15, H1, H4, D1.
