无需 Python 或 R 语言知识的 Yandex CatBoost 机器学习算法(基础篇)
◍ 用 CatBoost 绕开编程门槛做 MT5 模型
很多做价格行为的人卡在机器学习门外,不是因为逻辑难,而是被 Python 和 R 的环境配置劝退。Yandex 的 CatBoost 算法在 MetaTrader 5 里能直接跑,不需要你写一行 Python,对只熟悉 MQL5 的交易者算是低摩擦入口。 根据 2021 年 2 月社区贴文的公开数据,该方案发布后浏览量达到 3 051、收藏 80,说明纯 MQL5 生态里接 ML 的需求真实存在。外汇与贵金属杠杆高、滑点突变频繁,模型在历史样本上表现好不等于实盘能复现,回测结论只能当作概率参考。 想验证这条路是否通,直接开 MT5 搜 CatBoost 相关 EA 模板,把你的 K 线结构特征丢进去跑一次样本外测试,比看任何说明都快。
用 MQL5 门槛跑通 CatBoost 模型
这套思路的核心是用 Yandex 的 CatBoost 算法,在变量集受限、且对价格行为模式先做假设的前提下,去拟合市场状态模型。对交易者来说关键门槛很低:你不用懂 Python 或 R,只要会基础 MQL5 就够——作者本人也就是这个水平。 想评估机器学习在外汇 / 贵金属行情里到底有没有用,直接拿 MT5 接这套流程比空谈更实在。外汇与贵金属杠杆高、回撤快,模型输出只代表概率倾向,不等于方向确定性。 本文偏实操少学术,真要补底层理论可以去看 Vladimir Perervenko 的系列文章,但本篇目标就是让有 MQL5 底子的读者能自己复现一遍。
「启发式规则与特征驱动的根本分野」
把 MT5 里的 EA 逻辑抽掉下单接口,本质就是两件事:要么抓价格与指标之间的不均衡,要么用指标数值区间决定开平仓。老派做法靠开发者拍脑袋加条件,每加一条规则,样本内某段时间的权益曲线可能变好看,但换周期或换品种常常直接失效,而且条件堆得越多,触发次数越少——这是硬约束。 更麻烦的是优化。MQL5 策略测试器跑参数时,常把参数推到初始数据范围之外去搜最优,出来的极值若极少出现,大概率只是统计偏差而非真规律。变量一多,这种启发式搜索既过拟合又烧算力,效率很低。 机器学习换了一条路:只检查分析数据里实际存在的参数值来生成规则,用训练集限制解空间。它不给你「若 MACD 金叉则做多」这类不均衡逻辑,只提供带价格信息及成因的变量,也就是特征(预测因子)。特征必须真能影响你要的预测结果,那个结果叫目标变量,可以是分类标签也可以是回归值。 外汇与贵金属波动受宏观与流动性冲击,高风险,任何特征有效性都可能随机制切换而衰减,拿历史特征直接上线前务必在 MT5 用样本外数据验证。
◍ 把价格运动的前因装进因子
做预测模型,喂给它的不能只是当前这根 K 线的瞬时报价。MQL5 体系里,预测因子可以是时间、OHLC 及其派生的指标值,也能外挂经济数据、成交量、未平仓量、订单簿结构甚至期权隐含波动。我更倾向让模型拿到「导致当前状态的那段运动」——也就是说,因子要覆盖一段窗口内的价格变动信息,而不是单点快照。 具体落地时,因子可以分几类来搭:水平类(如日开盘价)、线性类(回归通道)、断开类(移动均线这类非线性输出);价格相对位置可框在固定点数、固定百分比、相对开盘/波动/跨周期趋势段。波动本身也要单独成因子。 事件时间维度很实用:从重要事件(当前柱或当日起点)算起过了几根柱、事件结束后又过了几根、持续总柱数,再加上小时/星期几这类周期位。事件动态则包括水平穿越次数(可带衰减权重)、首末次事件的高低价、单位时间点数速度。把 OHLC 换到别的坐标平面、或者丢进振荡器数值,也都能扩出因子。 跨周期、跨品种取因子都行,只要围绕你真要交易的标的。核心建议只有一个:因子量要够重现主价格动态。因子齐了,后面按基础策略条件搜模型会轻松很多。外汇和贵金属波动受事件驱动明显,因子缺失容易过拟合,实盘前请在 MT5 用历史数据复算覆盖度。
二分类目标怎么定
这篇里把学习目标压成最朴素的二进制:非 0 即 1。之所以不用多类标签,是后面要说的工程限制逼的,先记住结论——模型只学「做还是不做」或「做 A 还是做 B」。 两种挂法都可行。其一,1 代表开仓(或触发某个动作),0 代表不动;其二,1 代表开多,0 代表开空,等于把动作空间砍成两个互斥项。外汇和贵金属杠杆高,哪怕只分多空,错一次也可能吞掉周盈利,标签定义必须前后一致。 造标签别拍脑袋。可用最基础的价格行为规则批量打点:价格穿过某条水平(均线、枢轴都行)即触发;或固定从每小时第 N 根柱看价相对当根开盘的位置决定开还是弃。关键一条——尽量让 0 和 1 的样本量接近,MT5 里跑下来若某类占比超 70%,模型会偷懒全猜多数类,学到的是废权重。
「用 CatBoost 搭独立机器学习环境」
做这套信号模型不需要额外编程语言环境,只要去 Yandex 发布的渠道拿最新 Windows 可执行文件,比如 catboost-0.24.1.exe,双击就能跑独立版。它背后是开源梯度提升算法,由 Yandex 维护,后续的补丁和版本迭代有公司级支持,比个人库省心。 CatBoost 的本质是堆决策树:先建一棵树,再建下一棵专门修正前面所有树加总后概率响应的偏差,这种串行纠错机制就是梯度提升。外汇与贵金属行情噪声大、过拟合风险高,拿它做概率输出时务必用样本外数据交叉验证。 Yandex 有一份俄文演示材料,开英文字幕能看清底层逻辑,建议动手前先过一遍,避免把树深和迭代次数设得脱离实盘波动尺度。