- 显示:
- 12
- 等级:
- 已发布:
-
需要基于此代码的EA交易或指标吗?请在自由职业者服务中订购 进入自由职业者服务
目的
此包含文件为 MQL5 提供了一种“成功或错误”的返回类型,因此函数可以明确地报告成功或失败,而无需通过全局的GetLastError()/ResetLastError() 状态——后者容易被遗忘、容易被覆盖,并且会强制使用输出参数和“魔法”返回值。
功能说明
函数返回一个对象,该对象要么包含一个值,要么包含一个错误;调用方在使用该值之前必须进行检查。
- 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
SimpleTradeStats
已平仓交易的统计数据。 该指标显示交易结果,并按“魔术号码”进行筛选。
V1N1 LONNY MT5
亚洲区间突破日间交易自动交易系统。支持多品种交易,时间周期为M15/M30/H1。在伦敦交易时段开始前,根据PSAR + MACD + 随机指标的信号,在亚洲交易时段的预设区间外设置挂单止损单,并自动处理伦敦/纽约夏令时调整,支持结构化止损、追踪止损和盈亏平衡止损。
Pip Value Calculator
实时点值、基于风险的仓位规模设定、自定义交易量风险分析及持仓盈亏——尽在一屏之中。
SR Zone Scanner
支持多时间周期支撑位与阻力位区域扫描,附强度评级和即时提醒——M15、H1、H4、D1。
