|
|
在MetaTrader 4(MT4)平台的MQL4编程语言中,MACD(指数平滑异同移动平均线)指标常用于分析价格趋势和判断买卖信号。以下是一个简单的自定义MACD指标代码示例,同时包含信号线(Signal Line)和柱状图(Histogram)的计算与绘制:
#property copyright "Your Name"
#property link "Your Website"
#property version "1.00"
#property strict
// 指标参数
input int FastEMA_Period = 12;
input int SlowEMA_Period = 26;
input int Signal_Period = 9;
// 缓存数组
double MACDBuffer[];
double SignalBuffer[];
double HistogramBuffer[];
// 初始化函数
int init() {
// 设置指标缓冲区
SetIndexBuffer(0, MACDBuffer);
SetIndexBuffer(1, SignalBuffer);
SetIndexBuffer(2, HistogramBuffer);
// 设置指标绘图
SetIndexStyle(0, DRAW_LINE, STYLE_SOLID, 1, Blue);
SetIndexStyle(1, DRAW_LINE, STYLE_SOLID, 1, Red);
SetIndexStyle(2, DRAW_HISTOGRAM, STYLE_SOLID, 1, Green);
// 设置指标名称和标签
IndicatorShortName("MACD (" + FastEMA_Period + "," + SlowEMA_Period + "," + Signal_Period + ")");
SetIndexLabel(0, "MACD");
SetIndexLabel(1, "Signal");
SetIndexLabel(2, "Histogram");
// 定义指标绘图区域
IndicatorDigits(Digits + 2);
SetIndexDrawBegin(0, Signal_Period);
SetIndexDrawBegin(1, Signal_Period);
SetIndexDrawBegin(2, Signal_Period);
return 0;
}
// 计算函数
int start() {
int limit = Bars - Signal_Period;
int i;
for (i = 0; i < limit; i++) {
// 计算MACD线
MACDBuffer = iMA(Symbol(), 0, FastEMA_Period, 0, MODE_EMA, PRICE_CLOSE, i) -
iMA(Symbol(), 0, SlowEMA_Period, 0, MODE_EMA, PRICE_CLOSE, i);
// 计算信号线
SignalBuffer = iMAOnArray(MACDBuffer, 0, Signal_Period, 0, MODE_EMA, i);
// 计算柱状图
HistogramBuffer = MACDBuffer - SignalBuffer;
}
return 0;
}复制代码
代码说明:
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. 编译代 |
|