mql语言 macd日线金叉死叉报警提示程序
时间: 2024-05-14 12:14:03 浏览: 85
以下是一个简单的MQL程序,用于在MACD日线上发出金叉和死叉的警报提示:
```
//定义指标常量
#property indicator_separate_window
#property indicator_buffers 2
#property indicator_color1 LimeGreen
#property indicator_color2 Red
//定义变量
extern int fast_len = 12;
extern int slow_len = 26;
extern int signal_len = 9;
double macd[];
double signal[];
//初始化指标缓存
int init()
{
SetIndexStyle(0, DRAW_HISTOGRAM);
SetIndexStyle(1, DRAW_LINE);
SetIndexBuffer(0, macd);
SetIndexBuffer(1, signal);
SetIndexLabel(0, "MACD");
SetIndexLabel(1, "Signal");
return(0);
}
//计算指标值
int start()
{
int limit;
int counted_bars = IndicatorCounted();
if(counted_bars < 0)
return(-1);
if(counted_bars > 0)
counted_bars--;
limit = Bars - counted_bars;
for(int i = limit; i >= 0; i--)
{
macd[i] = iMA(NULL, 0, fast_len, 0, MODE_EMA, PRICE_CLOSE, i)-
iMA(NULL, 0, slow_len, 0, MODE_EMA, PRICE_CLOSE, i);
signal[i] = iMAOnArray(macd, Bars, signal_len, 0, MODE_EMA, i);
}
//金叉和死叉警报提示
if(macd[0] > signal[0] && macd[1] <= signal[1])
Alert("MACD金叉");
if(macd[0] < signal[0] && macd[1] >= signal[1])
Alert("MACD死叉");
return(0);
}
```
该程序使用了MQL中的iMA函数计算移动平均线,从而得到MACD和信号线的值。在start函数中,通过判断当前MACD和信号线的值是否相交,来确定是否发出金叉和死叉的警报提示。
需要注意的是,该程序只能在日线上运行,如果需要在其他时间周期上运行,需要根据实际情况调整指标参数和判断条件。
阅读全文