MQL参考手册

From binaryoption
Jump to navigation Jump to search
Баннер1
  1. M Q L 参考手册

MQL(MetaQuotes Language)是MetaTrader 4 (MT4) 和 MetaTrader 5 (MT5) 交易平台使用的专有编程语言。它允许交易者和开发者创建自动化交易策略(EA)、自定义指标(技术分析指标)、脚本和库。本手册将为初学者提供 MQL 的基本概念和语法介绍,帮助您开始使用 MQL 进行交易平台的定制和自动化。

MQL 的基本结构

MQL 程序通常由以下几个部分组成:

  • **包含文件:** 使用 #include 指令引入预定义的函数库,例如 交易函数库
  • **全局变量:** 在程序的所有部分都可以访问的变量。
  • **函数:** 执行特定任务的代码块。MQL 程序至少需要一个函数,通常是 `OnInit()`、`OnDeinit()` 和 `OnTick()`。
  • **事件处理函数:** 这些函数在特定事件发生时被调用,例如图表初始化 (`OnInit()`)、图表关闭 (`OnDeinit()`)、新报价到达 (`OnTick()`)、新交易 (`OnTrade()`) 等。
  • **注释:** 用于解释代码的文本,不会被编译器执行。使用 `//` 进行单行注释,使用 `/* ... */` 进行多行注释。

数据类型

MQL 支持多种数据类型,包括:

MQL 数据类型
描述 | 示例 | 占用字节 |
整数 | `10`, `-5` | 4 | 双精度浮点数 | `3.14159`, `-2.71828` | 8 | 布尔值 (true 或 false) | `true`, `false` | 4 | 字符串 | `"Hello, world!"` | 可变 | 日期和时间 | `2023.10.27 10:00:00` | 8 | 颜色 | `clrRed`, `clrBlue` | 4 |

变量声明

在使用变量之前,必须先声明它。声明变量的语法如下:

```mql 数据类型 变量名; ```

例如:

```mql int myInteger; double myDouble = 3.14; string myString = "Example"; ```

运算符

MQL 支持多种运算符,用于执行各种操作:

  • **算术运算符:** `+` (加), `-` (减), `*` (乘), `/` (除), `%` (取模)
  • **赋值运算符:** `=` (赋值), `+=` (加并赋值), `-=` (减并赋值), `*=` (乘并赋值), `/=` (除并赋值)
  • **比较运算符:** `==` (等于), `!=` (不等于), `>` (大于), `<` (小于), `>=` (大于等于), `<=` (小于等于)
  • **逻辑运算符:** `&&` (与), `||` (或), `!` (非)

控制流程语句

MQL 提供了多种控制流程语句,用于控制程序的执行流程:

  • **if-else 语句:** 根据条件执行不同的代码块。
  • **for 循环:** 重复执行代码块指定的次数。
  • **while 循环:** 重复执行代码块,直到条件为假。
  • **do-while 循环:** 类似于 while 循环,但至少执行一次代码块。
  • **switch 语句:** 根据变量的值选择不同的代码块执行。

函数

函数是 MQL 程序的基本组成部分。函数可以接受参数并返回值。定义函数的语法如下:

```mql 返回值类型 函数名(参数列表) {

 // 函数体
 return 返回值;

} ```

例如:

```mql int Add(int a, int b) {

 int sum = a + b;
 return sum;

} ```

预定义函数

MQL 提供了大量的预定义函数,可以用于执行各种任务,例如:

  • **数学函数:** `MathAbs()`, `MathPow()`, `MathSqrt()`, `MathSin()`, `MathCos()`
  • **字符串函数:** `StringLen()`, `StringSubstr()`, `StringFormat()`, `StringCompare()`
  • **时间函数:** `TimeCurrent()`, `TimeToStr()`, `StrToTime()`
  • **交易函数:** `OrderSend()`, `OrderClose()`, `OrderModify()`, `AccountBalance()` (详见 交易函数库)
  • **指标函数:** `iMA()`, `iRSI()`, `iMACD()` (详见 指标函数库)

数组

MQL 支持多种类型的数组,用于存储相同类型的数据集合。数组的声明和使用如下:

```mql 数据类型 数组名[数组大小];

// 访问数组元素 数组名[索引] = 值; ```

例如:

```mql double myArray[10]; myArray[0] = 1.0; myArray[1] = 2.5; ```

对象

MQL 允许创建对象,用于封装数据和方法。对象的使用需要先定义类,然后创建类的实例。

自动交易 (EA) 开发

MQL 的一个主要应用是开发 EA。EA 通过分析市场数据并根据预定义的规则自动执行交易。EA 开发需要掌握以下关键概念:

  • **OnTick() 函数:** 在每个新的报价到达时调用,是 EA 的核心部分。
  • **OrderSend() 函数:** 用于发送交易订单。
  • **风险管理:** 设置止损 (Stop Loss) 和止盈 (Take Profit) 水平,控制交易风险 (参见 风险管理策略 )。
  • **资金管理:** 根据账户余额和风险承受能力确定交易手数 (参见 资金管理策略 )。
  • **回测:** 使用历史数据测试 EA 的性能 (参见 回测与优化 )。

技术指标开发

MQL 还可以用于开发自定义 技术分析指标。指标可以帮助交易者分析市场趋势和识别潜在的交易机会。指标开发需要掌握以下关键概念:

  • **指标缓冲区:** 用于存储指标计算结果的数据缓冲区。
  • **指标绘制:** 使用 `Plot()` 函数将指标绘制在图表上。
  • **指标参数:** 允许交易者自定义指标的参数。
  • **指标计算:** 根据指标公式计算指标值。

脚本开发

MQL 脚本可以执行一次性的任务,例如批量修改订单或导出历史数据。脚本使用 `OnStart()` 函数作为入口点。

库开发

MQL 库包含可重用的函数和代码,可以被其他 MQL 程序调用。

调试技巧

  • **使用 `Print()` 函数:** 在代码中插入 `Print()` 函数,输出变量的值和程序执行状态。
  • **使用 MetaEditor 的调试器:** MetaEditor 提供了强大的调试器,可以单步执行代码、设置断点和查看变量值。
  • **日志文件:** 将调试信息写入日志文件,方便分析。
  • **错误处理:** 使用 `GetLastError()` 函数获取错误代码,并进行相应的处理。

资源和学习材料

进阶主题

  • **多线程编程:** 使用多线程提高 EA 的执行效率。
  • **网络编程:** 通过网络获取外部数据或与其他程序通信。
  • **优化和性能分析:** 优化 MQL 代码,提高 EA 的执行速度和效率。
  • **高级技术指标:** 创建复杂的 定制化技术指标,例如基于机器学习的指标。
  • **交易算法:** 实现复杂的 算法交易策略
  • **成交量分析:** 使用 成交量指标 和技术来改善交易决策。
  • **价格行为模式:** 学习 K线形态 和其他价格行为分析方法。
  • **波浪理论:** 应用 艾略特波浪 来预测市场趋势。
  • **斐波那契回调:** 利用 斐波那契工具 确定潜在的支撑和阻力位。
  • **布林带:** 使用 布林带指标 衡量市场波动性。
  • **移动平均线:** 利用 均线策略 识别趋势和支撑阻力位。
  • **RSI 指标:** 使用 相对强弱指标 衡量超买超卖情况。
  • **MACD 指标:** 使用 移动平均聚散指标 识别趋势和动量。
  • **随机指标:** 使用 随机震荡指标 衡量超买超卖情况和潜在的反转信号。
  • **枢轴点:** 使用 枢轴点分析 确定关键的支撑和阻力位。
  • **基本面分析:** 结合 经济指标 和新闻事件来制定交易策略。

立即开始交易

注册 IQ Option (最低存款 $10) 开设 Pocket Option 账户 (最低存款 $5)

加入我们的社区

订阅我们的 Telegram 频道 @strategybin 获取: ✓ 每日交易信号 ✓ 独家策略分析 ✓ 市场趋势警报 ✓ 新手教育资源

Баннер