MQL5写一个简单EA:开仓、止损与移动止损的骨架

📂 MT5高阶进阶专区 🕒 2026年10月20日 📖 2 分钟阅读 💬 0 条评论

很多想学 MQL5 的人卡在第一步:看了半天语法,不知道从哪下手。其实一个能用的 EA 没那么复杂,核心就三段逻辑:什么时候开仓、止损在哪、盈利后怎么保护。这篇带你写一个最小可用的 EA 骨架,跑通之后,剩下的都是在这个骨架上加肉。

MQL5写一个简单EA:开仓、止损与移动止损的骨架

先搭好框架

在 MetaEditor 里新建 EA(方法见MQL5开发环境搭建),你会得到一个包含 OnInit、OnTick、OnDeinit 三个函数的模板。我们的逻辑全写在 OnTick 里,因为它在每个报价到来时都会执行。先用注释把三块逻辑标出来:开仓判断、止损检查、移动止损,代码结构一目了然。

开仓逻辑:最简单的条件

为了让骨架尽量短,用一个最简单的规则:价格站上 20 均线就开多,跌破就开空(没有持仓的前提下)。用 iMA() 取均线值,和 SymbolInfoDouble(SYMBOL_BID) 的当前价比较,条件满足就调用 OrderSend() 开仓。先别追求策略质量,跑通“条件满足能开仓”这一步,就成功了一半。

止损逻辑:开仓时一起带上

开仓时直接把止损价格填进订单请求:比如做多时止损设在开仓价下方 200 点(换算成价格用 _Point 计算)。这样做的好处是止损随单存在,即使 EA 出问题,止损也能保护账户。止损的计算和设置思路可以看MT5止损止盈设置。

移动止损:让利润跑起来

移动止损的实现思路:每次 OnTick,检查当前价格比开仓价高了多少,如果浮盈超过预设值,就把止损上移到“当前价 − 保护距离”。用 PositionSelect() 找到持仓,PositionModify() 修改止损。代码就几行,但逻辑要写清楚:只向上移动,绝不向下移动。

跑通之后做什么

骨架写完后,先编译(F7),再挂到图表上跑模拟盘观察,然后进策略测试器回测,看看这套规则在历史行情里的表现。回测方法可以看MT5策略测试器使用。别急着优化参数,先把“开仓、止损、移动止损”这条链路跑稳,EA 开发的第一课就毕业了。更多量化内容在MT5高阶进阶专区。