诚信为本
量力而为
当前位置:ea编程网 EA知识 正文

包络线指标(Envelopes)编程数据的获取

包络线指标(Envelopes)是一种技术分析指标,用于帮助交易者识别市场过度买入或过度卖出的情况。它是通过在移动平均线的基础上添加一定百分比的偏离值来绘制的。包络线指标包括三条线:上包络线、中心线(移动平均线)和下包络线。

包络线指标是 MT4 自带的技术指标之一,在 MT4 上方菜单栏依次点击-插入-技术指标-趋势指标-Envelopes,在出来指标属性框中设置好相关参数后,点“确定”即可将包络线指标插入到当前图表中。如下图所示:

包络线指标(Envelopes)

在 MT4 平台上,要获取包络线指标数据,可以使用 iEnvelopes() 函数。iEnvelopes() 函数的结构如下:

double iEnvelopes(
   string symbol,         // 交易品种名称
   int timeframe,         // 图表时间周期
   int ma_period,         // 均线周期
   int ma_method,         // 均线方法
   int applied_price,     // 应用价格
   double deviation,      // 偏离百分比
   int mode,              // 模式(MODE_UPPER, MODE_LOWER, MODE_SMMA)
   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 都代表当前图表周期。
  • ma_period:均线周期,默认为 14,要自行定义参数,用 int 就可以,如 input int ma_period = 14;。
  • ma_method:均线方法,包括简单移动平均、指数移动平均等。默认用的是 MODE_SMA,如果需要自行定义,可以用 int 或 ENUM_MA_METHOD 来定义参数,如:input ENUM_MA_METHOD MaMethod = MODE_SMA;之类。
  • applied_price:价格类型,指收盘价、最高价、最低价等。默认用的是 PRICE_CLOSE,如果需要自行定义,可以用 int 或 ENUM_APPLIED_PRICE 来定义参数,如:input ENUM_APPLIED_PRICE App_Price = PRICE_CLOSE;之类。
  • deviation:偏离百分比,如 0.1 表示上下偏离 0.1%。
  • mode:获取指标线的类型,有 MODE_UPPER(上包络线)、MODE_LOWER(下包络线)、MODE_SMMA(中心线,即移动平均线)。
  • shift:获取对应指标线的索引/序号,0指当前最新 K 线所对应的值,然后从右往左分别是 1、2、3、4…,这种规则排序。

获取当前图表中从右侧开始第二个 K 线,也就是 1 号 K 线对应的上包络线、中心线、下包络线的值,参考代码:

double Upper_1 = iEnvelopes(Symbol(), 0, 14, MODE_SMA, PRICE_CLOSE, 0.1, MODE_UPPER, 1); // 上包络线
double Middle_1 = iEnvelopes(Symbol(), 0, 14, MODE_SMA, PRICE_CLOSE, 0.1, MODE_SMMA, 1); // 中心线
double Lower_1 = iEnvelopes(Symbol(), 0, 14, MODE_SMA, PRICE_CLOSE, 0.1, MODE_LOWER, 1); // 下包络线

跨图表获取黄金 XAUUSD 一小时 H1 图表中最新 0 号 K 线对应的上包络线、中心线、下包络线的值,参考代码:

double XAUUSDUpper_0 = iEnvelopes("XAUUSD", PERIOD_H1, 14, MODE_SMA, PRICE_CLOSE, 0.1, MODE_UPPER, 0); // 上包络线
double XAUUSDMiddle_0 = iEnvelopes("XAUUSD", PERIOD_H1, 14, MODE_SMA, PRICE_CLOSE, 0.1, MODE_SMMA, 0); // 中心线
double XAUUSDLower_0 = iEnvelopes("XAUUSD", PERIOD_H1, 14, MODE_SMA, PRICE_CLOSE, 0.1, MODE_LOWER, 0); // 下包络线

获取美元兑日元 USDJPY 三十分钟 M30 图表中最新 0 号 K 线对应的上包络线、中心线、下包络线的值,参考代码:

double USDJPYUpper_0 = iEnvelopes("USDJPY", PERIOD_M30, 14, MODE_SMA, PRICE_CLOSE, 0.1, MODE_UPPER, 0); // 上包络线
double USDJPYMiddle_0 = iEnvelopes("USDJPY", PERIOD_M30, 14, MODE_SMA, PRICE_CLOSE, 0.1, MODE_SMMA, 0); // 中心线
double USDJPYLower_0 = iEnvelopes("USDJPY", PERIOD_M30, 14, MODE_SMA, PRICE_CLOSE, 0.1, MODE_LOWER, 0); // 下包络线

外汇EA编程开发中,我们可以使用数组和循环结构来获取多个指标值。例如,如果您希望获取最近5个K线的包络线指标值,可以创建数组并使用for循环。以下是获取最近5个K线的上包络线、中心线和下包络线指标值的示例代码:

int bars = 5;
double UpperArray[5];
double MiddleArray[5];
double LowerArray[5];

for (int i = 0; i < bars; i++) {
    UpperArray[i] = iEnvelopes(Symbol(), 0, 14, MODE_SMA, PRICE_CLOSE, 0.1, MODE_UPPER, i); // 上包络线
    MiddleArray[i] = iEnvelopes(Symbol(), 0, 14, MODE_SMA, PRICE_CLOSE, 0.1, MODE_SMMA, i); // 中心线
    LowerArray[i] = iEnvelopes(Symbol(), 0, 14, MODE_SMA, PRICE_CLOSE, 0.1, MODE_LOWER, i); // 下包络线
}

在这个例子中,我们创建了三个数组UpperArray、MiddleArray和LowerArray,分别用于存储上包络线、中心线和下包络线的指标值。然后,我们使用for循环遍历5个最近的K线,并为每个K线计算包络线指标值。这样,数组中的每个元素将分别包含相应K线的指标值。

通过这种方法,您可以轻松地获取和处理多个指标值,从而根据这些值制定交易策略。在实际外汇EA编程开发中,您可以根据自己的需求调整iEnvelopes()函数的参数和循环结构。

未经允许不得转载:ea编程网 » 包络线指标(Envelopes)编程数据的获取