练习开发交易策略(基础篇)
📘

练习开发交易策略(基础篇)

第 1/2 篇

从零搭一个 MT5 策略原型

在 MT5 里练手开发交易策略,最实在的切入点是先写一段能跑通的 EA 骨架,而不是一上来追求圣杯。官方社区 2024 年 11 月 5 日发布的入门帖,上线当天就有 1354 次查看、1 条跟评,说明手动写策略的需求一直都在。 外汇和贵金属杠杆高、滑点随机,回测漂亮不等于实盘能活。建议先用历史数据跑通逻辑,再上模拟盘观察至少 20 根日 K 的表现,再谈参数微调。 下面这段 MQL5 是最小可运行专家顾问:初始化挂勾、报价事件里下市价单、反手平仓。复制进 MetaEditor 按 F7 编译,拖到 EURUSD 的 M5 图就能看到订单痕迹。

MQL5 / C++
class="type">int OnInit() { class="kw">return(INIT_SUCCEEDED); }
class="type">void OnTick() {
   if(PositionSelect(_Symbol)) { trade.PositionClose(_Symbol); }
   else { trade.Buy(class="num">0.1, _Symbol); }
}

◍ 策略骨架与内在自洽

一套能拿来跑的交易策略,本质是一份固定计划:靠做多或做空特定品种去博取回报。把它拆开看,多数策略都离不开四块:品种与周期、指标或过滤器、开平仓规则、资金与风控。外汇和贵金属杠杆高,这几块任何一处自相矛盾,实盘就可能放大亏损。 自洽比花哨重要。比如你定了资金管理法,要求止损止盈提前锁死,又往里塞追踪止损——前者要固定出场,后者会随价格移动提前砍仓,利润可能低于预期甚至和原规则冲突。解法只有两条:用固定仓位手数,或干脆去掉追踪止损。 策略测试器是验证想法的硬工具。在 MT5 里跑历史回测,能直接看出策略的优劣势,还能用优化把参数调到更稳的区间。任何策略都得有统计优势撑着,而且这优势得在长周期里持续存在,才可能值得上实盘。

「用均线差值的极端值反杀零轴交叉」

经典 SMA 交叉法的逻辑是价格上穿均线买、下穿卖,本质是看「价格减均线」的差值符号翻转。但在 EURUSD H1、N=24 的采样里,这个差值的分布并不均匀,且整体偏向负值——也就是说,傻等差值过零才开仓,样本里有一半以上的时机处在劣势区。 真正有经验的人看到这种偏态分布反而踏实:均匀分布才可怕,那意味着跟抛硬币没两样,长期对等出正负,谁也赚不到。破局思路是别用零轴当中线,而去抓差值的极端。 实操上,先把历史差值跑出来,定一个触发带。取最大值和最小值的 15% 作为开仓阈值:当前差值小于下限就买,高于上限就卖。平仓用 45% 阈值(略低于中位数 50%):买仓在差值升过下限时平,卖仓在差值跌破上限时平。 回测用 EURUSD H1、2023 全年,EA 默认参数下余额曲线走得不算难看。分布不对称,所以给买卖分设不同阈值可能进一步改善;另外盯差值时顺带看均线本身的方向变化,若差值扩而均线缩,信号倾向更强。外汇与贵金属属高风险品种,上述概率优势不代表稳定盈利,请先在 MT5 策略测试器自验。

用双 SMA 与过滤器给信号降噪

把价格当成周期为 1 的均线后,下一步直接用两条不同周期的 SMA 来产生建仓信号:长周期线看主趋势,短周期线捕捉趋势转向的瞬间。计算逻辑和单均线策略一致,只是把「当前价格」换成短周期 SMA 值,参数自由度随之提高。 在短 SMA 上挂一个方向过滤器,只在它拐头向上时允许买、拐头向下时允许卖,开仓次数会明显缩减,账户负载随之下降。外汇与贵金属属高风险品种,这种降频不保证收益,只是改变仓位分布。 回测对比很直接:无过滤器时总净利润 1670.84、利润因子 5.53、夏普 2.91;启用过滤器后总净利润降到 379.20、利润因子 2.66、夏普 1.95,但毛损失从 -368.89 收敛到 -228.55。过滤器既可单用也可叠用,既能控开仓也能控平仓,MT5 里把 Filter 开关翻一遍就能复现这条曲线。

常见问题

先定信号逻辑再写骨架:用双均线差值判断趋势,极端值反拉零轴时出场,搭出最小可运行版本后再逐步加过滤。
多数因为策略骨架依赖未来函数或参数过拟合;检查信号是否仅用已闭合K线,并用样本外数据验证内在自洽。
可以,把策略思路和参数发给小布,它能点出信号自洽风险、提示零轴交叉类陷阱,并给出降噪建议。
用历史波动率归一化差值,只在超过近200根K线90分位时触发,配合双SMA方向过滤可明显降噪。
优先拉长过滤器周期至趋势确认,再检查入场是否踩在均线粘合区;外汇贵金属波动大,务必小仓验证高风险。