(第二单元)第1小节:了解预定义元素
什么是预定义?和自定义有啥区别?
今天所说的预定义是指在MQL编译器提前定义的变量、函数和常量。这些预定义的元素由MQL编译器提供,具有固定的名称、值和功能的数据元素。
而自定义则是是指根据EA开发者的需求和目的而自己创建的变量、函数和常量。自定义元素是由开发者在编程过程中根据特定需求定义和实现。可以根据自己的逻辑和功能需求,自由地创建自定义变量、函数和常量,以完成特定的任务或实现特定的功能。自定义元素的名称、值和功能是由开发者自行定义的。
两者存在紧密的关联,一个完整的EA程序既需要预定义数据的参与,也需要根据实际求自行拼接和参与计算。
MQL4包含的预定义元素
- 预定义变量
在MQL中具有特殊的含义和功能,可以用于获取和操作与交易品种、图表数据和交易执行相关的信息。这些变量的值是由交易平台在运行时自动更新的,可以通过直接引用这些变量来获取相应的值。 - 预定义函数
内置函数通常被称为预定义函数或标准函数,预定义函数是在MQL编程语言中提供的一组具有特定功能和用途的数据元素,并可以通过直接调用来执行相应的操作。其中根据类型的不同,调用操作也大有不同(带传递参数或不带传递参数)。
预定义函数已经集成了数据计算模块,用于访问市场数据、执行交易操作、进行技术分析等,涵盖了多个方面,如价格数据处理、指标计算、订单管理、时间处理、字符串处理等。一些常见的预定义函数包括 NormalizeDouble()、iMA()、OrderSend()、TimeCurrent()、StringConcatenate() 等。 - 预定义常量
预定义常量是在MQL编译器中提前定义的固定值,用于表示特定的常量或标志。这些常量具有固定的名称和值,在编写MQL程序时可以直接使用,无需额外定义或赋值。预定义常量可以表示价格类型、时间单位、交易操作类型等。一些常见的预定义常量包括 MODE_ASK、MODE_BID、OP_BUY、OP_SELL、PERIOD_M1、PERIOD_H1 等。
怎么区分预定义变量、函数、常量?
案例解析:
- 预定义变量:预定义变量是直接使用的变量,其名称以大写字母开头,例如 Ask、Bid、Volume,无括号的标准变量格式。
- 预定义函数:预定义函数带有一对括号,例如 iClose()、Symbol()。通过调用这些函数来执行特定的操作和功能,主要分为直接调用型和传入调用型两种。在上图中,Symbol就是直接调用型,可以直接获取到加载EA时当前图表的货币名称;而iClose()则是需要在括号内传入指定的数据,才能获取到需要数据的一种函数。
- 预定义常量:预定义常量通常是全大写的常量,例如 MODE_ASK、OP_BUY、PERIOD_M1。这些常量包含了固定的数值。
按颜色区分(默认):
- 预定义变量:粉色
- 预定义函数:紫色
- 预定义常量:红色
颜色区分知识延伸(默认):
- 数据类型:蓝色
- 数值:绿色
- 自定义变量名(外部):橙色
- 自定义变量名(内部):黑色
- 注释内容:灰色
颜色区分只是针对于默认IDE环境下的一种视觉区分方法,不作为主要辨别方式,实际使用中可以根据喜好来调整颜色。
怎么使用预定义变量、函数、常量?
在MQL编程中,使用预定义变量、函数和常量非常简单。以下是它们的基本用法:
- 预定义变量的使用:
预定义变量是直接可用的变量,您可以在代码中直接引用它们来获取相应的。例如,要获取当前买价(Ask),可以使用预定义变量 Ask来进行赋值操作,如下所示: -
预定义函数的使用:
预定义函数是可调用的代码块,通过调用这些函数来执行特定的操作和功能。您可以将函数名和必要的参数传递给预定义函数来调用它们。只需要通过组合使用即可。例如,要计算简单移动平均线(SMA),您可以使用 iMA() 函数,如下所示:
-
预定义常量的使用:
预定义常量是固定的常量值,用于表示特定的常量或标志。您可以直接在代码中使用这些常量。常量通常用于参与函数调用时的计算,例如,要指定交易操作为买入操作,您可以使用预定义常量 OP_BUY,如下所示:
复制
在使用预定义变量、函数和常量时,必须明确知道其已经被定义和实现,无需额外的声明或定义。它们是MQL编译器提供的功能,可以直接使用来实现各种自动化交易策略和功能。