找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
首页论坛EAHub 外汇论坛
查看: 30|回复: 0

花了三千买EA全爆仓后,我花0元自己写了一个——MQL4从零入门实录

[复制链接]

4万

主题

54

回帖

4万

积分

管理员

积分
45954
发表于 2026-8-27 22:44:00 | 显示全部楼层 |阅读模式
先说个真事。去年我刚接触外汇EA,在EAHub上看到各种"月收益30%""回撤不到5%"的EA,心动得不行。一口气买了5个,从200块到800块的都有,总共花了差不多三千块本金。结果呢?三个月时间,账户从8000亏到不到6000,亏了两万多人民币。最气人的不是亏钱——是我根本不知道为什么会亏。EA在跑,单子在开,但每次爆仓都是事后才发现:"哦,原来那天非农数据出来EA还在加仓。"后来我痛定思痛,决定不再买别人的黑盒EA,自己学MQL4写策略。没想到,这条路比我想象的简单得多。为什么你应该自己写EA三个理由:你知道每一行代码在干什么——不会买了EA才发现它是马丁策略参数你自己定——止盈止损、仓位大小、交易时段,全部可控0成本——MetaEditor是免费的,MT4自带的

今天我就带你从零写出人生第一个能自动交易的EA。不需要任何编程基础。第一步:打开MetaEditor打开你电脑上的MT4,按键盘上的 F4,MetaEditor就弹出来了。然后点顶部菜单:文件 → 新建 → EA交易(模板)→ 下一步。名字填 MyFirstEA,点完成。系统会自动生成一个EA模板,代码大概长这样://+------------------------------------------------------------------+//|                                                MyFirstEA.mq4     |//|                                                          郭教授   |//|                                             https://eaceping.com |#property copyright "郭教授"#property link      "https://eaceping.com"#property version   "1.00"#property strict//| Expert initialization function                                   |int OnInit()  {//--- 创建EA时执行一次   return(INIT_SUCCEEDED);  }//| Expert deinitialization function                                 |void OnDeinit(const int reason)  {//--- 移除EA时执行一次  }//| Expert tick function                                             |void OnTick()  {//--- 每次价格变动都执行(重要!)  }

别被这些英文吓到,我逐行解释:OnInit() → EA刚挂上图表时跑一次(初始化)OnDeinit() → EA从图表上移除时跑一次(清理)OnTick() → 核心! 价格每跳动一下就跑一次,你的策略逻辑全写在这里

你只需要在 OnTick() 里面写策略就行了。第二步:理解你的第一个策略在写代码之前,先把策略说清楚——代码只是把人的想法翻译给电脑:当短期均线(5周期)从下方上穿长期均线(20周期)时,做多一单;当短期均线下穿长期均线时,平掉多单。这就是经典的均线金叉策略,也是全球无数量化交易者的入门第一课。第三步:写代码(30行搞定)把下面这段代码完整替换 OnTick() 函数里的大括号内容:void OnTick()  {   //--- 1. 计算两条均线的值   double maFast_0 = iMA(NULL, 0, 5, 0, MODE_SMA, PRICE_CLOSE, 0);  // 5均线,当前K线   double maSlow_0 = iMA(NULL, 0, 20, 0, MODE_SMA, PRICE_CLOSE, 0); // 20均线,当前K线      double maFast_1 = iMA(NULL, 0, 5, 0, MODE_SMA, PRICE_CLOSE, 1);  // 5均线,前一根K线   double maSlow_1 = iMA(NULL, 0, 20, 0, MODE_SMA, PRICE_CLOSE, 1); // 20均线,前一根K线      //--- 2. 判断有没有持仓   bool hasBuy = false;  // 默认没有多单   for(int i = 0; i < OrdersTotal(); i++)     {      if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))        {         if(OrderSymbol() == Symbol() && OrderType() == OP_BUY)           {            hasBuy = true;  // 找到了一个多单            break;           }        }     }      //--- 3. 金叉出现 + 没有持仓 → 开多单   if(maFast_1 <= maSlow_1 && maFast_0 > maSlow_0 && !hasBuy)     {      double stopLoss = Ask - 500 * Point;    // 止损500点      double takeProfit = Ask + 1000 * Point; // 止盈1000点            int ticket = OrderSend(Symbol(), OP_BUY, 0.01, Ask, 3, stopLoss, takeProfit, "金叉开多", 777, 0, clrGreen);     }      //--- 4. 死叉出现 + 有多单 → 平仓   if(maFast_1 >= maSlow_1 && maFast_0 < maSlow_0 && hasBuy)     {      for(int i = 0; i < OrdersTotal(); i++)        {         if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))           {            if(OrderSymbol() == Symbol() && OrderType() == OP_BUY)              {               OrderClose(OrderTicket(), OrderLots(), Bid, 3, clrRed);              }           }        }     }  }

代码逐行拆解(配合上面数字标注的4个步骤看):第1步:计算均线值iMA(NULL, 0, 5, 0, MODE_SMA, PRICE_CLOSE, 0) →

NULL 当前图表品种(不用改)0 当前时间周期(不用改)5 均线周期——改这里就能调整快慢均线MODE_SMA 简单移动平均PRICE_CLOSE 用收盘价计算0 当前K线(1=前一根K线)

我们算了两次:当前K线和前一根K线,用来判断"金叉"(交叉发生的瞬间)

第2步:判断有没有持仓OrdersTotal() 总订单数OrderSelect() 选出某一单OrderType() == OP_BUY 判断是不是多单如果已经有单了就不重复开

第3步:金叉开多maFast_1 <= maSlow_1 前一根K线快线在慢线下方(或交叉)maFast_0 > maSlow_0 当前K线快线跑到慢线上方了 = 金叉!OrderSend() 下多单:0.01手、止损500点、止盈1000点

第4步:死叉平仓maFast_1 >= maSlow_1 前一根快线在上方maFast_0 < maSlow_0 当前快线跑到下方了 = 死叉!OrderClose() 平掉多单

第四步:回测看看效果代码写好后,按 F7 编译。如果左下角没有报错,恭喜你——你的第一个EA已经可以跑了。在MT4里按 Ctrl+R 打开策略测试,选你的 MyFirstEA,品种选EURUSD、周期选H1,点开始。等测试跑完,你就能看到这个EA到底能不能赚钱了。你可以自己改的三个参数[td]

参数在哪里改作用快均线周期代码里的 5金叉灵敏度:越小越敏感慢均线周期代码里的 20趋势判断:越大越稳定止损止盈代码里的 500 / 1000风险控制写在最后这只是一个最基础的入门策略,实盘大概率赚不到钱。但它的意义在于——从这一刻开始,你不再是一个只会花钱买EA的人,你开始理解EA背后的逻辑了。我最初写这个策略的时候,EURUSD H1回测结果是亏损的。然后我开始调整参数、加过滤条件、换品种测试,慢慢地账户曲线开始往上走了。那种感觉,比买到一个赚钱的EA爽一百倍。你买过几个EA?现在还活着的还有几个?评论区聊聊,我帮你分析问题出在哪。下一篇预告:如何用MT5回测数据判断一个EA是马丁策略——1分钟教你看穿黑盒EA的把戏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|EAHub外汇论坛

GMT+8, 2026-10-9 15:30 , Processed in 0.119550 second(s), 19 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表