在MQL4的世界里,我们主要会和三种不同类型的程序打交道:专家顾问(EA)、指标(Indicator)和脚本(Script)。你可以把它们理解为我们的“工具箱”里的三件核心工具,各自有明确的分工。
搞清楚它们的区别至关重要,因为这决定了你的策略思路,到底应该用哪种工具来实现。
1. 专家顾问 (简称EA)
这是我们最常说的EA,你可以把它想象成一个严格遵守纪律、7×24小时帮你盯盘和执行交易的机器人。
它的核心任务是实现一套完整的、可以自动运行的交易策略。从分析市场行情、利用指标生成交易信号,到自动下单、修改止损止盈,再到最终平仓,所有操作都可以由EA自动完成。无论是趋势跟踪、网格交易还是马丁策略,这些需要持续运行和决策的系统,都必须通过EA来实现。
学长避坑指南: 新手往往对EA有不切实际的幻想。你必须明白,EA不是印钞机。它的能力有明确的边界。它无法克服你的经纪商服务器的延迟,也无法避免滑点。更重要的是,EA只是你交易逻辑的执行者,如果你的策略逻辑本身就是亏钱的,那么EA只会更高效、更精准地帮你亏钱。我们学习编程,是为了实现和验证我们脑海中成熟的交易系统,而不是去寻找“圣杯”。
2. 指标 (Indicator)
如果说EA是交易员,那么指标就是分析师。它的工作是“分析”和“呈现”,而不是“执行”。
指标通过计算历史价格数据,把市场的行为用更直观的方式(比如线条、箭头、色块)在图表上画出来,帮助我们做出决策。MT4自带的移动平均线(MA)、MACD、布林带等都是指标。我们也可以通过编程,创建符合自己交易系统的自定义指标,比如画出供给区和需求区、提示Pinbar信号等。
但请记住,指标本身绝对不能执行任何开仓、平仓的操作。它的职责是发出信号,而执行信号是EA的工作。
3. 脚本 (Script)
脚本可以理解为一个“一次性”的快捷按钮。
当你把它加载到图表上时,它会瞬间完成一个指定的任务,然后就结束运行了。它不像EA那样会持续监控市场。
脚本非常适合用来处理那些我们手动操作起来很繁琐、重复性的任务。比如:
- 一键平掉所有盈利的订单。
- 一键为所有开仓的订单设置“推平保”(移动止损到成本价)。
- 快速挂一个带有预设计算好止损和仓位的订单。
简单来说,EA是全自动驾驶,指标是导航地图,而脚本是定速巡航或者一键启动的按钮。
代码文件的“身份证”:理解文件格式
在编写和使用这些程序时,你会遇到几种不同后缀名的文件。了解它们是什么,对我们至关重要。
- .mq4:这是我们的源代码文件,就像是EA或指标的设计蓝图。我们可以用MetaEditor打开、编辑和修改它。拥有了.mq4文件,你才算真正拥有了对这个程序的完全控制权。
- .ex4:这是由.mq4源代码文件“编译”后生成的可执行文件。它就像是根据蓝图盖好的房子,可以直接在MT4平台上运行,但你无法再用编辑器打开它看到里面的代码结构。一个重要的提醒: 当你从网络上获取一个EA,如果对方只给你.ex4文件,你就要特别小心。因为你看不到源码,就无法知道里面是否藏有漏洞或对你的账户不利的代码。
- .mqh:这是头文件。你可以把它理解为一个“公共代码库”。当我们有很多EA或指标都需要用到同一个复杂的功能时(比如一个特定的资金管理模块),就可以把这个功能写在.mqh文件里,然后让其他.mq4文件来调用。这样就避免了重复写同样的代码。
- .mqt:这是模板文件,通过MetaEditor的“新建”向导创建新EA时,程序就是基于这个模板来生成基础代码框架的。
你的代码库存放在哪里:文件路径
我们写的所有MQL4文件,都存放在MT4的数据文件夹里。有时候要找到这个路径会有点麻烦。
最简单的方法是:在你的MT4软件左上角,点击 “文件” -> “打开数据文件夹”。
系统会自动弹出一个窗口,这里就是所有EA、指标等文件的“家”。在这个文件夹里,你会看到一个名为MQL4的文件夹,里面的子文件夹分工明确:
- \experts:存放你的EA文件(.mq4和.ex4)。
- \indicators:存放你的指标文件。
- \scripts:存放你的脚本文件。
- \include:存放.mqh头文件。
- \libraries:存放函数库和DLL文件。
- \templates:存放代码模板。
- \logs:存放EA的运行日志。这个文件夹非常重要,当你的EA运行不正常时,来这里查看日志文件,是排查错误的第一步。