允许的交易操作量
在后面的章节中,我们将学习如何进行 EA 交易编程,我们需要控制许多决定成功发送交易指令的交易品种特征。特别是,这适用于交易品种规范中指定允许操作范围的部分。MQL5 中也提供了相应的特性。它们都是 double 类型,并且通过 SymbolInfoDouble 函数请求。
标识符 |
说明 |
---|---|
SYMBOL_VOLUME_MIN |
最小交易量手数 |
SYMBOL_VOLUME_MAX |
最大交易量手数 |
SYMBOL_VOLUME_STEP |
改变交易量的最小步长手数 |
SYMBOL_VOLUME_LIMIT |
某一方向(买入或卖出)上未平仓头寸和挂单的最大允许总交易量 |
SYMBOL_TRADE_CONTRACT_SIZE |
交易合约大小 = 1 手 |
尝试买卖交易量小于最小值、大于最大值或不是一个步长倍数的金融工具将会导致错误。在与 交易 API 相关的章节中,我们将实现一个代码来统一必要的检查,并在调用 MQL5 API 交易函数之前使交易量标准化。
此外,MQL 程序还应检查 SYMBOL_VOLUME_LIMIT。例如,限制为 5 手,你可以有一个交易量为 5 手的未平仓买入头寸,并下达一个交易量为 5 手的 Sell Limit 挂单。但是,你不能下达挂单 Buy Limit(因为一个方向的累计成交量将超过该限制)或设置超过 5 手的 Sell Limit。
作为一个说明性示例,考虑脚本 SymbolFilterVolumes.mq5,该脚本记录了所选交易品种的上述特性值。我们将 MinimalContractSize 变量添加到输入参数中,以便能够通过 SYMBOL_TRADE_CONTRACT_SIZE 特性筛选交易品种:我们只显示那些合约大小大于指定值的交易品种(默认情况下为 0,即所有交易品种均满足条件)。
#include <MQL5Book/SymbolFilter.mqh>
|
在 OnStart 的开始,让我们定义一个筛选对象并输出数组,以获得特性名和值的列表,作为四个字段的向量 double。volumeIds 数组中显示了四个必需特性列表。
void OnStart()
|
接下来,我们根据合约大小(应大于指定的大小)应用筛选器,并获取与匹配交易品种的交易量相关联的规范字段。
f.let(SYMBOL_TRADE_CONTRACT_SIZE, MinimalContractSize, SymbolFilter::IS::GREATER)
|
对于默认设置,该脚本可能会显示如下结果(带缩写)。
===== Volume limits of the symbols (13) =====
|
某些交易品种可能不受 SYMBOL_VOLUME_LIMIT 的限制(值为 0)。你可以将结果与交易品种规范进行比较:它们必须匹配。