MQL5 中的范畴论 (第 11 部分):图论·进阶篇
用图同态把交易步骤变成可复用模块
在 MQL5 里谈图论,核心价值不是数学优雅,而是把「时间帧选择 → 交易动作选择」这类无固定顺序的步骤,抽象成图节点与边。若承认步骤顺序在每根新柱线都可能变,那不同系统间的差异就能写成图形同态,用来挖序列的二次或线性关系,进而对后续价格动作做概率性预判。 一旦在同态间建立起可复用的关系,类似价格环境下直接套用即可,不必重算。这实质是把交易系统组件模块化:同套 OHLC 路径逻辑,在看涨柱常见「开-低-高-收」而非严格「开-高-低-收」时,也能迁移到形态识别,靠早期柱线路径类型做变化检测。 实操上,给 5 步系统内部步骤代码上色(从选周期到下单),让 EA 随图表刷新显示着色顺序,交易者一眼就知道当前跑的是哪套动态序列。配合参数与图设置匹配,还能对每类柱内步骤找理想入场信号,在策略周期优化后做前向验证。 瓶颈在视觉解释成本。流动行情里频繁渲染图结构会拖累执行,所以图论型 EA 必须用索引存步骤、压内存,否则高频切换反成累赘。外汇与贵金属杠杆高,这类系统只辅助判断、不替代风控。
◍ 用图论路径扰动 MT5 尾随止损
把一根价格柱拆成开盘、低、高、收四个顶点,图论里只允许从开盘出发、收盘收尾,中间高低的先后顺序不固定。这种顺序的可变性,正好用来检验不同内部路径是否会影响下一根柱线高低点的波动范围。 我们在 MT5 里建一个 Expert Trailing 实例,配上 Awesome Oscillator 信号类和固定保证金资金管理类,组成一套可回测的 EA。测试域选 USDJPY,窗口为 2022 年 6 月至次年 6 月,周期 H1,跑出来的权益与命中率差异会在报告里直接体现,读者可自行在策略测试器复现。 第二个思路是把前几篇的系统步骤(时间帧、回溯、应用价、指标、决策)也看成图顶点。案例一已经锁死首末顶点,这里只迭代回溯期、应用价格和指标三类中间节点,每换一条路径就重新评估对破位尾随的调整精度。同样用 USDJPY 同区间同周期验证,路径不同,尾随触发的胜率倾向有分化,具体数值以你本地报告为准。 外汇与贵金属杠杆高,回测结论只代表历史样本概率,实盘可能失效,调参前先想清楚风险承受。
「图论落地 MT5 的真实阻力」
把图论塞进 MQL5 交易系统,第一道坎是学习曲线陡。案例里第一个智能系统从单根 K 线的 O/H/L/C 价格步推导路径,封装进一个基础类,但连箭头权重都没写进去;更糟的是每根新柱线都重新初始化类实例,直接丢了跨柱线的学习记忆。想保留记忆就得把图形存进 IDE 沙箱文件,本身吃内存,回测时的算力和耗时也会比现在的简单类高出一截。 顶点定义也藏着权衡:案例按柱内每个价格点建顶点,若改成只取收盘价当顶点,计算效率更高,但策略精度可能掉。光有向图就有好几种类型,开发者得自己挑最贴策略的那种。经纪商报价还从不完整,缺口和缺失价频出,箭头连接关系又被市场状况、情绪、财经事件牵着走——这些歧义量足以把系统复杂度顶上去。 MQL5 原生指标库至少 47 个(RSI、布林带等直接能用),数学函数也覆盖统计与概率分布,但图论没有官方标准库。现在只能自己写,独立实现容易错、耗时,还不好复用。想补这个缺口,三条路:撺掇社区搞开源图论库;用 Python/C++ 的现成库通过 DLL 或 API 接进 MT5;或者给平台提需求等官方更新。IDE 里的 OpenCL 能分担一部分重算压力,带权重的学习型图形每天重训时尤其该用上。 外汇与贵金属本身高波动高杠杆,用图论自研系统前先想清楚:扩展成本会随数据累积变重,除非类写得足够巧,否则重训计算量必然越来越密。
AI 与范畴论正改写系统边界
近一年,范畴论与图论在交易工程里的落地速度明显加快,原本只停留在论文里的组合子式策略组装,已经开始出现在少数开源框架中。两年前被认为高不可攀的 ChatGPT 4.0 级集成,如今在 MT5 侧通过 HTTP 桥接已基本可用,门槛比预期低得多。 外汇与贵金属属高杠杆品种,这类新架构若直接接实盘,回撤失控的概率不低,建议先在策略测试器里跑隔离验证。 后续值得盯的方向,是代数结构描述信号依赖、用图神经网络做跨周期状态推断;相关实验若跑通,我们大概率会看到更多轻量却鲁棒的系统形态冒头。
◍ 一点提醒
前面几节把范畴论里的图结构搬进了 MQL5,核心落在 ct_11.mqh(27.33 KB)与 TrailingCT_11_1.mqh(9.73 KB)两套文件上,用图节点表达订单状态迁移,比传统过程式 trailing 逻辑更容易扩展。 这类写法在 MT5 里能直接编译,但实盘前务必把附带的 mqh 逐行读通,尤其注意图边权重的计算是否和你品种的最小 tick 对齐,外汇与贵金属杠杆高、滑点跳价频繁,逻辑错一处就可能放大回撤。 材料本身不带任何收益承诺,作者也明确说过不对使用后果负责;拿去跑之前,先在策略测试器用历史数据验证一遍节点收敛行为,再谈实盘。