交易中的神经网络:运用形态变换器进行市场分析·综合运用
「把变换参数灌进绘制对象的收尾判定」
在 MQL5 里给自定义图形做透明度与渐变映射时,最后一步必须确认输出缓冲和梯度缓冲都写进去了,否则前面算的变换全白做。 下面这段收尾逻辑先判断 SetOutput 与 SetGradient 是否都返回成功,只要有一个失败就直接 return false,两个都过才 return true。 实际在 MT5 里跑时,若图形偶尔不显示,优先在这两个调用前打印 transp.getOutput() 与 transp.getGradient() 的数组长度,常见坑是缓冲未分配够 1 个元素的空间。
)
class="kw">return class="kw">false;
if(!SetOutput(transp.getOutput()) ||
!SetGradient(transp.getGradient()))
class="kw">return class="kw">false;
class=class="str">"cmt">//---
class="kw">return true;
}EURUSD H1 上跑通的训练与验证
我们用 MQL5 把 Molformer 框架落地后,进入训练与评估阶段:同时训三个网络——编码器读市场状态、参与者按学到的政策下单、评论者给动作打分并回灌修正信号。训练数据用 EURUSD 2023 全年 H1 真实历史,指标取标准参数,且训练集按迭代节奏定期刷新。 验证切到 2024 年 1 月的历史段。训出的政策在那个月跑了 25 笔交易,17 笔盈利,胜率 68%;平均和最大盈利交易规模约为对应亏损交易的两倍。净值曲线呈明显上行。 但测试窗口短、样本只有 25 笔,这个结论只说明模型有概率性潜力,不能外推成稳健收益。外汇和贵金属杠杆高、滑点突变频繁,任何 RL 政策在 MT5 里都要先开模拟盘重跑再谈实盘。
◍ 记住这一条就够了
Molformer 把单资产与按市场形态组合而成的异构图喂给模型,在真实历史数据上训练后,对未见过的行情结构有一定泛化倾向,回测显示其产出正向信号的概率高于随机基准。 文中 Test.mq5 在下单前用一段仓位轧差逻辑卡住越界手数,再判 min_lot 与止损空间: 若 temp[0] 与 temp[3] 任一小于 min_lot,或止盈止损点值不达标,EA 便不下单。Rezus666 反馈 temp[0]、temp[3] 总低于 min_lot,多半是样本收集阶段 Research 类 EA 未跑满品种导致的数组空洞。 外汇与贵金属属高风险品种,模型信号只作辅助,实盘前请在 MT5 用 Strategy Tester 重跑 Research→Study→Test 三套 EA 验证手数链路。
if(temp[class="num">0] >= temp[class="num">3]) { temp[class="num">0] -= temp[class="num">3]; temp[class="num">3] = class="num">0; } else { temp[class="num">3] -= temp[class="num">0]; temp[class="num">0] = class="num">0; } class=class="str">"cmt">//--- 购买控制权 if(temp[class="num">0] < min_lot || (temp[class="num">1] * MaxTP * Symb.Point()) <= class="num">2 * stops || (temp[class="num">2] * MaxSL * Symb.Point()) <= stops) { ... } else { ... } class=class="str">"cmt">//--- 出售控制权 if(temp[class="num">3] < min_lot || (temp[class="num">4] * MaxTP * Symb.Point()) <= class="num">2 * stops || (temp[class="num">5] * MaxSL * Symb.Point()) <= stops) { ... } else...