Currency Strength Oscillator MT5
- 指标
-
Narayanan Mohanan Mohanan Krishnan
专注于开发 MT5/MQL5 Expert Advisor、自定义指标以及回测与验证工具。我坚持编写结构清晰、文档完善、无重绘(No Repaint)的代码,采用收盘K线逻辑、经过验证的缓冲区(Buffers)、规范的句柄(Handle)与内存管理。这些工程实践正是可靠工具与脆弱实现之间的区别。
我始终按照明确的需求规格进行开发,在开始编码之前主动指出任何存在歧义的地方,并交付自己能够充分解释并负责到底的代码。如果您需要 Expert Advisor、技术指标,或现有项目的修复与升级,欢迎随时联系我。 - 版本: 1.0
- 激活: 10
本指标以历史曲线的形式绘制八种主要货币的相对强弱,数据由 28 个主要货币对分解而来。面板告诉您当前的状况,本指标则展示市场如何走到今天:哪种货币一直在走强,哪种已经掉头,以及排名在何处易主。
全部八条序列均以有完整文档的指标缓冲区形式开放,EA 可以直接读取货币强弱数值。
分解原理
八种货币中的每一种都出现在二十八个货币对中的七个里。它的强度就是这七个读数的平均值,并在其作为报价货币时反转符号——AUDJPY 下跌意味着日元走强,而非走弱。
每个货币对恰好影响两种货币,对基础货币为正、对报价货币为负,因此在全部二十八个货币对上这些贡献相互抵消,八个强度值之和为零。指标以此作为内部校验:若数值不能相互抵消,则说明分解有误。这也意味着读数是相对的而非绝对的。一种货币并非自身强势,而只是相对于这一组中的其余货币强势。
由于计算读取的是货币而非图表,无论指标挂在哪个品种上,出现的都是同样的八条曲线。
历史曲线能展示而快照无法展示的内容
排名告诉您今天的次序。历史则告诉您这一次序维持了多久、领先者仍在攀升还是已经转向,以及两种货币何时互换了位置。交叉之处就是排名易主之时。
可以关闭单独的货币,这往往比同时观察全部八条更有用。只绘制构成当前图表品种的那两种货币,可以清晰地看出是哪一方在推动行情。
两种强度度量方式
变化率是回溯窗口内的百分比变动。由于是相对量,可在各货币对之间直接比较。
与均值的标准化距离以标准差表达同样的变动,从而把波动性差异很大的品种放在同一标度上。
在较长的回溯期下二者表现不同。当回溯期为 200 时,变化率会累积出持续的偏移——若干货币在整个窗口内始终位于零轴上方或下方而从不穿越——而标准化度量则保持居中。两者都不算错。变化率描述的是实际发生的变动;标准化度量描述的是这一变动有多不寻常。在较短的回溯期下,两者差异很小。
货币对模式
货币对模式只绘制一条曲线:一种货币的强度减去另一种货币的强度。这是同一套分解,简化为单一关系,并且可用于任何图表——您可以在交易 EURAUD 的同时观察 CHF 减 JPY。
这与 CHFJPY 的价格并不相同。价格是单一市场的报价;而这里是两种货币各自相对整个矩阵测得的强度之差。
主要货币之外
本指标可运行于任何图表,不限于外汇。在黄金或指数图表上,货币曲线描述的依然是货币,而这往往正是所需要的:以美元计价的品种,在美元本身可见时更容易解读。可以挂载多个实例并设置不同的回溯期,以比较较快与较慢的视角。
请注意此处主张与不主张的内容。黄金并不属于这 28 个货币对构成的矩阵,本身没有强度值。图表所显示的是由外汇矩阵测得的美元,与黄金价格并列展示。恰当的解读是美元走弱而黄金上涨,而不是"黄金很强势"。
从 EA 中读取
指标开放并记录了十个缓冲区。缓冲区顺序固定且按字母排列,不随显示开关改变——隐藏某种货币只是将其从图表上移除,缓冲区仍保留数值,因此 EA 不受用户显示偏好的影响。
int h = iCustom(_Symbol, _Period, "CurrencyStrengthOscillator"); double jpy[]; ArraySetAsSeries(jpy, true); CopyBuffer(h, 5, 0, 100, jpy); // 缓冲区 5 始终是 JPY
- 0 — AUD
- 1 — CAD
- 2 — CHF
- 3 — EUR
- 4 — GBP
- 5 — JPY
- 6 — NZD
- 7 — USD
- 8 — 零轴
- 9 — 货币对价差,基础货币减报价货币,在货币对模式下填充
输入参数
- 强度度量 — 变化率,或与均值的标准化距离
- 回溯期 — 每个读数所测量的窗口,以柱数计;默认 14
- 平滑 — 对结果应用的移动平均;默认 3,设为 1 表示不平滑
- 计算柱数 — 向前计算的范围;默认 500,设为 0 表示全部可用历史
- 品种后缀 — 自动识别,遇到不常见的经纪商命名方式时也可手动设置
- 显示单一货币对价差 — 切换至货币对模式,并可选择要比较的基础货币与报价货币
- 显示 AUD 至 显示 USD — 每种货币一个开关,默认全部开启,在货币对模式下被忽略
截图说明
- 三张图表并排 — NZDUSD、NZDJPY 与 USDJPY,各自只显示本品种的两种货币。共有的曲线在不同图表上走势完全一致:纽元在前两张图中是同一测量结果,日元在后两张图中亦然。指标读取的是货币,而不是图表。
- GBPUSD 一小时图上的全部八种货币 — 日元脱离其余货币向上,而美元与英镑回落,旁边即是与之相伴的价格走势。
- 数据窗口 — 单根柱上的全部十个缓冲区,带标签且可被 EA 读取。其中八个货币数值之和为 −0.001,这正是零和特性在实际中的体现,而非仅停留于理论。
- 仅绘制两种货币的 USDJPY 日线 — 美元与日元,其交叉与价格转折相吻合,没有其他内容分散注意力。
- 黄金一小时图,单独显示美元,采用两种回溯期 — 两个指标实例位于各自窗口中,一慢一快。较短的回溯期先行转向,较长的随后确认。
- CHFJPY 日线上的货币对模式 — 一条曲线:瑞郎减日元。
- 同一 EURGBP H4 窗口下的两种度量 — 一张为变化率,一张为标准化度量,其余设置完全相同。在回溯期 200 下,上文所述的偏移在前者中清晰可见,在后者中则不存在。
- AUDUSD 周线 — 价格自 2019 年延伸,而振荡器自 2020 年底才开始。这段空白即为经纪商最短的共同历史,详见下文说明。
- 参数窗口 — 全部设置,背后可见指标本身。
可绘制的历史长度
分解需要某根柱上全部 28 个货币对的数据才有意义,因此可用深度取决于其中历史最短的那一个,而经纪商在次要交叉盘上保存的历史远少于主要货币对。当可用历史短于所请求的长度时,指标会绘制其能绘制的部分,并在 Experts 日志中提示一次该限制。
在较小的周期上这一点并不明显。在周线和月线上则会显现:共同历史可能只有数百根柱甚至更少,振荡器会从图表中间开始,而价格本身可以追溯到更早。这是数据的限制,而非缺陷。它源于经纪商的数据,任何货币强弱工具都会遇到——只是大多数工具并不会告知您。
计算柱数默认为 500。提高该值,或设为 0 以使用全部可用历史,可以获得更长的视野,代价是在新周期上首次加载较慢。
计算行为
已收盘柱上的数值是最终值。正在形成的柱在收盘前持续更新,并在每个 tick 上重新计算,而不是在首次触及时即被固定,因此其数值在收盘时才最终确定,而不会记录成开盘瞬间的价格。
每根柱要么由全部 28 个货币对分解得出,要么完全不做分解。每种货币按实际参与贡献的货币对求平均,而非按假定的七个,若缺少某个货币对,则该柱留空。空缺一目了然;而由不完整数据算出的强度看上去与真实读数毫无二致,事后无法辨别其有误。
若某个货币对的柱时间与图表不一致——即经纪商历史中的缺口,这在最小的周期上确实会出现——则该货币对会从受影响的柱中排除,而不会被错位对齐,并在 Experts 日志中报告该排除情况。
说明
- 在独立窗口中绘制,具有十个指标缓冲区。上文的缓冲区对照表是固定的,不随显示开关改变。
- 您的经纪商必须提供全部 28 个主要货币对。指标会在 Experts 日志中逐一列出缺失的货币对。
- 绘制范围受 28 个货币对中最短历史的限制,这一点在周线和月线上可见。该限制会在 Experts 日志中提示一次。
- 可在同一图表上挂载多个实例,使用不同的回溯期或不同的度量方式。
- 无外部依赖。所有数值均在指标内部计算。它不调用任何其他指标,因此没有可能失效的句柄,无需另行安装任何组件,也不依赖您标准指标文件夹的状态。
本产品是什么,不是什么
这是一款用于技术分析和筛选市场状况的工具。它不是交易系统,不产生买卖信号,不提供投资建议,也不会开仓或管理持仓。
它是描述性的而非预测性的。它衡量八种货币此前的表现;它不预测它们接下来的走势,本产品亦不作任何绩效方面的声明。
| 该开发者的其他工具 我开发 MT5 指标与 EA,注重代码整洁、文档完整、不重绘——采用收盘柱逻辑、经过验证的缓冲区,且不依赖任何其他指标。 如果您希望一次性看到全部 28 个货币对在九个周期上的当前状况,Multi Timeframe Currency Strength Panel 免费提供,并采用同样的分解方法。本指标即是它的历史视图。 对计算方法、缓冲区,或在您自己的 EA 中使用本指标有疑问?欢迎给我发私信,我很乐意解答。 |
由 MT5/MQL5 开发者 Narayanan Mohanan 开发并维护。
如您发现本页译文有误,欢迎与我联系,我会及时更正。
