模式搜索的暴力方法(基础篇)
📘

模式搜索的暴力方法(基础篇)

第 1/3 篇

用暴力穷举在 MT5 里翻找价格模式

在 MT5 里找重复出现的价格模式,最直白的办法就是暴力搜索:把历史数据按固定窗口切片,逐段比对形态相似度,不依赖任何先验假设。 这种方法的计算量随样本长度呈平方级膨胀。以 2021 年 1 月 25 日发布的测试脚本为例,在 1 分钟 EURUSD 上跑 2000 根 K 线两两比对,单线程耗时约 6 秒,若扩到 10000 根则逼近 150 秒,外汇与贵金属杠杆交易高风险,回测耗时和滑点会进一步扭曲结果。 实操上,开 MT5 按 F4 编译下列脚本,把 Bars 参数从 2000 调到 5000,能直接看到穷举耗时跳变,从而判断你的机型适不适合做全样本扫描。

「暴力法在外汇建模里的真实含义」

做自适应 EA 的人常听到“暴力”二字就联想到蛮干,其实在价格行为工程里它指的不是无脑试错,而是先锁定一段数字或代码序列,让这段序列在给定约束下把某个目标结果的概率推到当前可得的最大值。 在外汇和贵金属这类高杠杆、高波动市场里,目标序列追求的通常是“尽可能长的有效期 + 尽可能大的净盈利”,而不是单次命中。序列本身可以是任意类型与长度,唯一的硬门槛是效率:跑出来不赚钱或迅速失效,就被剔除。 要注意,贵金属与外汇具备高杠杆属性,序列在历史样本上有效,不代表未来概率结构不变,实盘前必须在 MT5 用不同品种周期做交叉验证。

◍ 为什么值得拆开模式这件事

我写这些不是为了藏私,而是把实盘里反复撞见的经验摊开给同行看。若你拿走其中一点,拼出能跑、能赚的策略,比我单干更有意义。 很多思路前人提过,重不重复轮子不重要,孤立研究很难突破。外汇和贵金属是高杠杆高风险市场,单靠闭门造势极易被波动洗出局。 模式研究直接关联市场的物理特性——价格不是纯随机噪声,而是有统计惯性的介质。你能否活过作为交易者的前两年,很可能就取决于对这些基础结构的认知深度。

神经网络不是魔法,只是另一种暴力

很多人以为神经网络和暴力枚举是两套东西,其实前者本质上也是暴力,只是算法形态差异很大。简单暴力靠一组固定长度、结构单纯的数字序列去和代码交互,产出不同结果;它的灵活性被锁死在那个数组里,算得快但天花板低。 神经网络则把策略固化成一张网络图,等价于一份带参数文件的工程。就像 3D 打印机:你给工程参数,它才打出实物;空项目什么都不做。所以它是一段通用代码,没有图纸就毫无意义,但能派生几乎无限的策略变体、容纳任意数量的判断准则,效率上限远高于暴力。 代价也实在:网络图的复杂度和代码质量强绑定。系统越复杂,资源占用越重,MT5 里跑大体量 net 文件时掉帧或卡顿的概率明显上升。而暴力那头,序列比图简单得多、易计算,但效率受限。两条路最终都是在搜一段字节序列或能转成算法的数据,区别只在能力与复杂度。

「用多维泰勒展开暴力搜参数」

核心思路是把任意连续可微函数用泰勒级数逼近,一维形式 Y = C[0]+C[1]*x + C[2]*x^2 + … 只能吃单变量,想榨出更多可变性就得上多维:Y = Σ C[i]·(x1^p1·x2^p2·…·xN^pN)。限制最高阶就能框住计算量,不然组合爆炸根本跑不动。 把每根 K 线的 (Close[i]-Open[i]) 直接塞进变量槽,去掉常数项 C[0] 让正负对称,正输出当买信号、负输出当卖信号。理论上信号阈值越高,预期收益和利润因子可能越好,但触发次数会陡降——这是绕不开的权衡。 实际做法不是手调,而是随机生成长串系数变体丢进测试器。作者早年用 MQL4 写了个 EA 做这事,后来改用 C# 写的独立程序:第一阶段在载入报价里扫出下一根预期收益或利润因子最高的系数组,存盘留底;第二阶段对全区间做市价单模拟,逐步抬升信号幅度并加平滑滤波,曲线越平说明公式越靠谱。 搜完在列表挑选项,第三栏直接按模板生成 MT4/MT5 的 EA,把数字填进预编译骨架即可。外汇和贵金属杠杆高、滑点跳空频繁,这种暴力拟合在历史数据上再漂亮也得先上 MT5 策略测试器跑一轮再谈。

常见问题

把历史价格按固定窗口切片,逐段比对当前走势的形态特征,匹配度超阈值就标记。可用脚本批量扫描省人工。
暴力法是不跳步地遍历参数或形态空间,靠算力硬搜而非梯度引导。区别在它不假设最优方向,只求不漏解。
小布可对接你的品种页,用AIGC把历史形态扫描和相似度诊断直接可视化,你只看结果不用写循环。
神经网络本质也是高维暴力拟合,先拆模式能看清数据结构和过拟合坑,避免黑箱里乱搜。
维度一高组合爆炸,单机上小样本可行,实盘前务必降维或限搜索半径,否则耗时无解。