MQL模式
- MQL 模式
MQL (MetaQuotes Language) 是一种专为在 MetaTrader 交易平台(包括 MetaTrader 4 (MT4) 和 MetaTrader 5 (MT5))上开发交易机器人(也称为专家顾问 - 专家顾问)、自定义技术指标 (自定义指标)、脚本和库而设计的编程语言。它是二元期权交易者和外汇交易者自动化交易策略的关键工具。 本文将深入探讨 MQL 的基础知识,旨在帮助初学者理解其概念、结构和应用。
MQL 的两种主要版本
MQL 存在两个主要版本:MQL4 和 MQL5。虽然它们共享一些相似之处,但它们之间存在显著差异。
- **MQL4:** 是为 MetaTrader 4 平台设计的。它是一种基于 C 语言的语言,相对简单易学,拥有庞大的社区支持和大量的现有代码示例。但其功能相对有限,尤其是在处理复杂算法和多线程方面。MetaTrader 4
- **MQL5:** 是为 MetaTrader 5 平台设计的。它在 MQL4 的基础上进行了改进,提供了更强大的功能,包括面向对象编程 (OOP),更快的执行速度,以及对多线程和高级技术指标的支持。MetaTrader 5 MQL5 也更灵活,允许开发者创建更复杂的交易系统。
选择哪个版本取决于你的需求和目标平台。 如果你主要使用 MT4,那么学习 MQL4 更有意义。 如果你使用 MT5 或者需要更强大的功能,那么 MQL5 是更好的选择。
MQL 编程基础
MQL 编程与许多其他编程语言类似,包括变量声明、数据类型、运算符、控制结构和函数。
- **变量:** 用于存储数据的容器。例如,`double price = 1.2345;` 声明了一个名为 `price` 的变量,类型为 `double` (双精度浮点数),并将其初始化为 1.2345。
- **数据类型:** MQL 支持多种数据类型,包括:
* `int`:整数 * `double`:双精度浮点数 * `bool`:布尔值 (true 或 false) * `string`:字符串 * `datetime`:日期和时间
- **运算符:** 用于执行操作。例如,`+` (加法), `-` (减法), `*` (乘法), `/` (除法), `==` (等于), `!=` (不等于), `>` (大于), `<` (小于) 等。
- **控制结构:** 用于控制程序的执行流程。例如:
* `if...else`:条件语句 * `for`:循环语句 * `while`:循环语句
- **函数:** 用于封装可重用的代码块。 例如,你可以创建一个名为 `CalculateMovingAverage` 的函数来计算移动平均线。 移动平均线
MQL 程序类型
MQL 主要有四种程序类型:
1. **专家顾问 (Expert Advisors, EAs):** 自动交易机器人,可以在不干预的情况下执行交易。 自动交易 EA 可以基于预定义的规则和算法进行买入和卖出操作。 2. **自定义指标 (Custom Indicators):** 用于在图表上显示自定义的技术分析指标。技术分析 例如,你可以创建一个自定义指标来显示基于斐波那契数列的支撑和阻力位。斐波那契数列 3. **脚本 (Scripts):** 一次性执行的任务。例如,你可以创建一个脚本来批量平仓所有未平仓订单。 4. **库 (Libraries):** 包含可重用函数和类的集合,可以在其他 MQL 程序中调用。
Program Type | Description | Usage |
Expert Advisor (EA) | Automatically executes trades based on predefined rules. | Automated trading, backtesting. |
Custom Indicator | Displays custom technical analysis information on the chart. | Technical analysis, identifying trading signals. |
Script | Performs a single task and then terminates. | One-time operations, data analysis. |
Library | Contains reusable functions and classes. | Code organization, code reuse. |
编写一个简单的 MQL4 示例 (Hello World)
以下是一个简单的 MQL4 脚本,用于在“专家”选项卡中显示“Hello World”消息:
```mql4 //+------------------------------------------------------------------+ //| HelloWorld.mq4 | //+------------------------------------------------------------------+
- property copyright "Your Name"
- property link "Your Website"
int OnInit()
{ Alert("Hello World!"); // 显示一个警告框 return(INIT_SUCCEEDED); }
```
这段代码使用 `Alert()` 函数在 MT4 的“专家”选项卡中显示一条消息。 `OnInit()` 函数是在脚本启动时执行的函数。
MQL5 的面向对象编程 (OOP)
MQL5 引入了面向对象编程 (OOP) 的概念,允许开发者创建更模块化、可重用和易于维护的代码。OOP 的主要概念包括:
- **类 (Classes):** 定义对象的蓝图。
- **对象 (Objects):** 类的实例。
- **属性 (Properties):** 描述对象的特征。
- **方法 (Methods):** 定义对象的行为。
- **继承 (Inheritance):** 允许一个类继承另一个类的属性和方法。
- **封装 (Encapsulation):** 将数据和方法组合在一起,并控制对数据的访问。
- **多态 (Polymorphism):** 允许对象以不同的方式响应相同的消息。
利用 OOP 可以更有效地组织和管理复杂的交易系统。 面向对象编程
MQL 中的常用函数
MQL 提供了大量的内置函数,用于执行各种任务。 一些常用的函数包括:
- **OrderSend():** 发送交易订单。 交易订单
- **OrderClose():** 平仓订单。
- **iMA():** 计算移动平均线。
- **iRSI():** 计算相对强弱指数 (RSI)。 相对强弱指数
- **MarketInfo():** 获取市场信息,例如点差、手续费等。
- **AccountInfo():** 获取账户信息,例如余额、保证金等。
- **TimeCurrent():** 获取当前服务器时间。
- **SymbolInfo():** 获取符号信息,例如点数、最小交易量等。点差
MQL 中的事件处理
MQL 程序可以响应各种事件,例如:
- **OnTick():** 每当收到新的报价时触发。 这是 EA 中最常用的事件处理函数,用于执行交易逻辑。
- **OnTrade():** 当交易事件发生时触发,例如订单被执行、修改或取消。
- **OnTimer():** 定期触发,用于执行定时任务。
- **OnInit():** 程序启动时触发。
- **OnDeinit():** 程序停止时触发。
通过事件处理,MQL 程序可以实时响应市场变化并执行相应的操作。
MQL 中的回测 (Backtesting)
MQL 允许你使用历史数据对 EA 进行回测,以评估其性能。 回测可以帮助你优化 EA 的参数并识别潜在的风险。 回测 MetaTrader 平台提供了强大的回测功能,可以模拟不同的市场条件和交易策略。
Setting | Description |
Symbol | The trading instrument to backtest. |
Period | The time frame to use for backtesting (e.g., M1, H1, D1). |
Dates | The start and end dates for the backtest. |
Modeling Mode | The method used to simulate trading conditions (e.g., Every Tick, Control Points). |
Optimization | The process of finding the optimal parameters for the EA. |
MQL 中的成交量分析
MQL 可以用于分析成交量数据,以识别潜在的交易机会。 一些常用的成交量指标包括:
- **On Balance Volume (OBV):** 衡量买卖压力。 成交量
- **Accumulation/Distribution Line (A/D):** 识别积累和分配阶段。
- **Volume Weighted Average Price (VWAP):** 计算加权平均价格。 VWAP
通过分析成交量数据,你可以更好地理解市场情绪并做出更明智的交易决策。
MQL 学习资源
- **MQL Reference:** [1](https://www.mql5.com/en/docs)
- **MQL5 Community:** [2](https://www.mql5.com/en)
- **Forex Factory:** [3](https://www.forexfactory.com/)
- **BabyPips:** [4](https://www.babypips.com/)
总结
MQL 是一种强大的编程语言,可以帮助你自动化交易策略、创建自定义技术指标和脚本,以及分析市场数据。 虽然学习 MQL 可能需要一些时间和精力,但它可以显著提高你的交易效率和盈利能力。 掌握 MQL 需要不断学习和实践,并积极参与 MQL 社区。 理解 止损单,止盈单,滑点,仓位管理 和 风险回报比 等概念对于编写成功的 EA 至关重要。 此外,熟悉 卡迪根模式,头肩顶,双底 和 三重顶 等图表模式可以帮助你开发更有效的交易策略。
立即开始交易
注册 IQ Option (最低存款 $10) 开设 Pocket Option 账户 (最低存款 $5)
加入我们的社区
订阅我们的 Telegram 频道 @strategybin 获取: ✓ 每日交易信号 ✓ 独家策略分析 ✓ 市场趋势警报 ✓ 新手教育资源