mql语言 实现1小时KDJ背离提示报警
时间: 2023-11-26 17:06:16 浏览: 40
首先,需要定义一些变量:
double K[];
double D[];
double J[];
int prev_calculated;
int limit;
接着,在OnInit函数中初始化这些变量:
int OnInit()
{
//...
SetIndexBuffer(0, K);
SetIndexBuffer(1, D);
SetIndexBuffer(2, J);
//...
}
然后,在OnCalculate函数中计算KDJ指标,并判断是否出现背离:
int OnCalculate(const int rates_total, const int prev_calculated, const datetime &time[], const double &open[], const double &high[], const double &low[], const double &close[], const long &tick_volume[], const long &volume[], const int &spread[])
{
//...
for(int i = limit; i < rates_total; i++)
{
// 计算KDJ指标
double rsv = (close[i] - iLowest(NULL, 0, MODE_LOW, 9, i)) / (iHighest(NULL, 0, MODE_HIGH, 9, i) - iLowest(NULL, 0, MODE_LOW, 9, i)) * 100;
K[i] = iMAOnArray(rsv, 3, 1, 0, MODE_SMA, i);
D[i] = iMAOnArray(K, 3, 1, 0, MODE_SMA, i);
J[i] = 3 * K[i] - 2 * D[i];
// 判断是否出现背离
if(i > 0 && prev_calculated > 0)
{
if((J[i] > J[i-1] && close[i] < close[i-1]) || (J[i] < J[i-1] && close[i] > close[i-1]))
{
Alert("KDJ背离提示:", Symbol(), " ", Period(), " ", TimeToStr(time[i]), " ", DoubleToStr(close[i], Digits));
}
}
}
//...
}
最后,在MetaTrader5平台中添加这个指标,并在设置中开启提示报警功能即可。