常用的MQL5应用程序编程接口(API)
在本书的前面部分,你学习了MQL5语言结构的基本概念、语法和使用规则。不过,这仅仅是编写满足交易者需求的实际程序(像分析数据处理和自动交易)的基础。要是没有一系列丰富的内置函数以及与MetaTrader 5终端交互的手段(这些共同构成了MQL5 API),就无法解决这类任务。
在这一章,你将开始学习MQL5 API,并且会一直学到本书结尾,逐步熟悉所有专门的子系统。
内核(终端内MQL程序的运行时环境)为任何MQL程序提供的技术和功能列表非常庞大。所以,从大多数程序中可能有用的最简单的内容开始学习是很有意义的。具体来说,这里会介绍专门用于处理数组、字符串、文件、数据转换、用户交互、数学函数以及环境控制的函数。
之前,你已经学会在MQL5中定义自己的函数并调用它们。MQL5 API的内置函数可以直接在源代码中使用,也就是“开箱即用”,无需任何预先定义。
需要着重注意的是,与C++不同,在程序中包含特定的内置函数集不需要额外的预处理器指令。所有MQL5 API函数的名称都存在于全局上下文(命名空间)中,而且是始终且无条件存在的。
从一方面来看,这很方便,但从另一方面来说,你需要留意可能出现的名称冲突。如果你不小心尝试使用了某个内置函数的名称,它会覆盖标准实现,这可能会导致意想不到的后果:往好里说,你会得到一个关于重载不明确的编译器错误;往坏里说,所有正常的调用都会被重定向到“新”的实现,而且不会有任何警告。
理论上,相似的名称可以在其他上下文中使用,例如作为类方法名或在专门的(用户)命名空间中。在这种情况下,可以使用上下文解析运算符来调用全局函数,在“嵌套类型、命名空间和'::'上下文运算符”这部分已经讨论过这种情况。
内置类型转换
程序常常会处理不同的数据类型。在“类型转换”部分,我们已经接触到了内置类型的显式和隐式转换机制。这些机制提供了通用的转换方法,但由于这样或那样的原因,它们并非总是适用。MQL5 API提供了一组转换函数,程序员可以借助这些函数管理数据从一种类型到另一种类型的转换,并配置转换结果。
在最常用的函数中,有一些用于将各种类型转换为字符串,或者进行反向转换。具体来说,这包括对数字、日期和时间、颜色、结构体以及枚举类型的转换。有些类型还具有额外的特定操作。
本节将探讨各种数据转换方法,为程序员提供在交易机器人中处理各种数据类型所需的工具。它包括以下子部分:
- 数字与字符串的相互转换:本小节将探索将数值转换为字符串以及反向转换的方法。它涵盖了诸如数字格式化以及处理各种数字系统等重要方面。
- 双精度浮点数的规范化:在处理金融数据时,双精度浮点数的规范化是一个重要方面。本节将讨论规范化方法、避免精度损失的方式以及处理浮点数的方法。
- 日期和时间:日期和时间的转换在交易策略中起着关键作用。本小节将讨论处理日期、时间间隔的方法,以及像
datetime
这样的特殊数据类型。 - 颜色:在MQL5中,颜色由一种特殊的数据类型表示。本小节将研究颜色值的转换、它们的表示方式以及在交易机器人图形元素中的使用。
- 结构体:在处理复杂的结构化数据时,结构体内部的数据转换是一个重要话题。我们将看到与结构体及其元素进行交互的方法。
- 枚举类型:枚举类型提供了命名常量,并提高了代码的可读性。本小节将讨论如何转换枚举值,并在程序中有效地使用它们。
- 复数类型:复数类型旨在处理复数。本节将探讨转换和使用复数的方法。
在本章中,我们将学习所有这些函数。