Currency Strength Oscillator MT5

  • 指标
  • Narayanan Mohanan Mohanan Krishnan
    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 开发并维护。

如您发现本页译文有误,欢迎与我联系,我会及时更正。

作者的更多信息
Anchored Volume Delta with Adaptive Bands
Narayanan Mohanan Mohanan Krishnan
本指标绘制 累积成交量差值(Cumulative Volume Delta,CVD) —— 即每根 K 线成交量按其收盘方向累加后的运行总和 —— 并将其置于自适应的标准差通道之中。它回答了一个仅靠价格无法回答的问题:这波行情是由市场参与度推动的,还是仅仅在惯性漂移? 累积总和会在您选择的 锚定周期(anchor) 重新开始 —— 每日、每周或每月 —— 因此读数始终相对于当前交易日、当周或当月,而不是相对于图表历史的起点。正是这一个设置,使同一个指标既适用于五分钟的外汇图表,也适用于日线级别的股票图表;它也正是本指标区别于普通累积成交量线的地方,后者只会从您的历史数据碰巧开始的位置一直累加下去。 工作原理 每根 K 线将自身成交量计入运行总和:收盘价高于前一根收盘价时累加,低于时扣减,收盘价持平时保持不变。默认使用 Tick 成交量;当经纪商提供真实成交量时会自动采用真实成交量。 随后在该累积序列上计算 20 周期的基准线及其标准差,上下通道则按所选的标准差倍数绘制。由于通道由序列自身的波动性构建,因此在参与度变得剧烈时自动扩张、在趋于平静时收缩 —— 无需为每个品种重新调整固定阈值
FREE
Force Index with Adaptive Volatility Bands
Narayanan Mohanan Mohanan Krishnan
本指标绘制 力度指数(Force Index) —— 即每根 K 线的价格变动乘以其成交量 —— 并将其置于自适应的标准差通道之中。价格本身只能告诉您市场移动了,而力度指数告诉您推动这次移动付出了多大的力气。 成交量稀薄下的大幅价格变动,与成交量沉重下的小幅变动,是截然不同的两件事,即便 K 线看起来相似。力度指数把两者合并为一个数值来加以区分,而通道则将这个数值放入该品种自身近期表现的背景中。 工作原理 对每根 K 线而言,原始力度指数等于当前收盘价与前一根收盘价之差,再乘以该 K 线的成交量。收盘走高时为正值,走低时为负值,其大小则随成交量而缩放。默认使用 Tick 成交量;当经纪商提供真实成交量时会自动采用。 随后,该原始序列会按您选择的周期与均线算法进行平滑处理。平滑在这里十分关键:未经平滑的力度指数噪声极大,而您所选的周期决定了您观察的是短期力度,还是一段长得多的波动。 接着在平滑后的序列上计算 20 周期基准线及其标准差,上下通道按所选的标准差倍数绘制。由于通道由序列自身的变动性构建,因此在力度变得不稳定时扩张,在其趋于平稳时收缩。 通道为何重要 力度指数随成交量缩放,因此
FREE
Multi Timeframe Currency Strength Panel
Narayanan Mohanan Mohanan Krishnan
本面板显示八种主要货币当前的相对强弱,以及 28 个主要货币对在九个时间周期上的近期走势。两组信息显示在同一张图表上,并按定时器刷新。 单纯对货币对进行排名容易产生误导。当某一种货币出现波动时,所有包含它的货币对都会随之波动,因此排名的顶端往往是同一种货币重复出现七次。本面板将整个矩阵分解为各货币自身的强弱,从而把真正的驱动因素与重复项区分开来。 分解的原理 八种货币中的每一种都出现在 28 个货币对中的 7 个之中。它的强弱是这 7 个读数的平均值,并在该货币作为报价货币时反转符号——AUDJPY 下跌意味着日元走强,而不是走弱。 每个货币对恰好影响两种货币:对基础货币为正、对报价货币为负。因此在完整的 28 个货币对中,这些贡献相互抵消,八个强弱值之和为零。面板将此作为内部校验:如果这些数值无法相互平衡,说明分解出了问题。这同时意味着,读数是彼此相对的,而非绝对的。一种货币本身并不"强",它只是相对于这一组中的其他货币而言较强。 实际效果是:八个清晰的数值取代了二十八个相互重叠的数值。您不必再从列表底部的七个日元货币对去推断共同原因,而是直接看到原因本身。 货币对行显示什么 每个货
FREE
OBVCD Pro
Narayanan Mohanan Mohanan Krishnan
OBVCD Pro 是一款动量振荡器,它将收敛/发散分析应用于 On-Balance Volume(OBV,能量潮指标) 而非价格,并结合自适应波动带与五状态市场状态分类器。计算结果既可在图表上直观查看,也可由智能交易系统(Expert Advisor)直接读取。 大多数传统振荡器只分析价格。OBVCD Pro 基于累计成交量计算收敛与发散,因此衡量的是价格变动背后的资金参与程度,而不仅仅是价格本身的变化。最终结果被归纳为单一的市场状态值,人工交易者与程序化交易系统均可直接使用。 工作原理 On-Balance Volume(OBV)根据所选的成交量来源计算。默认使用 Tick 成交量;当经纪商提供真实成交量时,则自动使用真实成交量。 在 OBV 序列上分别计算快速与慢速移动平均线(默认为 EMA 12 与 EMA 26),两者的差值构成 OBVCD 柱状图 。随后在该柱状图上计算一条 信号线 ,默认使用 9 周期 SMA。 上下波动带采用 20 周期标准差与 1.618 偏差系数计算。波动带可以作用于信号线,也可以直接作用于柱状图。 由于波动带基于标准差,因此会在市场活跃时自动扩张、
筛选:
无评论
回复评论