开发交易算法的科学方法(基础篇)
📘

开发交易算法的科学方法(基础篇)

第 1/2 篇

◍ 用科学方法搭交易算法

在 MT5 上写交易算法,最容易掉进的坑是把灵感当系统:凭一根 K 线形态就开仓,回测都不跑就挂真仓。科学方法的第一步,是先定义可证伪的假设——比如“在 H1 周期,RSI(14) 跌破 30 后两根 K 线内回归 30 上方,价格倾向反弹”,而不是“超卖就会涨”。 这套思路在 MT5 环境里能直接落地:用 MQL5 把假设写成可重复执行的 EA,用历史数据跑出样本量,看胜率和回撤分布。外汇与贵金属杠杆高、跳空频繁,任何策略都只是概率优势,不存在必然。 一个最小验证单元是先不接交易接口,只做信号统计。下面这段 MQL5 片段演示了如何在每根 K 线收盘时读取 RSI 值并标记条件,方便你复制到 MT5 策略测试器里数信号次数。

MQL5 / C++
class="type">class="kw">double rsi = iRSI(_Symbol, PERIOD_H1, class="num">14, PRICE_CLOSE);
if (rsi < class="num">30) {
   class=class="str">"cmt">// 记录超卖事件
   EventChartCustom(class="num">0, class="num">1, class="num">0, class="num">0, "RSI_Oversold");
}

「为什么多数人熬不出能赚钱的算法」

金融市场里不挂一套像样的交易系统就下单,账户净值大概率会走向归零。这不是某个市场独有的事——外汇、贵金属这类高杠杆品种,缺乏经验的人长期胜率倾向趋同于零,因为没有正期望的逻辑兜底。 市面上的套利、高频、期权组合听起来数学上无懈可击,但落地都有硬伤:要么收益薄到覆盖不了点差,要么对流动性和订单执行延迟敏感到了毫秒级。这也是为什么很多老手宁可自己写 EA,也不信卖方的现成策略。 优化器被滥用了。新手把参数丢进 MT5 策略测试器狂跑,挑一段历史回测最漂亮的数值,以为挖到宝。实际上那只是把曲线拟合进了过去的一小段行情,未来实盘十有八九吃亏。优化器该做的是给「已经逻辑成立」的系统找最优参数,不是把亏损逻辑硬拗成盈利。 真正有用的思路极少公开。能稳定吸走流动性的方法,开发者自己默默跑就够了,发出来只会多一群抢单的对手。于是后来者只能从零搜集碎片、自己踩坑,理解基础规则往往耗掉好几年。这行迷信比科学多,但科学方法——假设、验证、证伪——在算法交易里同样管用。后面我们会拿一个简单系统,演示怎么用这套路避开玄学。

从区块图里挖趋势延续的概率优势

写交易算法,第一步不是急着下单,而是先找到一段价格模式,让它在交易周期里的数学期望为正。这个模式可以是先有假设再去验证,也可能是在翻数据时被偶然撞见——两种路径在量化研究里都常见。 我之前用过区块图而不是普通烛形图来离散化价格,这次继续沿用。基于前面关于趋势定义的研究,一个核心观察是:多数市场呈现趋势结构,趋势延续的概率高于反转。根子在于,价格序列 N 步增量的分布密度,比每步反转概率恒为 50% 的过程要更宽、更矮。 拿 AMD 股票实测说话:取 40 步为一段,跑 5000 个样本。参考分布(反转概率 50%)里,价格通过 0 个垂直步应出现约 626.85 次;而 AMD 实测只出现了 390 次。也就是说,40 步内价格卡在零垂直位移的频率明显更低,趋势延续的概率倾向在 50% 以上。换句话说,价格已经移动超 10 点后,继续同方向再走 10 点的可能性,大于掉头。 垂直步数怎么量?把 40 个区块的价格通道压缩成纵向跨过的区块数。图 2 示例里那段价格 40 步跨了 7 个垂直步;再对剩下 4999 段各算一遍,横轴摆振幅、纵轴摆命中次数,直方图就出来了。外汇和贵金属同样有这类结构,但杠杆高、跳空频繁,分布尾部更肥,直接套股票参数风险偏高,建议先在自己的 MT5 上重跑样本。

◍ 验证趋势切片里的两道暗坑

把模式铺到全样本再看一遍:我跑过30个货币对、俄美两地大量股票、十余种主流加密货币和商品,每个品种都扫了从1点到数千点块大小的尺度。结论很直白——所有工具在任何尺度下都倾向有趋势结构,但尺度越大趋势性越弱;垂直穿过N点后价格同向往复的概率仍超50%,这也是「每向上块开买、每向下块开卖」能成立的前提。 但真要下场,两块切片法本身的裂缝会吞掉利润。其一是烛形收价和区块收价的错位:区块用1分钟烛形收盘价搭建,信号只在烛形关掉后才生成,等仓位按市价开进去,价格已经滑开一截。图3里就有一根下跌块收价高于下跌烛形收价的情况,这段 gap 直接刮走本该吃到的趋势收益,预期收益会被压到零附近。 其二是佣金和点差。市场那点趋势强度,可能只够覆盖手续费和滑点。外汇能用限价单削点差,但佣金照付,而且限价单本身也消不掉外汇点差;用市价单开平,坏价损失加佣金往往大于模式产出。外汇和贵金属本身就是高杠杆高风险场,这两道缝不量清楚,策略只是纸面倾向。 落地前先算四笔账:在大样本上测趋势延续概率拿准确期望;统计区块收价与预期开仓价之间的点差均值;跑市价或外汇符号时把平均点差加佣金算进去;存款货币计价的间接费用从期望里扣掉,剩为正才往下走。 手算没错,但更干脆的是写个轻量 EA 实跑——至少能看见现成算法的真输出,也可能漏掉我们没料到的微观行为。假设四笔账扣完还是正,就可以拿这模式去拼交易算法了。

常见问题

多数人是先写代码再找理由,缺了假设-区块验证环节;先用历史区块图统计趋势延续概率再动手,能少走弯路。
把行情按固定时长切片,统计每段突破后同向运行的比例;若比例稳定高于随机值才有优势,否则只是噪声。
可以,小布能基于品种页的AIGC诊断标出你切片里的样本偏差与过拟合迹象,你照提示调参数就行。
一是样本量太少导致概率虚高,二是用未来数据偷偷修正边界;两者都会让回测漂亮实盘崩。
能,先从单品种单周期区块统计做起,只验证一个假设,跑通再叠层,别一上来搞多因子。