适用于 Python 的 MetaTrader 5 软件包函数概述

Python 中可用的 API 函数可以有条件地分为 2 组:在 MQL5 API 中有完全等效的函数和仅在 Python 中可用的函数。第二组之所以存在,部分是因为 Python 和 MetaTrader 5 之间的连接必须进行技术组织以使用应用函数。这解释了两组函数的存在的原因和目的 initializeshutdown:第一个建立到终端的连接,第二个终止连接。

重要的是,在初始化过程中,可以启动所需的终端副本(如果尚未执行)并可以选择特定的交易账户。此外,还可以在已经打开的终端连接的上下文中更改交易账户:这是通过 login 函数完成的。

连接到终端后,Python 脚本可以使用 version 函数获取终端版本概述。有关终端的完整信息可通过 terminal_info 获取,该函数完全等效于三个 TerminalInfo函数,就好像它们在一次调用中结合起来一样。

下表列出了 Python 应用函数及其在 MQL5 API 中的对应函数。

Python

MQL5

last_error

GetLastError(注意!Python 有原生错误代码)

account_info

AccountInfoIntegerAccountInfoDoubleAccountInfoString

terminal_info

TerminalInfoIntegerTerminalInfoDouble, TerminalInfoDouble

symbols_total

SymbolsTotal(所有交易品种,包括自定义和禁用交易品种)

symbols_get

SymbolsTotal + SymbolInfo 函数

symbol_info

SymbolInfoIntegerSymbolInfoDoubleSymbolInfoString

symbol_info_tick

SymbolInfoTick

symbol_select

SymbolSelect

market_book_add

MarketBookAdd

market_book_get

MarketBookGet

market_book_release

MarketBookRelease

copy_rates_from

CopyRates(按柱线数,从日期/时间开始)

copy_rates_from_pos

CopyRates(按柱线数,从柱线号开始)

copy_rates_range

CopyRates(在日期/时间范围内)

copy_ticks_from

CopyTicks(按分时报价数,从指定时间开始)

copy_ticks_range

CopyTicksRange(在指定时间范围内)

orders_total

OrdersTotal

orders_get

OrdersTotal + OrderGet 函数

order_calc_margin

OrderCalcMargin

order_calc_profit

OrderCalcProfit

order_check

OrderCheck

order_send

OrderSend

positions_total

PositionsTotal

positions_get

PositionsTotal + PositionGet 函数

history_orders_total

HistoryOrdersTotal

history_orders_get

HistoryOrdersTotal + HistoryOrderGet 函数

history_deals_total

HistoryDealsTotal

history_deals_get

HistoryDealsTotal + HistoryDealGet 函数

Python API 中的函数有多个特征。

如前所述,函数可以有命名参数:函数被调用时,这些参数与名称和值一起指定,在每对名称和值中,它们通过等号 = 组合在一起。命名参数的指定顺序并不重要(与位置参数不同,位置参数用于 MQL5 中,必须遵循函数原型指定的严格顺序)。

Python 函数针对 Python 原生的数据类型进行操作。这不仅包括常见的数字和字符串,还包括几种复合类型,这些有点类似于 MQL5 数组和结构。

例如,许多函数返回特殊的 Python 数据结构体:tuplenamedtuple

元组是任意类型的元素序列。它可以被认为是一个数组,但与数组不同,元组的元素可以是不同的类型。也可以将元组视为一组结构体字段。

可以发现命名元组与结构体更相似,元组中的每个元素都给定了一个 ID。只有通过索引才可以访问公共元组中的元素(带方括号,如在 MQL5 中,即 [i])。但是,我们可以对命名元组应用解引用运算符(点 .),以获取它的“特性”,就像在 MQL5 结构 (tuple.field) 中一样。

此外,元组和命名元组不能在代码中编辑(即它们是常量)。

另一种流行的类型是字典:存储键和值对的关联数组,键和值的类型可以不同。可使用运算符 [] 访问字典值,而键(无论是什么类型,例如字符串)用一对方括号表示,这使得字典与数组有几分相似。一个字典不能有两对相同的键,也就是说,键始终是唯一的。特别是,使用 namedtuple._asdict() 方法可以很容易地将命名元组转换成字典。