MQL4参考
- MQL4 参考
MQL4 (MetaQuotes Language 4) 是 MetaTrader 4 (MT4) 交易平台使用的编程语言。它是一种类似于 C 语言的语言,专门为开发交易机器人 (Expert Advisors, EAs)、自定义技术指标和脚本而设计。对于希望自动化交易策略或创建自定义工具的二元期权交易者来说,理解 MQL4 至关重要。本文将为初学者提供 MQL4 的全面概述。
MQL4 的基本结构
MQL4 程序通常由以下几个部分组成:
- **属性 (Properties):** 定义程序的名称、作者、链接等信息。
- **包含文件 (Include Files):** 包含预定义的函数和变量,例如 技术指标 和 交易函数。
- **全局变量 (Global Variables):** 在整个程序中都可以访问的变量。
- **函数 (Functions):** 执行特定任务的代码块。
- **事件处理函数 (Event Handlers):** 响应 MT4 平台事件的函数,例如新报价、定时器事件等。
MQL4 数据类型
MQL4 支持多种数据类型,包括:
描述 | 示例 | | |||||
整数 | `int age = 30;` | | 双精度浮点数 | `double price = 1.2345;` | | 布尔值 (True 或 False) | `bool isBuy = true;` | | 字符串 | `string symbol = "EURUSD";` | | 日期和时间 | `datetime now = TimeCurrent();` | | 颜色 | `color myColor = clrRed;` | |
理解这些数据类型对于正确声明变量和执行计算至关重要。
MQL4 运算符
MQL4 提供了各种运算符,用于执行算术、比较、逻辑等操作。
- **算术运算符:** `+`, `-`, `*`, `/`, `%` (取模)
- **比较运算符:** `==`, `!=`, `>`, `<`, `>=`, `<=`
- **逻辑运算符:** `&&` (与), `||` (或), `!` (非)
- **赋值运算符:** `=`, `+=`, `-=`, `*=`, `/=`, `%=`
MQL4 核心函数
MQL4 提供了大量的内置函数,用于访问市场数据、执行交易、管理订单等。以下是一些常用的函数:
- `OrderSend()`: 用于开仓交易。理解 止损 和 止盈 的设置至关重要。
- `OrderClose()`: 用于平仓交易。
- `OrderModify()`: 用于修改现有订单。
- `iClose()`: 获取指定时间段的收盘价。
- `iHigh()`: 获取指定时间段的最高价。
- `iLow()`: 获取指定时间段的最低价。
- `iOpen()`: 获取指定时间段的开盘价。
- `iVolume()`: 获取指定时间段的成交量。
- `TimeCurrent()`: 获取当前服务器时间。
- `Symbol()`: 获取当前图表的交易品种。
- `AccountBalance()`: 获取账户余额。
- `AccountEquity()`: 获取账户净值。
- `MarketInfo()`: 获取市场信息,例如点差、最小交易量等。
- `NormalizeDouble()`: 将双精度浮点数四舍五入到指定的小数位数。
- `StringFormat()`: 将数字格式化为字符串。
- `Alert()`: 在屏幕上显示警报信息。
MQL4 程序的类型
MQL4 主要有三种类型的程序:
1. **Expert Advisors (EAs):** 自动交易机器人,可以根据预定义的规则自动执行交易。 EAs 依赖于 均线交叉策略、RSI 背离 等技术分析策略。 2. **Custom Indicators:** 自定义技术指标,用于分析市场数据并提供交易信号。 例如,可以创建基于 斐波那契数列 的指标。 3. **Scripts:** 一次性执行的程序,用于执行特定任务,例如批量平仓或更改图表设置。
编写第一个 EA (示例)
以下是一个简单的 EA,它在满足特定条件时开仓交易:
```mql4
- property copyright "Your Name"
- property link "Your Website"
extern double Lots = 0.1; extern int StopLoss = 50; extern int TakeProfit = 100;
int init()
{ return(0); }
int deinit()
{ return(0); }
int start()
{ double Ask = MarketInfo(Symbol(), MODE_ASK); double Bid = MarketInfo(Symbol(), MODE_BID);
// 简单的买入条件:当前价格高于前一根K线的最高价 if(Ask > iHigh(Symbol(), PERIOD_CURRENT, 1)) { int ticket = OrderSend(Symbol(), OP_BUY, Lots, Ask, 3, Ask - StopLoss * Point, Ask + TakeProfit * Point, "My EA", 12345, 0, clrGreen); if(ticket < 0) { Print("OrderSend failed: ", GetLastError()); } }
return(0); }
```
这段代码定义了一个简单的 EA,它在当前价格高于前一根 K 线的最高价时开仓买入。 它使用 `OrderSend()` 函数发送交易请求,并设置了止损和止盈点位。 理解 订单类型 和 错误代码 很重要。
MQL4 的调试
MQL4 提供了强大的调试工具,可以帮助您识别和修复代码中的错误。
- **专家属性 (Expert Properties):** 允许您设置 EA 的调试选项,例如启用日志记录和单步执行。
- **日志 (Logs):** 记录 EA 的运行信息,包括错误消息和变量值。
- **策略测试器 (Strategy Tester):** 用于测试 EA 的历史表现。 可以使用 回测 来评估策略的有效性。
MQL4 与二元期权的关系
虽然 MQL4 最初是为外汇交易设计的,但它也可以用于二元期权交易。 关键在于利用 MQL4 编写指标来生成交易信号,然后使用 MT4 的二元期权插件或通过 API 将信号发送到二元期权经纪商。 例如,可以使用 MQL4 创建一个基于 布林带突破 的指标,该指标在价格突破布林带时生成交易信号。
高级 MQL4 概念
- **类 (Classes):** 用于创建自定义数据类型和封装代码。
- **对象 (Objects):** 类的实例。
- **事件驱动编程 (Event-Driven Programming):** MQL4 程序通过响应事件来执行代码。
- **数组 (Arrays):** 用于存储多个相同类型的数据。
- **文件 I/O (File Input/Output):** 用于读写文件。
- **DLL 调用 (DLL Calls):** 允许 MQL4 程序调用外部动态链接库 (DLL)。
- **优化 (Optimization):** 使用策略测试器优化 EA 的参数,以提高其盈利能力。 参数优化 是一个重要的步骤。
- **风险管理 (Risk Management):** 在 EA 中实现风险管理策略,例如固定手数、百分比风险等。 了解 马丁格尔策略 和 反马丁格尔策略 的风险。
学习资源
- **MQL4 官方文档:** [[1]]
- **MQL4 论坛:** [[2]]
- **MQL5 社区:** [[3]] (虽然是 MQL5 社区,但许多 MQL4 的知识也适用)
- **在线教程:** 搜索 "MQL4 tutorial" 可以找到大量的在线教程。
- **书籍:** 市面上有很多关于 MQL4 编程的书籍。
总结
MQL4 是一种功能强大的编程语言,可以帮助二元期权交易者自动化交易策略和创建自定义工具。 通过学习 MQL4 的基本概念和核心函数,您可以构建自己的 EA 和指标,从而提高交易效率和盈利能力。 持续学习和实践是掌握 MQL4 的关键。 请记住,理解 成交量分析、价格行为模式 和 资金管理 对于成功的二元期权交易同样重要。 掌握 K线图 的解读技巧也将极大地提升您的交易能力。 此外,关注 经济日历 和 市场情绪 也是至关重要的。
立即开始交易
注册 IQ Option (最低存款 $10) 开设 Pocket Option 账户 (最低存款 $5)
加入我们的社区
订阅我们的 Telegram 频道 @strategybin 获取: ✓ 每日交易信号 ✓ 独家策略分析 ✓ 市场趋势警报 ✓ 新手教育资源