平均真实波幅(ATR,Average True Range)是一种用于衡量市场波动性的技术分析指标。它是由美国技术分析师J. Welles Wilder于1978年创立的。ATR的主要目的是确定市场波动性的大小,为交易者提供对市场波动性的度量。平均真实波幅是基于一定周期内的最高价、最低价和前一天收盘价计算的。
ATR指标是MT4自带的技术指标之一,在MT4上方菜单栏依次点击-插入-技术指标-振荡指标-Average True Range,在出来指标属性框中设置好相关参数后,点“确定”即可将ATR插入到当前图表中。如下图所示:
在MT4平台上,使用iATR()函数来获取ATR指标数据。iATR()函数的结构如下:
double iATR(
string symbol, // 交易品种名称
int timeframe, // 图表时间周期
int period, // 指标计算的平均周期值
int shift // 指标索引/序号
);
其中参数说明:
- symbol,交易品种名称,当前窗口货币对为 Symbol(),要自行定义参数,可以参考 input string symname = “XAUUSD “; 之类。
- timeframe,图表周期,指一分钟 M1 到月线 MN1 共 9 个图表周期。要自行定义参数,可以参考用 int 或者 ENUM_TIMEFRAMES,如:input ENUM_TIMEFRAMES Period_x = PERIOD_CURRENT; 0 和 PERIOD_CURRENT 都代表当前图表周期。
- period,指标计算的平均周期值参数,默认 14,要自行定义参数,用 int 就可以,如 input int atr_period = 14;。
- shift,获取对应指标线的索引/序号,0指当前最新 K 线所对应的值,然后从右往左分别是 1、2、3、4…,这种规则排序。
获取当前图表中从右侧开始第二个 K 线,也就是 1 号 K 线对应的 ATR 曲线值,参考代码:
double ATR_1 = iATR(Symbol(), 0, 14, 1);//ATR
跨图表获取黄金 XAUUSD 一小时 H1 图表中最新 0 号 K 线对应的 ATR 曲线值,参考代码:
double XAUUSDATR_0 = iATR("XAUUSD", PERIOD_H1, 14, 0);//ATR
如果要获取多个单位的 ATR 指标的值,可以定义数组并结合 for() 循环来编写。总的来说,ATR 指标的编程不是很复杂,实际外汇EA编程开发中根据需要演变iATR()函数的参数即可。