Unisciti alla nostra fan page
- Visualizzazioni:
- 50
- Valutazioni:
- Pubblicato:
- Aggiornato:
-
Hai bisogno di un robot o indicatore basato su questo codice? Ordinalo su Freelance Vai a Freelance
Scopo
Questo file di inclusione fornisce un tipo di ritorno "valore o errore" per MQL5, in modo che le funzioni possano segnalare esplicitamente il successo o il fallimento invece di ricorrere allo stato globale di GetLastError() / ResetLastError() — che è facile da dimenticare, facile da sovrascrivere e impone l'uso di parametri di uscita e valori di ritorno "magici".
Cosa fa
Una funzione restituisce un oggetto che contiene un valore o un errore; il chiamante deve verificare il contenuto prima di utilizzare il valore.
- ResultValue<T> — per i tipi di valore (numeri, strutture).
- Result<T> — lo stesso contratto per gli oggetti gestiti tramite puntatore (classi).
- Error — una struttura leggera (codice + descrizione); i codici vengono mappati su nomi leggibili tramite EnumToString.
- MQLError — un wrapper leggero su GetLastError / ResetLastError / SetUserError.
- Macro — TRY , RETURN_ON_ERROR , PRINT_ON_ERROR , RETURN_SAME_ON_ERROR , RESULT_ON_ERROR — per la propagazione del ritorno anticipato senza codice boilerplate.
- Callback opzionali — Then , Match , MapError ( accettano funzioni di primo livello o statiche; MQL5 non supporta le chiusure).
Accessori: Value () , ValueOr (fallback) , CurrentError () , IsError () .
Utilizzo
// Funzioni di stage (di primo livello — MQL5 non prevede chiusure) 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); } // Il flusso di lavoro: lettura -> convalida -> trasformazione -> (annotazione dell'errore) -> gestione void RunPipeline() { SymbolDouble("EURUSD", SYMBOL_BID) .Then(EnsurePositive) .Then(ToPips) .MapError(Describe) .Match(OnOk, OnFail); }
Tradotto dall’inglese da MetaQuotes Ltd.
Codice originale https://www.mql5.com/en/code/74427
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.
Advanced Risk Manager: Auto Suffix Detection Multi Currency Lot Sizer
Advanced MQL5 risk management class providing deterministic lot sizing, auto-suffix detection, and cross-currency triangular conversion.
Pip Value Calculator
Valore pip in tempo reale, determinazione delle dimensioni dei lotti in base al rischio, analisi personalizzata del rischio legato al volume e P/L delle posizioni aperte: tutto in un unico pannello.
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.
