Schau, wie man Roboter kostenlos herunterladen kann
Finden Sie uns auf Facebook!
und werden Sie Mitglied unserer Fangruppe
Interessantes Skript?
Veröffentliche einen Link auf das Skript, damit die anderen ihn auch nutzen können
Hat Ihnen das Skript gefallen?
Bewerten Sie es im Terminal MetaTrader 5
Bibliotheken

Result - type-safe error handling for MQL5 without exceptions - Bibliothek für den MetaTrader 5

Maksym Yaroslavovych Libovych
Maksym Yaroslavovych Libovych
  • Software Engineer | .NET | MQL5 | NinjaTrader in  Self-employed
  • Ukraine
  • 180
MQL5 Developer — Expert Advisors & Custom Indicators | NinjaTrader, QuantConnect
• I build and maintain algorithmic trading systems in MQL5 — Expert Advisors, custom indicators, and strategy backtesting/optimization.
| German English Русский 中文 Español 日本語 Português 한국어 Français Italiano Türkçe
Ansichten:
4
Rating:
(1)
Veröffentlicht:
\MQL5\Include\Common\ \MQL5\Include\
MqlError.mqh (8.26 KB) ansehen
\MQL5\Scripts\
MQL5 Freelance 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

Fehlerbehandlung

// 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 SimpleTradeStats

Statistik der abgeschlossenen Geschäfte. Der Indikator zeigt die Handelsergebnisse an, gefiltert nach der „magischen Zahl“.

V1N1 LONNY MT5 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 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 SR Zone Scanner

Scanner für Unterstützungs- und Widerstandszonen in mehreren Zeitrahmen mit Stärke-Bewertung und Sofortbenachrichtigungen – M15, H1, H4, D1.