MQL5 中的范畴论 (第 12 部分):秩序(Orders)(基础篇)
📘

MQL5 中的范畴论 (第 12 部分):秩序(Orders)(基础篇)

第 1/2 篇

MQL5 里的范畴化订单结构

在 MQL5 范畴论框架的第 12 部分,订单(Orders)被抽象为一个范畴对象,其态射表示订单状态之间的合法转移,例如从 ORDER_STATE_STARTED 到 ORDER_STATE_FILLED。这种建模方式让交易逻辑的组合具备代数结构,而不是散落在回调里的过程式判断。 实际在 MT5 中,订单状态枚举共定义了 13 种常量(含 ORDER_STATE_NONE 与 ORDER_STATE_REJECTED),开发者可用其约束状态机。若用范畴视角重写下单流程,能把撤单、部分成交、过期等分支收敛到少数几个 functor 上,降低 EA 的圈复杂度。 开 MT5 敲一段最简查询即可验证当前订单态分布:遍历 OrdersTotal() 并比对 OrderGetInteger(ORDER_STATE)。外汇与贵金属杠杆品种下,订单态跳变频繁且伴随滑点风险,状态机建模虽清晰,但实盘仍需防重入与超时。

「用秩序和集合排位重构尾随停止」

上一篇文章用图论把交易系统拆成顶点和箭头,靠路径属性定义尾随停止。这一篇换范畴论里的「秩序」视角:它关心元素按某种量级排位,而且一个集合能按多个准则同时排位,不止一条轴。 范畴论把维度往上叠——集合之集合、甚至集合之集合之集合,排位因此能跨层发生。对交易者来说,这意味着离场信号可以从价格动作、指标、跨资产指数等多层集合里抽出来,而不是只看单一序列。 我们聚焦有序集合中的「形态」来生成离场。流程沿用前几篇的五步法,但把第一步和最后一步之间的三个内部步骤重组成子集,由此推导出可用于 MT5 实盘验证的有序集合形态。外汇与贵金属波动剧烈,这类形态只提高离场概率,不消除爆仓风险。

◍ 预序、偏序与线性序的边界

在秩序论的框架里,排位关系分三层:预序、偏序、线性序(也叫总序)。预序只要求反身性与传递性——集合里每个元素都能跟自己比(反身),比较结果会沿传递链影响其他元素的次序。它容得下歧义:两个元素经二元运算得到相同量级时,两者都可进输出集;甚至当两元素不可比、运算返回未定义时,预序集也照常成立。 偏序在预序之上加了抗对称:一旦两元素比较量级相同,输出集只留其中一个,所以叫“偏”——相等元素里任意丢一个。线性序则是偏序再叠一层可比性:任意两元素都必须有确定关系,不允许未定义结果,也就是全可比。 形式上,对带二元关系 R 的集合 S,预序满足:∀s∈S, s R s(反身);且 s R s' 与 s' R s'' 可推 s R s''(传递)。偏序多一条:若 s R s' 且 s' R s,则 s = s'(抗对称,输出仅其一)。线性序再补:∀s,s'∈S,必有 s R s' 或 s' R s(可比,无未定义)。 把这套映射到行情序列:把每根 K 线当集合元素,用高低点二元关系排位,预序能容纳“并列震荡段”,偏序强制去重,线性序要求每一段都分出先后——MT5 里写个自定义序列排序函数时,选哪种序直接决定你能否保留横盘歧义。

偏序下的决策次数会塌缩

把前几篇用到的步骤内幺半群集重做一遍,回溯期、应用价格与指标都保留,时间帧和交易动作的最终集合也不动。差别在于这次引入偏序关系 s ≦ s’ 或 s’ ≦ s,输出序不再保证能容纳全部未定义结果。 核心现象是:决策序作为表示决策点的幺半群集,在偏序下可能小于输入值 3。实测中输出序有时落到 2,甚至 1,也就是说评估是否修改止损时,原本默认要做的 5 次决定,可能压缩成 3 次或 4 次。 这对 MT5 策略的逻辑分支是直接约束——当偏序导致未定义结果出现,代码里不能假设每次都走满 5 步判定,否则会漏掉真实信号。开 MT5 把决策序输出打印出来,看你的品种在偏序下塌缩到几,再决定分支怎么写。

常见问题

把持仓按价格排成预序集合,只在偏序边界被突破时移动止损,可少调几次止损、降低滑点损耗。
预序允许并列不可比,偏序去掉了循环可比,线性序全可比;尾随停止用偏序能避免无谓的重排计算。
可以,小布能扫描当前持仓的排位关系,标出偏序下可能塌缩的决策点,省去你手算集合排位。
偏序下不可比元素不触发比较,只在边界变动时行动,所以回测中订单重算次数会塌缩式下降。
极端跳空会击穿偏序边界导致止损滞后,贵金属杠杆高、波动大,务必先开模拟验证参数。