在 MQL4编程中,调用技术指标函数(如 iMA()
, iStochastic()
, iCustom()
等)以及某些价格数据函数时,经常需要传入一些特定类型的参数,例如时间周期、应用价格类型、移动平均线的计算方式等。MQL 为这些常用的参数值预定义了一系列常量,使用这些常量可以使代码更具可读性和可维护性。
1. 时间周期常量
许多 MQL 函数(包括所有技术指标函数和一些价格信息函数)的第二个参数通常是时间周期 (timeframe
)。
-
如果您为此参数传入
0
,则函数将使用 EA 当前运行图表的时间周期。 -
如果您希望指定一个不同于当前图表的时间周期,您可以直接传入该周期的分钟数值(例如,M5 传入
5
,H1 传入60
,H4 传入240
),或者更推荐使用以下预定义的时间周期常量:PERIOD_M1
– 1 分钟周期PERIOD_M5
– 5 分钟周期PERIOD_M15
– 15 分钟周期PERIOD_M30
– 30 分钟周期PERIOD_H1
– 1 小时周期 (等同于60
分钟)PERIOD_H4
– 4 小时周期 (等同于240
分钟)PERIOD_D1
– 日线周期 (等同于1440
分钟)PERIOD_W1
– 周线周期 (等同于10080
分钟)PERIOD_MN1
– 月线周期 (等同于43200
分钟)PERIOD_CURRENT
(或0
) – 当前图表周期
2. 应用价格常量 (Applied Price Constants)
许多技术指标(尤其是移动平均线及其衍生指标)在计算时需要指定基于 K 线的哪种价格数据进行计算,这就是“应用价格”参数。虽然通常默认或最常用的是收盘价 (PRICE_CLOSE
),但 MQL 也提供了其他选项。以下是常用的应用价格常量及其对应的整数值和含义:
PRICE_CLOSE
(0): 收盘价PRICE_OPEN
(1): 开盘价PRICE_HIGH
(2): 最高价PRICE_LOW
(3): 最低价PRICE_MEDIAN
(4): 中间价,计算公式为(最高价 + 最低价) / 2
PRICE_TYPICAL
(5): 典型价格,计算公式为(最高价 + 最低价 + 收盘价) / 3
PRICE_WEIGHTED
(6): 加权收盘价,计算公式为(最高价 + 最低价 + 收盘价 + 收盘价) / 4
(即给予收盘价更高权重)
3. 移动平均线计算方法常量
对于移动平均线 (iMA()
) 本身,或者那些内部计算涉及到移动平均的复杂指标(例如 MACD 的信号线、布林带的中轨),通常会有一个参数允许您选择移动平均的计算方法 (ma_method
)。不同的计算方法会影响平均线的平滑度和对价格变动的响应速度,从而导致绘制出的指标线形态有所不同。以下是 MQL 中预定义的移动平均方法常量及其对应的整数值和简要说明:
MODE_SMA
(0): 简单移动平均线 。直接计算指定周期内价格数据的算术平均值。MODE_EMA
(1): 指数移动平均线 。给予近期价格数据更高的权重,而对较早的价格数据则给予指数级递减的权重。这使得 EMA 比 SMA 对价格变动更为敏感,是一种非常流行的移动平均线类型。MODE_SMMA
(2): 平滑移动平均线。它是一种改进的简单移动平均线,通过特定的平滑算法计算得出。SMMA 产生的线条非常平滑,但缺点是对价格变动的响应相对滞后。MODE_LWMA
(3): 线性加权移动平均线 。与 EMA 类似,也给予近期价格数据更大的权重,但其权重是呈线性递减的,即最新的价格数据获得最大权重,然后依次递减。
在调用相关指标函数时,合理选择并使用这些常量,可以使您的 EA 逻辑更加清晰,并便于参数的调整和优化。