Ставь лайки и следи за новостями
Поставь на него ссылку - пусть другие тоже оценят
Оцени его работу в терминале MetaTrader 5
Result - type-safe error handling for MQL5 without exceptions - библиотека для MetaTrader 5
- Просмотров:
- 25
- Рейтинг:
- Опубликован:
-
Нужен робот или индикатор на основе этого кода? Закажите его на бирже фрилансеров Перейти на биржу
Назначение
Данный файл включения предоставляет тип возврата «значение или ошибка» для MQL5, благодаря чему функции могут явно сообщать об успехе или сбое, а не через глобальное состояние GetLastError() / ResetLastError() — о котором легко забыть, которое легко перезаписать и которое вынуждает использовать выходные параметры и «магические» возвращаемые значения.
Что он делает
Функция возвращает один объект, содержащий либо значение, либо объект Error; вызывающая сторона должна проверить это перед использованием значения.
- ResultValue<T> — для типов значений (числа, структуры).
- Result<T> — аналогичный контракт для объектов, хранящихся по указателю (классы).
- Error — облегчённая структура (код + описание); коды сопоставляются с удобочитаемыми именами с помощью EnumToString.
- MQLError — тонкая оболочка над GetLastError / ResetLastError / SetUserError.
- Макросы — TRY , RETURN_ON_ERROR , PRINT_ON_ERROR , RETURN_SAME_ON_ERROR , RESULT_ON_ERROR — для распространения раннего возврата без шаблонного кода.
- Дополнительные обратные вызовы — Then , Match , MapError ( они принимают функции верхнего уровня или статические; в MQL5 нет замыканий).
Аксессоры: Value (), ValueOr (fallback), CurrentError (), IsError ().
Использование
// Функции этапа (верхнего уровня — в MQL5 нет замыканий) 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); } // Потоковый процесс: чтение -> проверка -> преобразование -> (аннотирование ошибки) -> обработка void RunPipeline() { SymbolDouble("EURUSD", SYMBOL_BID) .Then(EnsurePositive) .Then(ToPips) .MapError(Describe) .Match(OnOk, OnFail); }
Перевод с английского произведен MetaQuotes Ltd.
Оригинальная публикация: https://www.mql5.com/en/code/74427
SpreadAudit - фактический спред брокера из M1-истории
Скрипт собирает фактический спред вашего брокера из поля spread баров M1 и печатает медиану, 90-й и 99-й перцентили в единицах цены, в пунктах и в долях ATR, а также выгружает в CSV средний и максимальный спред по каждому часу суток. Нужен, чтобы тестировать стратегии против реальных издержек своего счёта, а не против "типичного" спреда из головы.
V1N1 LONNY MT5
Эксперт-консультант для дневной торговли «Asian Range Breakout». Поддерживает несколько инструментов, таймфреймы M15/M30/H1. Размещает отложенные стоп-ордера во время лондонской сессии за пределами азиатского диапазона, предшествующего лондонской сессии, на основе сигналов PSAR + MACD + Стохастика, с автоматической корректировкой на переход на летнее и зимнее время в Лондоне и Нью-Йорке, а также с использованием структурных стопов, трейлинга и брейк-ивена.
Pip Value Calculator
Текущее значение пипса, определение размера лота с учетом риска, индивидуальный анализ риска по объему и прибыль/убыток по открытым позициям — всё на одной панели.
SR Zone Scanner
Сканер зон поддержки и сопротивления на нескольких таймфреймах с оценкой силы и мгновенными оповещениями — M15, H1, H4, D1.
