初学者快速入门或简明指南(基础篇)
📘

初学者快速入门或简明指南(基础篇)

第 1/3 篇

MT5 入门资料的分布现状

MetaTrader 5 的官方知识区里,有一类被标为「初学者快速入门或简明指南」的栏目,定位就是给刚装好终端的人看的基础材料。 这类内容里有一篇示例性文章,发布时间是 2013 年 10 月 24 日 11:48,作者是 Dmitriy Parfenovich,累计浏览量到了 19 541,评论数 23。 从这几个数字能看出,即便过了十年,MT5 新用户找基础指引的需求仍然稳定,老帖的长尾流量在外汇和贵金属交易者圈子里不算低。 如果你刚接触 MT5,直接翻终端内置帮助文档的「示例」分类,比盲搜视频更高效;外汇和贵金属杠杆交易风险高,先用模拟账户跑通流程再上实盘。

「这套内容写给谁看」

本系列面向没碰过 MQL5 编程的交易者,目标只有一个:用最少的概念把 EA 和指标跑起来。 原文作者明确说,内容刻意避开难懂示例,所以已经会写 EA 的人从这里拿不到太多新东西,信息密度偏低。 如果你开过 MT5 终端、但没建过 mq5 文件,这一节就是给你垫脚的——后面几节会直接上可复制的代码,不需要先啃语法书。

◍ EA 程序的四块骨架与空模板解读

用 MQL 写的 EA,本质是一段告诉终端何时动手、何时收手的程序。结构可以无限堆块,但 MetaEditor 新建文档给出的默认模板,已经把职责切得很清楚:参数区、OnInit、OnDeinit、OnTick 四块,分别对应「被人看见的设定」「启动初始化」「退出清理」「逐笔行情驱动」。 参数块(默认代码第 6–8 行)只在 EA 加载进终端的配置框里出现,写版本、作者、描述,不影响逻辑。OnInit() 在 EA 挂上图表时跑一次,拿指标句柄、声明数组,不直接下单;OnDeinit(const int reason) 在卸载或初始化失败时跑,按 reason 码回收内存、删句柄;OnTick() 每逢该品种来新报价就触发,交易函数全塞这里,是真正的大脑。 把默认空模板逐行看:第 1–5 行是纯注释,终端不显示,可留空;第 12–19 行 OnInit 无入参、返初始化码;第 22–26 行 OnDeinit 带关闭原因参数;第 30–34 行 OnTick 空着等填。外汇与贵金属杠杆高,EA 任何逻辑失误都可能快速放大亏损,上 MT5 按 F4 新建一个 EA,对照这四段把空函数跑通,是验证理解的最快路径。

把均线指标挂进 EA 并读出缓冲

MQL5 里的指标分两类:顺势类画在主图看方向,摆荡类蹲在下方的独立窗口找进出场点。它们背后都靠「指标缓冲区」存数——这是一种按时间序列排的数组,索引 0 对应最右一根 K 线,索引 1 是右数第二根,以此类推。 想在 EA 里用移动平均线,先得拿到它的句柄。句柄是指向指标实例的唯一指针,拿到后全程序都能调。以 EURUSD 的 H1 周期、周期 10、平移 0、简单平均、收盘价为例,iMA() 返回句柄,之后用 ChartIndicatorAdd() 把它加到图表:第二个参数填 0 进主图,填 1 进下方子窗口。 指标挂上后图表上却看不到线,这是正常的——EA 运行后默认不绘指标,必须主动加 ChartIndicatorAdd 那一行。子窗口编号从 0 起算,摆荡指标放 0 号,想再开一个就顺延编号。 读数据靠动态数组加 CopyBuffer。声明 double iMA_buf[],用 ArraySetAsSeries(...,true) 设成时间序列索引,避免新旧值搞反,再 CopyBuffer 把最近 3 根的值拷进来就能直接用。外汇与贵金属杠杆高、滑点大,缓冲值只反映历史统计,实盘信号失效概率不低,拿来验证前先开 MT5 跑一遍。 别把句柄当万能钥匙 iMA 的参数顺序在 MetaEditor 里输完会弹 tooltip,按 F1 还能调出官方说明。陌生指标别硬猜参数类型,上下文帮助比瞎试省半小时。

MQL5 / C++
class="type">int iMA_handle; 
iMA_handle=iMA("EURUSD",PERIOD_H1,class="num">10,class="num">0,MODE_SMA,PRICE_CLOSE);
ChartIndicatorAdd(ChartID(),class="num">0,iMA_handle);
ChartIndicatorAdd(ChartID(),class="num">1,iMA_handle);
class="type">class="kw">double iMA_buf[];
ArraySetAsSeries(iMA_buf,true);
CopyBuffer(iMA_handle,class="num">0,class="num">0,class="num">3,iMA_buf);

常见问题

优先看软件内置的帮助文档和官方示例,再配合社区里带截图的基础帖,别一上来就搜付费课程。
适合,内容默认你懂基础k线但不懂自动化,会从程序骨架和空模板讲起,跳过股票已有常识。
小布能直接解读你的空模板结构,并提示均线缓冲读取的常见错法,省去反复查资料的精力。
初始化和去初始化最容易漏掉释放资源,照空模板填逻辑基本不会出结构性问题。
用内置函数挂指标拿句柄,再从缓冲数组按索引读值,空模板里已留好对应位置。