MetaQuotes Language 4 (MQL4)

From binaryoption
Jump to navigation Jump to search
Баннер1
  1. MetaQuotes Language 4 (MQL4) 初学者指南

MetaQuotes Language 4 (MQL4) 是一种专为 MetaTrader 4 (MT4) 交易平台设计的编程语言。MT4 是全球最受欢迎的 外汇交易平台之一,MQL4 允许交易者和开发者创建自己的交易机器人 (Expert Advisors, EAs)、自定义指标 (Custom Indicators) 和脚本 (Scripts),从而自动化交易策略、进行深入的市场分析,并扩展 MT4 的功能。 本文旨在为初学者提供 MQL4 的全面概述,涵盖其基本概念、语法、数据类型、运算符、函数以及如何使用它来开发简单的交易工具。

MQL4 概述

MQL4 基于 C 语言,但针对金融市场的特定需求进行了优化。 它提供了访问实时市场数据、执行交易订单、管理仓位以及执行技术分析的工具。MQL4 程序编译成可执行文件 (.ex4 文件),可以直接在 MT4 平台中运行。

MQL4 主要有三种类型的程序:

MQL4 基本语法

MQL4 的语法与 C 语言类似,但有一些关键的区别。

  • 结构:MQL4 程序通常包含以下部分:
   * 包含文件:使用 #include 指令包含必要的头文件,例如 Trade.mqh (用于交易功能) 和 Indicators.mqh (用于技术指标函数)。
   * 全局变量:在程序的所有函数中可见的变量。
   * 函数:执行特定任务的代码块。 包括 OnInit()、OnDeinit()、OnTick() 等特殊函数。
   * 主函数:在 EAs 中,OnTick() 函数是主函数,每当收到新的报价时都会被调用。
  • 语句:MQL4 语句以分号 (;) 结尾。
  • 注释
   * 单行注释:使用双斜杠 (//)
   * 多行注释:使用 /* ... */
  • 缩进:使用缩进使代码更具可读性。

MQL4 数据类型

MQL4 支持多种数据类型:

数据类型 说明 示例
int 整数 10, -5, 0
double 双精度浮点数 3.14159, -2.71828
bool 布尔值 (真/假) true, false
string 字符串 "Hello, world!", "EURUSD"
datetime 日期和时间 2023.10.27 10:00:00
color 颜色 clrRed, clrBlue

MQL4 运算符

MQL4 提供了各种运算符,用于执行算术、比较、逻辑和赋值操作。

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

MQL4 函数

MQL4 提供了大量的内置函数,用于执行各种任务。 此外,交易者还可以创建自己的自定义函数。

  • 内置函数
   * OrderSend():发送交易订单。订单管理
   * iMA():计算移动平均线。移动平均线
   * iRSI():计算相对强弱指数。相对强弱指数
   * MarketInfo():获取市场信息,例如点差、最小交易量等。市场信息
   * AccountInfo():获取账户信息,例如余额、权益等。账户信息
  • 自定义函数: 使用关键字 `int`、`double`、`bool`、`string` 等定义函数类型,并指定函数名称、参数和返回值。

示例:

```mql4 int MyFunction(int input_value) {

 int result = input_value * 2;
 return result;

} ```

MQL4 变量

变量用于存储数据。 在 MQL4 中,需要声明变量的类型和名称。

示例:

```mql4 int my_integer = 10; double my_double = 3.14; string my_string = "Hello"; ```

MQL4 流程控制语句

MQL4 提供了各种流程控制语句,用于控制程序的执行流程。

  • if-else 语句:根据条件执行不同的代码块。
  • for 循环:重复执行代码块指定的次数。
  • while 循环:重复执行代码块,只要条件为真。
  • switch 语句:根据变量的值执行不同的代码块。

创建一个简单的自定义指标

下面是一个简单的自定义指标,用于计算简单移动平均线 (SMA)。

```mql4

  1. property indicator_chart_window

int period = 10; // 移动平均线周期

double ma_value;

int OnInit() {

 return(INIT_SUCCEEDED);

}

int OnCalculate(int rates_total, int prev_calculated, int begin, double &buffer[]) {

 if(prev_calculated > 0) {
   buffer[0] = buffer[prev_calculated-1];
   return(0);
 }
 double sum = 0.0;
 for(int i = 0; i < period; i++) {
   sum += Close[i];
 }
 ma_value = sum / period;
 buffer[0] = ma_value;
 return(1);

} ```

此代码首先定义了移动平均线的周期。 OnInit() 函数在指标加载时执行。 OnCalculate() 函数在每个新的报价到达时执行。 它计算 SMA 的值,并将结果存储在 buffer 数组中。

创建一个简单的 Expert Advisor

下面是一个简单的 EA,当价格上涨时买入,当价格下跌时卖出。

```mql4

  1. property expert_magic_number 123

int period = 10; // 移动平均线周期

double ma_value;

int OnInit() {

 return(INIT_SUCCEEDED);

}

void OnTick() {

 ma_value = iMA(NULL, 0, period, 0, MODE_SMA, PRICE_CLOSE, 0);
 double current_price = MarketInfo(Symbol(), MODE_ASK);
 if(current_price > ma_value) {
   // 买入
   OrderSend(Symbol(), OP_BUY, 0.1, current_price, 3, 0, 0, "My EA", 123, 0, Green);
 } else if(current_price < ma_value) {
   // 卖出
   OrderSend(Symbol(), OP_SELL, 0.1, current_price, 3, 0, 0, "My EA", 123, 0, Red);
 }

} ```

此代码首先定义了移动平均线的周期。 OnInit() 函数在 EA 加载时执行。 OnTick() 函数在每个新的报价到达时执行。 它计算 SMA 的值,并根据当前价格与 SMA 的关系发送买入或卖出订单。

调试 MQL4 代码

MQL4 IDE 提供了一个调试器,可以帮助您查找和修复代码中的错误。 使用调试器,您可以逐步执行代码、检查变量的值以及设置断点。 MQL4 IDE

资源和学习材料

结论

MQL4 是一种功能强大的编程语言,可以帮助交易者自动化交易策略、进行深入的市场分析并扩展 MT4 平台的功能。 通过学习 MQL4,交易者可以获得更大的控制权和灵活性,并提高交易绩效。 本指南提供了一个良好的起点,但持续学习和实践对于掌握 MQL4 至关重要。

或者,如果需要更宽泛的分类:

立即开始交易

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

加入我们的社区

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

Баннер