最近帮很多朋友做EA测评,发现很多人想学EA编程但卡在第一步——不会英文、看不懂代码。
今天这篇就是给零基础的人写的。我会把每一行代码的意思都翻译成中文,看完你就能写出自己的第一个EA。
第一步:打开MT5的代码编辑器
打开你的MT5 → 左上角「工具」→「MetaQuotes语言编辑器」(或者直接按F4)
进去后点「新建」→「EA交易」→ 下一步 → 起个名字比如 MyFirstEA → 完成。
你会看到一个自动生成的代码模板。
第二步:看懂模板代码
//+------------------------------------------------------------------+ //| MyFirstEA.mq5 | //| Copyright 2026, 郭教授 | //| https://eaceping.com |前四行是注释,//开头的都是注释,电脑不会执行,写给人看的。
#property copyright "Copyright 2026, 郭教授" #property link "https://eaceping.com" #property version "1.00"这三行定义了EA的属性:
copyright— 版权信息link— 你的网站链接version— EA版本号
int OnInit() { return(INIT_SUCCEEDED); }OnInit()是EA加载时运行的函数。int表示返回一个整数。return(INIT_SUCCEEDED)告诉MT5「加载成功」。
void OnDeinit(const int reason) { }OnDeinit是EA被移除时运行的函数。void表示不返回任何值。运行时什么也不做(空函数体{})。
void OnTick() { // 这里是核心!每次价格变动都执行 }OnTick()是EA的心脏——只要价格跳动一次,这个函数里的代码就执行一次。所有交易逻辑都写在这里。
第三步:写第一个策略——金叉买入,死叉卖出
void OnTick() { // 1. 获取当前K线的收盘价 double close1 = iClose(_Symbol, PERIOD_M1, 1); // 前一根K线 double close2 = iClose(_Symbol, PERIOD_M1, 2); // 前两根K线 // 2. 计算两根K线的简单移动平均线(MA) double ma1 = iMA(_Symbol, PERIOD_M1, 10, 0, MODE_SMA, PRICE_CLOSE); double ma2 = iMA(_Symbol, PERIOD_M1, 10, 0, MODE_SMA, PRICE_CLOSE); // 3. 金叉:前一根在MA下方,当前在MA上方 → 做多 if(close1 < ma1 && close2 > ma2) { // 下单:做多 XAUUSD 0.01手 MqlTradeRequest request = {}; // 创建交易请求 MqlTradeResult result = {}; // 接收交易结果 request.action = TRADE_ACTION_DEAL; // 立即成交 request.symbol = _Symbol; // 当前品种 request.volume = 0.01; // 0.01手 request.type = ORDER_TYPE_BUY; // 做多 request.sl = 0; // 止损(暂不设) request.tp = 0; // 止盈(暂不设) request.deviation= 10; // 允许10点滑点 OrderSend(request, result); // 发送订单 } }第四步:代码逐行翻译
| 代码 | 中文意思 |
double close1 | 声明一个小数变量叫 close1 |
iClose(_Symbol, PERIOD_M1, 1) | 获取当前品种M1周期第1根前K线的收盘价 |
iMA(...) | 计算移动平均线(10周期,简单方式,用收盘价) |
if(close1 < ma1 && ...) | 如果满足条件(金叉),大括号里的代码执行 |
MqlTradeRequest | 结构体,用来装交易指令 |
request.action = TRADE_ACTION_DEAL | 告诉MT5"马上成交" |
request.type = ORDER_TYPE_BUY | 订单类型=做多 |
request.volume = 0.01 | 交易手数=0.01 |
OrderSend(request, result) | 发送订单! |
第五步:编译运行
按F7编译(就是检查代码有没有写错)。如果下面日志显示 "0 errors, 0 warnings",恭喜!
把EA拖到XAUUSD图表上,等K线出金叉就会自动下单。
常见问题
Q:为什么我的EA不交易?
A:检查是否启用了「算法交易」——MT5右上角那个小按钮要点亮。
Q:可以改手数和品种吗?
A:可以,改request.volume和request.symbol的值就行。
Q:还想学更多怎么办?
A : 我在 https://eaceping.com 上持续更新EA编程教程,从零基础到能写完整策略都有。还有现成的EA可以看源码学习。
总结
从零到写出能自动交易的EA,你只需要:
- 会用 F4 打开编辑器
- 会复制代码
- 会按 F7 编译
就这么简单。难的从来不是编程,是迈出第一步。
作者:郭教授 - eaceping.com EA测评与编程教学