mql语言 kd线的背离计算方法代码
时间: 2023-10-18 08:04:50 浏览: 38
由于KD线的背离计算方法有多种,以下代码提供一种简单的实现:
```
double high = High[1];
double low = Low[1];
double k = iK(NULL, 0, 5, 3, MODE_EMA, PRICE_CLOSE, 1);
double d = iK(NULL, 0, 5, 3, MODE_EMA, PRICE_CLOSE, 2);
double highK = iHigh(NULL, 0, MODE_HIGH, 3, 1);
double lowK = iLow(NULL, 0, MODE_LOW, 3, 1);
bool bullishDivergence = (k < d) && (Low[0] > low) && (Low[0] < lowK);
bool bearishDivergence = (k > d) && (High[0] < high) && (High[0] > highK);
```
其中,`iK`函数用于计算KD线指标,`iHigh`和`iLow`函数用于计算最高价和最低价。`bullishDivergence`和`bearishDivergence`分别表示出现了看涨背离和看跌背离。具体判断逻辑为:当K线向下穿越D线,且当前低点高于前一低点,同时低点位于K线前一根低点和当前K线最低点之间,则出现看涨背离;当K线向上穿越D线,且当前高点低于前一高点,同时高点位于K线前一根高点和当前K线最高点之间,则出现看跌背离。
相关问题
mql语言 kd线的背离计算方法当背离时招警代码
以下为mql语言kd线背离计算方法的示例代码:
首先,需要计算出KD指标的数值,可以使用iStochastic函数进行计算,如下所示:
double K, D;
iStochastic(NULL, 0, 5, 3, 3, MODE_SMA, 0, MODE_MAIN, 0, MODE_SMA, 0, MODE_MAIN, 1, K, D);
其中,第一个参数为null表示当前图表,第二个参数为0表示当前周期,第三个参数为5表示K线的周期,第四个和第五个参数都为3表示D线的周期,MODE_SMA表示使用SMA平均线,MODE_MAIN表示计算主线,1表示计算D线。
然后,需要判断背离的条件,即价格和KD指标的趋势不一致。以下为判断价格和KD指标的趋势的示例代码:
double cur_price = Close[0];
double pre_price = Close[1];
double cur_k = K;
double pre_k = iStochastic(NULL, 0, 5, 3, 3, MODE_SMA, 0, MODE_MAIN, 0, MODE_SMA, 0, MODE_MAIN, 2, K, D);
double cur_d = D;
double pre_d = iStochastic(NULL, 0, 5, 3, 3, MODE_SMA, 0, MODE_MAIN, 0, MODE_SMA, 0, MODE_MAIN, 3, K, D);
bool bullish_div = (cur_price > pre_price && cur_k < pre_k && cur_d < pre_d);
bool bearish_div = (cur_price < pre_price && cur_k > pre_k && cur_d > pre_d);
其中,bullish_div表示看涨背离,bearish_div表示看跌背离。
最后,可以使用Alert函数进行警报,示例如下:
if (bullish_div) {
Alert("Bullish Divergence detected!");
}
if (bearish_div) {
Alert("Bearish Divergence detected!");
}
注意:以上代码仅供参考,实际使用时需要根据具体需求进行修改。
mql语言 KD出现顶背离时报警并给出K线最高值反之
当使用MQL语言编写的KD指标出现顶背离时,可以通过以下代码实现报警并给出K线最高值:
```
double KValue = iCustom(Symbol(), PERIOD_CURRENT, "KD", 9, 3, 3, MODE_MAIN, 0);
double DValue = iCustom(Symbol(), PERIOD_CURRENT, "KD", 9, 3, 3, MODE_SIGNAL, 0);
double HighValue = iHigh(Symbol(), PERIOD_CURRENT, 1);
if (KValue > DValue && HighValue > iHigh(Symbol(), PERIOD_CURRENT, 2)) {
Alert("KD出现顶背离,K线最高值为:", DoubleToStr(HighValue, 5));
}
```
上述代码中,首先使用iCustom函数获取当前K值和D值,然后使用iHigh函数获取最高价,如果K值大于D值且当前最高价大于前一根K线的最高价,则触发警报并输出最高价。
反之,如果需要在KD指标出现底背离时报警并给出K线最低值,则可以使用以下代码:
```
double KValue = iCustom(Symbol(), PERIOD_CURRENT, "KD", 9, 3, 3, MODE_MAIN, 0);
double DValue = iCustom(Symbol(), PERIOD_CURRENT, "KD", 9, 3, 3, MODE_SIGNAL, 0);
double LowValue = iLow(Symbol(), PERIOD_CURRENT, 1);
if (KValue < DValue && LowValue < iLow(Symbol(), PERIOD_CURRENT, 2)) {
Alert("KD出现底背离,K线最低值为:", DoubleToStr(LowValue, 5));
}
```
上述代码中,首先使用iCustom函数获取当前K值和D值,然后使用iLow函数获取最低价,如果K值小于D值且当前最低价小于前一根K线的最低价,则触发警报并输出最低价。