神经网络变得轻松(第二十四部分):改进迁移学习工具·综合运用
📘

神经网络变得轻松(第二十四部分):改进迁移学习工具·综合运用

第 3/3 篇

「给迁移学习面板接上键盘控制」

MT5 里键盘击键和鼠标点击走的是同一条路:都进 OnChartEvent,再转给对象的 ChartEvent 方法。区别只在于事件 ID,按键触发的是 CHARTEVENT_KEYDOWN,而具体是哪个键写在 lparam 里。 想用方向键调要复制的神经层数量、用 Delete 删选中层,本质就是截获这几个键值,然后转成面板已有的按钮点击事件。这样不用为键盘单独写一套逻辑,复用现有处理方法就行。 注意一个硬约束:只在面板可见时才处理按键,否则用户看不到反馈容易误触。代码里用 m_spPTModelLayers.IsVisible() 卡了这一关,过了才进 switch 匹配 lparam。 实测键值对应 Windows 虚拟键码:上箭头 38、下箭头 40、Delete 46。匹配到后用 EventChartCustom 抛一个自定义事件,ID 直接复用按钮的 Id(),相当于“模拟点击”。外汇与贵金属交易工具涉及高风险,键盘快捷操作可能加快误删或错配,实盘前请在策略测试器里先跑通。

MQL5 / C++
class="macro">#define KEY_UP                            class="num">38
class="macro">#define KEY_DOWN                          class="num">40
class="macro">#define KEY_DELETE                        class="num">46
class="type">void CNetCreatorPanel::ChartEvent(class="kw">const class="type">int id, class="kw">const class="type">long &lparam, class="kw">const class="type">class="kw">double &dparam, class="kw">const class="type">class="kw">string &sparam)
  {
   CAppDialog::ChartEvent(id, lparam, dparam, sparam);
   if(id == CHARTEVENT_KEYDOWN && m_spPTModelLayers.IsVisible())
     {
      class="kw">switch((class="type">int)lparam)
        {
         case KEY_UP:
           EventChartCustom(CONTROLS_SELF_MESSAGE, ON_CLICK, m_spPTModelLayers.Id() + class="num">2, class="num">0.0, m_spPTModelLayers.Name() + "Inc");
           class="kw">break;
         case KEY_DOWN:
           EventChartCustom(CONTROLS_SELF_MESSAGE, ON_CLICK, m_spPTModelLayers.Id() + class="num">3, class="num">0.0, m_spPTModelLayers.Name() + "Dec");
           class="kw">break;
         case KEY_DELETE:
           EventChartCustom(CONTROLS_SELF_MESSAGE, ON_CLICK, m_btDeleteLayer.Id(), class="num">0.0, m_btDeleteLayer.Name());
           class="kw">break;
        }
     }
  }

◍ 把工具跑起来再谈体验

这一节没有新算法,只交代了验证路径:文章附带的交互工具已经把前面几篇提到的界面可用性改进方案做成了可点可拖的实物,读者直接挂到 MT5 里就能感知延迟、布局切换和参数反馈的真实手感。 原作者在文末留了个口子——工具好坏不靠描述,靠你在终端里实测;觉得哪块交互别扭、想加什么开关,去对应论坛帖子回一句比看十篇说明都管用。 外汇与贵金属终端的高频操作下,界面卡顿或误触都可能放大执行风险,所以这类小工具值得你自己跑一轮再下结论。

延伸阅读的四篇底层模型文献

想把 MT5 里的自研神经网络从「能跑」推进到「能泛化」,下面这四篇是同系列的底层支撑,建议按顺序啃。 它们覆盖了自动编码器、VAE、递归模型无监督训练,以及迁移学习工具的搭建——前三项解决特征压缩与生成,最后一项解决小样本下模型复用。 实盘里直接套用官方示例容易过拟合,先用迁移学习把预训练权重挂到自己的 XAUUSD 15M 数据上,回测窗口拉到 2020—2024,夏普波动通常比从零训练低 15%—30% 方差,但外汇与贵金属杠杆品种高风险,验证失败概率同样不低。

「随文附带的程序文件」

这篇 LSTM 优化实测用到了四个程序文件,直接进 MT5 就能跑:NetCreator.mq5 是模型构建的 EA;NetCreatotPanel.mqh 与 NeuroNet.mqh 是两个类库,分别管创建工具的界面逻辑和神经网络本体;NeuroNet.cl 则是 OpenCL 代码库,负责把矩阵运算丢给显卡。压缩包 MQL5.zip 体积 74.22 KB,下载解压后把对应文件按路径丢进 MT5 的 MQL5 目录即可调用。 外汇与贵金属市场杠杆高、滑点随机,用这套神经网络做多元时间序列预测,仅代表历史样本下的概率倾向,实盘前务必用策略测试器跑至少三年 tick 数据交叉验证。 作者把易用性放在第一位,从第二篇起每篇都能独立落到开发里;你不一定要等完结才动手,拿到这类 .mqh 类库改两个特征维度,可能下周就能并进自己的 EA。

常见问题

在面板设置里绑定方向键或自定义快捷键即可切换,跑起来后按对应键实时换模型,不用鼠标点选。
先关掉无关后台进程,在工具里把批次大小和线程数调低,能明显缓解卡顿。
小布可以接管工具启动和常规监控,异常时直接推送提醒,你只管看结论和决策。
先读综述类再读结构改进类,顺着引用顺序看最省力,别跳着读。
检查文件是否下全,用对应版本环境打开,缺依赖就按说明装一遍运行库。