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

DEM指标(DeMarker)编程数据的获取

德马克指标(DeMarker,DEM)是一种常用的技术分析指标,由著名技术分析师 Thomas R. DeMark 创立。该指标主要用于确定价格波动的高点和低点,有助于分析市场过度买入或过度卖出的状态。其计算方法与相对强弱指数(RSI)相似,但 DeMarker 指标主要关注价格的最高价和最低价。

德马克指标(DeMarker,DEM)是MT4自带的技术指标之一,在MT4上方菜单栏依次点击-插入-技术指标-振荡指标-DeMarker,在弹出的指标属性框中设置好相关参数后,点击“确定”即可将指标插入到当前图表中。如下图所示:

DeMarker 指标

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

double iDeMarker(
   string symbol,      // 交易品种名称
   int timeframe,      // 图表时间周期
   int period,         // 指标计算的平均周期值
   int shift           // 指标索引/序号
);

其中参数说明:

  1. symbol,交易品种名称,当前窗口货币对为 Symbol(),要自行定义参数,可以参考 input string symname = “XAUUSD”;
  2. timeframe,图表周期,指一分钟 M1 到月线 MN1 共 9 个图表周期。要自行定义参数,可以参考用 int 或者 ENUM_TIMEFRAMES,如:input ENUM_TIMEFRAMES Period_x = PERIOD_CURRENT;0 和 PERIOD_CURRENT 都代表当前图表周期。
  3. period,指标计算的平均周期值参数,默认 14,要自行定义参数,用 int 就可以,如 input int dem_period = 14;
  4. shift,获取对应指标线的索引/序号,0指当前最新 K 线所对应的值,然后从右往左分别是 1、2、3、4…,这种规则排序。

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

double DeMarker_1 = iDeMarker(Symbol(), 0, 14, 1);

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

double XAUUSDDeMarker_0 = iDeMarker("XAUUSD", PERIOD_H1, 14, 0);

跨图表获取美元兑日元 USDJPY 三十分钟 M30 图表中最新 0 号 K 线对应的 DeMarker 值,参考代码:

double USDJPYDeMarker_0 = iDeMarker("USDJPY", PERIOD_M30, 14, 0);

如果要获取多个单位的 DeMarker 指标的值,可以定义数组并结合 for() 循环来编写。总的来说,DeMarker 指标的编程不是很复杂,实际外汇ea编程开发中根据需要调整 iDeMarker() 函数的参数即可。

以下是一个使用德马克指标的简单示例:

// 定义参数
input string SymbolName = "EURUSD";          // 交易品种名称
input ENUM_TIMEFRAMES TimeFrame = PERIOD_H1; // 图表时间周期
input int DeMarkerPeriod = 14;               // 指标计算的平均周期值

// 在策略或指标初始化时创建数组
double DeMarkerArray[];

// 在策略或指标开始运行时计算 DeMarker 值
int OnInit()
{
   ArrayResize(DeMarkerArray, DeMarkerPeriod);

   for (int i = 0; i < DeMarkerPeriod; i++)
   {
      DeMarkerArray[i] = iDeMarker(SymbolName, TimeFrame, DeMarkerPeriod, i);
   }

   return (INIT_SUCCEEDED);
}

// 在策略或指标每次更新时打印最新的 DeMarker 值
int OnCalculate(...)
{
   double latestDeMarker = DeMarkerArray[0];
   Print("最新的 DeMarker 值: ", latestDeMarker);

   return (rates_total);
}

通过这个简单的示例,你可以了解如何在 MQL4 编程中使用 iDeMarker() 函数来获取和处理 DeMarker 指标数据。在实际编程中,你可以根据自己的需求修改和优化代码,以更好地利用 DeMarker 指标分析市场走势。

未经允许不得转载:ea编程网 » DEM指标(DeMarker)编程数据的获取