MQL5 中的范畴论 (第 7 部分):多域、相对域和索引域(基础篇)
📘

MQL5 中的范畴论 (第 7 部分):多域、相对域和索引域(基础篇)

第 1/3 篇

把多域、相对域和索引域拆开看

在 MQL5 的代数结构封装里,多域(multidomain)用来描述一个对象同时挂在多个基底空间上的情形,相对域(relative domain)则强调域与域之间的包含或映射关系,索引域(indexed domain)靠整数或枚举做寻址,便于在策略里批量切换状态。 这套抽象不是纯数学把戏。以 2023-10-02 发布的那篇测试者文章为例,原文在 MT5 环境里跑通了相关结构示例,页面记录显示阅读量 1,420、互动 3,说明即便偏底层,实盘开发者也会进来抠实现细节。 如果你手头有 MT5 终端,最直接的做法是新建一个 include 把域结构声明进去,用索引域枚举行情品种,再让相对域约束它们的时间帧依赖。这样后续写跨品种对冲逻辑时,不用每次手写一堆判断分支。

「从锥体灵敏度到特殊域的衔接」

前一篇我们验证了锥体形状与成分权重变动会直接改变灵敏度分析的输出,这意味着同一套指标在不同证券上给出的系统信号强度并不一致。 这种不一致不是噪声,而是可交易证券自身域特征在起作用。接下来要拆的是几类特殊或独有的价格域,看它们之间的关系如何被用来平缓对波动的过度预期。 对 MT5 用户来说,这一步的价值在于:你能在把指标塞进 EA 之前,先判断标的所处的域是否会让灵敏度结论失效。

◍ 当域需要容纳重复元素

在价格行为数据结构里,普通域要求每个元素唯一,例如一根 K 线的开盘价只能入列一次。但实盘序列里,同一价格位可能在短时间内被多次触及,若强行去重就会丢掉关键的重复触达信息。 多域(multiset)放宽了这条限制,允许同一元素带着各自的元数据多次存在。对 MT5 自定义指标来说,这意味着你可以用一个缓冲区记录某价位被测试的次数,而不是只记“出现过”。 典型场景:支撑位在 1 小时内被测试 3 次,普通域只留 1 个值,多域则保留 3 条带时间戳的记录。这种结构对识别假突破概率更有用,因为重复触达本身携带强度信号。外汇与贵金属波动剧烈,此类结构仅作概率参考,不构成方向保证。

用命名函数拆价格行为的重复度

上面那套形式化定义,落到交易上就是:把一段价格动作看成域 X,给它套一个命名函数 π 映射到名称集 N。N 里每个名字 x 对应的原像 π⁻¹(x) 里有多少元素,就叫 x 的多重性。原文示例里「集合」多重性 8、「交易」多重性 2、「类别」多重性 1,说明 N 只去重列举,重复全压在 X 里。 换到价格时间序列,若关心价格柱线区间的变化,且想用前一根柱线的动作做预测,可取两个域:源域是之前的价格行为(多维),目标域是欲预测的一维变化。两域之间的同态带一根柱线的滞后——即源域动作过一根线后才映射到目标变化。 这个同态本质是多域,因为源域处理多个数据点甚至单点时都会重复。目标域可规范化为 -100 到 +100 的整数,表达价格区间变化幅度百分比;做了这种常规化就无重复,协域元素即可按此推测。外汇与贵金属波动剧烈,用滞后同态做推断仅代表概率倾向,实盘前请在 MT5 用历史数据验证重复度与滞后设定。

常见问题

可用多域把各周期数据映射到一个统一结构,再比较锥体灵敏度,避免肉眼来回切图。
相对域依赖基准对象做偏移参照,索引域按固定序号定位元素;重复价位用索引域更稳。
可以,小布能按命名函数把重复度归类标出,你直接看它给的域划分结论就行。
普通域不允许重复,需换用可容纳重复元素的特殊域,或用索引域按出现次序区分。
可能出现域边界漂移、旧域未注销;建议回测时固定灵敏度再观察衔接断点。