从头开始采用 MQL 语言进行深度神经网络编程(基础篇)
📘

从头开始采用 MQL 语言进行深度神经网络编程(基础篇)

第 1/3 篇

在 MT5 里用 MQL 搭深度神经网络

MetaTrader 5 从 build 2940 起原生支持 MQL5 直接调用 OpenCL 与矩阵运算,这让在终端内写深度神经网络不再依赖外部 DLL。2022 年 2 月发布的示例帖在论坛拿到 3379 次查看、55 条讨论,说明手工撸神经网络的刚需一直存在。 外汇与贵金属杠杆交易本身高风险,用神经网络做信号过滤也只是降低噪声概率,不保证胜率。想验证可行性,最直接的就是开 MT5 新建 EA,把矩阵乘法写成原生 MQL5 函数跑一遍前向传播。 下面这段是原文给出的网络前向骨架,用 MQL5 矩阵类型做全连接层计算:

MQL5 / C++
matrix a = matrix::Eye(class="num">3);
matrix w = matrix::Rand(class="num">3, class="num">3);
matrix z = a.Mul(w);
matrix out = z.Tanh();

「用 MQL5 手搓一个深度神经网络」

机器学习热度起来后,很多交易者想用 MQL 语言落地深度学习,但社区里常见的人工神经元实现只到单层激活函数这一步,真正的深度网络一直是空白。 本文直接给出一套 MQL5 实现的深度神经网络:隐藏层用双曲正切(tanh)做激活,输出层用 Softmax 做概率归一。从网络结构定义到前向推理,一步步走完,你能在 MT5 里编译出可运行的EA雏形。 外汇与贵金属杠杆高、滑点跳空频繁,这类模型只解决「信号生成」一端,实盘前务必用历史数据做样本外验证,避免过拟合带来的概率误判。

◍ 人工神经元到底在算什么

做MT5里的神经网络信号之前,得先拆清楚单个神经元在干什么。它本质就是个带权重的数学算子:输入进来,乘上权重,求和,再过一道激活函数,吐出一个数。权重越大,对应输入对输出的拉动越强;训练算法的全部目的,就是找出一组能让任务误差最小的权重集合。 具体看内部五块:输入可以是行情特征(如收盘价、RSI),也能是上一层神经元的输出,离散或实数都行;权重是和每个输入相乘的因子,负责放大或抑制;网络输入函数把「每项输入×权重」全部加总成一个标量;激活函数决定这个标量怎么被压成最终输出,本文盯的是Tan-h和Softmax两类;输出再喂给下一层或被EA直接采样。 Tan-h把结果压到[-1,1],对正负偏离都敏感,适合抓多空动量;Softmax把一组值转成概率分布,总和恒为1,常放在最后一层做分类。外汇和贵金属波动受消息驱动,用这类模型做预判只是概率倾向,实盘前务必在MT5策略测试器里用历史数据回测,高杠杆品种爆亏风险不低。

用三层网把行情劈成买卖持

神经网络的结构借鉴了生物神经元的信号传递方式:若干层人工神经元前后串联,前一层的输出直接变成下一层的输入,最终汇总到输出层。我们这里不玩无监督聚类,也不做连续回归,只盯一个实用目标——把每一根 K 线之后的状态压成三类:买入、卖出、持有。 下面这段是一个带单隐藏层的极简前馈网定义,隐藏层 10 个神经元,输出层 3 个节点对应三态。外汇与贵金属波动剧烈,用神经网络做状态判别属于高概率辅助,不等于方向必然兑现。 网络能否训出来,关键看输入特征是否含未来函数。若把下一根收盘价直接喂进去,回测漂亮、实盘必死,这是 MT5 里跑 EA 前要先自查的红线。

「三层以上才算深度学习」

深度神经网络和单隐层网络最硬的区别就是层数。技术上,含输入和输出超过三个层、也就是隐藏层不止一个,就够格叫“深度”学习了,这不是营销词,是严格定义。 越往深层走,神经元识别的特征越复杂,因为它们把前一层的输出再做汇聚和重组。这种结构能吞下维度极高的数据集,参数经非线性函数展开后可达数十亿量级,单隐层网络基本没戏。 下图展示的是一个带 3 个隐藏层的深度网络:输入层 → 隐层1 → 隐层2 → 隐层3 → 输出层,每一层都在做特征的抽象升级。MT5 里若用 Python 桥接搭这类网络,先确认隐藏层数 ≥2,否则只是浅层感知机。

常见问题

先搞懂单个神经元怎么算加权求和和激活,再用三层网络做分类练习,别一上来就堆复杂模型。
就是输入乘权重求和再加偏置,过激活函数输出;偏置让决策边界能平移,不局限于原点。
可以,把你的模型和品种交给小布,它能替你盯盘口和信号变化,你只管调参和决策。
不一定,先检查数据归一化和学习率;三层以上才叫深度学习,但浅层也可能过拟合。
注意梯度消失和训练时长,初始化权重要稳,外汇贵金属波动大高风险,先小样本验证。