Pon "Me gusta" y sigue las noticias
Deje un enlace a él, ¡qué los demás también lo valoren!
Evalúe su trabajo en el terminal MetaTrader 5
Result - type-safe error handling for MQL5 without exceptions - librería para MetaTrader 5
- Visualizaciones:
- 13
- Ranking:
- Publicado:
-
¿Necesita un robot o indicador basado en este código? Solicítelo en la bolsa freelance Pasar a la bolsa
Objetivo
Este archivo de inclusión proporciona un tipo de retorno de valor o error para MQL5, de modo que las funciones puedan informar explícitamente del éxito o el fracaso, en lugar de hacerlo a través del estado global de GetLastError() / ResetLastError() —que es fácil de olvidar, fácil de sobrescribir y obliga a utilizar parámetros de salida y valores de retorno «mágicos».
Qué hace
Una función devuelve un objeto que contiene un valor o un error; el llamante debe comprobarlo antes de utilizar el valor.
- ResultValue<T> — para tipos de valor (números, estructuras).
- Result<T> — el mismo contrato para objetos almacenados mediante puntero (clases).
- Error — una estructura ligera (código + descripción); los códigos se asocian a nombres legibles mediante EnumToString.
- MQLError — una envoltura ligera sobre GetLastError / ResetLastError / SetUserError.
- Macros — TRY , RETURN_ON_ERROR , PRINT_ON_ERROR , RETURN_SAME_ON_ERROR , RESULT_ON_ERROR — para la propagación de retornos anticipados sin código repetitivo.
- Callbacks opcionales — Then , Match , MapError ( aceptan funciones de nivel superior o estáticas; MQL5 no admite clausuras).
Accesores: Value (), ValueOr (fallback), CurrentError (), IsError ().
Uso
// Funciones de etapa (nivel superior — MQL5 no admite clausuras) 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); } // El proceso: leer -> validar -> transformar -> (anotar el error) -> gestionar void RunPipeline() { SymbolDouble("EURUSD", SYMBOL_BID) .Then(EnsurePositive) .Then(ToPips) .MapError(Describe) .Match(OnOk, OnFail); }
Traducción del inglés realizada por MetaQuotes Ltd.
Artículo original: https://www.mql5.com/en/code/74427
SimpleTradeStats
Estadísticas de operaciones cerradas. El indicador muestra los resultados de las operaciones, filtrados por número mágico.
V1N1 LONNY MT5
EA de day trading para la ruptura del rango asiático. Multisímbolo, M15/M30/H1. Coloca órdenes stop pendientes durante la sesión de Londres fuera del rango asiático previo a Londres, utilizando señales PSAR + MACD + estocástico, con gestión automática del horario de verano de Londres y Nueva York, stops estructurales, trailing stop y break-even.
Pip Value Calculator
Valor del pip en tiempo real, cálculo del tamaño de la operación en función del riesgo, análisis personalizado del riesgo por volumen y pérdidas y ganancias de las posiciones abiertas: todo en un único panel.
SR Zone Scanner
Escáner de zonas de soporte y resistencia en varios marcos temporales con índice de fuerza y alertas instantáneas: M15, H1, H4, D1.
