设为首页 收藏本站 切换语言
| 发表于 2025-7-1 15:25:51 来自手机 | 显示全部楼层 |复制链接
在MetaTrader 4(MT4)平台的MQL4编程语言中,MACD(指数平滑异同移动平均线)指标常用于分析价格趋势和判断买卖信号。以下是一个简单的自定义MACD指标代码示例,同时包含信号线(Signal Line)和柱状图(Histogram)的计算与绘制:
  1. #property copyright "Your Name"
  2. #property link      "Your Website"
  3. #property version   "1.00"
  4. #property strict
  5. // 指标参数
  6. input int FastEMA_Period = 12;
  7. input int SlowEMA_Period = 26;
  8. input int Signal_Period = 9;
  9. // 缓存数组
  10. double MACDBuffer[];
  11. double SignalBuffer[];
  12. double HistogramBuffer[];
  13. // 初始化函数
  14. int init() {
  15.     // 设置指标缓冲区
  16.     SetIndexBuffer(0, MACDBuffer);
  17.     SetIndexBuffer(1, SignalBuffer);
  18.     SetIndexBuffer(2, HistogramBuffer);
  19.     // 设置指标绘图
  20.     SetIndexStyle(0, DRAW_LINE, STYLE_SOLID, 1, Blue);
  21.     SetIndexStyle(1, DRAW_LINE, STYLE_SOLID, 1, Red);
  22.     SetIndexStyle(2, DRAW_HISTOGRAM, STYLE_SOLID, 1, Green);
  23.     // 设置指标名称和标签
  24.     IndicatorShortName("MACD (" + FastEMA_Period + "," + SlowEMA_Period + "," + Signal_Period + ")");
  25.     SetIndexLabel(0, "MACD");
  26.     SetIndexLabel(1, "Signal");
  27.     SetIndexLabel(2, "Histogram");
  28.     // 定义指标绘图区域
  29.     IndicatorDigits(Digits + 2);
  30.     SetIndexDrawBegin(0, Signal_Period);
  31.     SetIndexDrawBegin(1, Signal_Period);
  32.     SetIndexDrawBegin(2, Signal_Period);
  33.     return 0;
  34. }
  35. // 计算函数
  36. int start() {
  37.     int limit = Bars - Signal_Period;
  38.     int i;
  39.     for (i = 0; i < limit; i++) {
  40.         // 计算MACD线
  41.         MACDBuffer = iMA(Symbol(), 0, FastEMA_Period, 0, MODE_EMA, PRICE_CLOSE, i) -
  42.                         iMA(Symbol(), 0, SlowEMA_Period, 0, MODE_EMA, PRICE_CLOSE, i);
  43.         // 计算信号线
  44.         SignalBuffer = iMAOnArray(MACDBuffer, 0, Signal_Period, 0, MODE_EMA, i);
  45.         // 计算柱状图
  46.         HistogramBuffer = MACDBuffer - SignalBuffer;
  47.     }
  48.     return 0;
  49. }
复制代码

代码说明:

1. 指标参数:定义了快速EMA周期(FastEMA_Period)、慢速EMA周期(SlowEMA_Period)和信号线周期(Signal_Period),可在MT4平台上直接调整。

2. 缓存数组:MACDBuffer存储MACD线数据,SignalBuffer存储信号线数据,HistogramBuffer存储柱状图数据。

3. 初始化函数(init()):设置指标缓冲区、绘图样式、名称和标签,并定义绘图区域。

4. 计算函数(start()):通过iMA函数计算MACD线,通过iMAOnArray函数在MACD线数组上计算信号线,最后得出柱状图数据。

使用方法:

1. 将上述代码复制到MT4的“专家顾问(EA)”编辑器(可通过“文件” -> “打开数据文件夹”,进入“MQL4” -> “Indicators”文件夹,创建一个新的.mq4文件并粘贴代码)。

2. 编译代
举报

评论 使用道具

上一篇 : 交易计划启动
下一篇 : 外汇mt4教学

精彩评论2

dongjiabao1
D
| 发表于 2025-7-1 15:31:02 来自手机 | 显示全部楼层
谢谢分享
举报

点赞 评论 使用道具

yangxiao
DD
| 发表于 2025-7-1 18:09:59 | 显示全部楼层
好经典的指标。
举报

点赞 评论 使用道具

发新帖
EA交易
您需要登录后才可以评论 登录 | 立即注册

简体中文
繁體中文
English(英语)
日本語(日语)
Deutsch(德语)
Русский язык(俄语)
بالعربية(阿拉伯语)
Türkçe(土耳其语)
Português(葡萄牙语)
ภาษาไทย(泰国语)
한어(朝鲜语/韩语)
Français(法语)