在 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 逻辑更加清晰,并便于参数的调整和优化。
 
			


