callADXDatas method
dynamic
callADXDatas(
- dynamic low,
- dynamic high,
- dynamic close,
- dynamic N,
指标ADX close一段k线的收盘价 N回溯周期 默认传14
Implementation
callADXDatas(low, high, close, N) {
var size = close.length;
var i = 0;
var refClose = REF(close, 1);
var refHigh = REF(high, 1);
var refLow = REF(low, 1);
var smad = [];
var hd = [];
var ld = [];
var dmpDatas = [];
var dmmDatas = [];
var pdi = [];
var mdi = [];
for (i = 0; i < size; i++) {
var value = Tools.max(
Tools.max(high[i] - low[i], (high[i] - refClose[i]).abs()),
(low[i] - refClose[i]).abs());
smad.add(value);
}
var tr1 = EMA(smad, N);
for (i = 0; i < size; i++) {
hd.add(high[i] - refHigh[i]);
ld.add(low[i] - refLow[i]);
dmpDatas.add(hd[i] > 0 && hd[i] > ld[i] ? hd[i] : 0.0);
dmmDatas.add(ld[i] > 0 && hd[i] < ld[i] ? ld[i] : 0.0);
}
var dmp = EMA(dmpDatas, N);
var dmm = EMA(dmmDatas, N);
//
var adxDatas = [];
for (i = 0; i < size; i++) {
pdi.add(tr1[i] == 0 ? 0.0 : (dmp[i] * 100) / tr1[i]);
mdi.add(tr1[i] == 0 ? 0.0 : (dmm[i] * 100) / tr1[i]);
if (mdi[i] + pdi[i] == 0) {
adxDatas.add(0.0);
} else {
adxDatas.add(((mdi[i] - pdi[i]).abs() / (mdi[i] + pdi[i])) * 100);
}
}
var adx = EMA(adxDatas, N);
var result = {};
result['PDI'] = pdi;
result['MDI'] = mdi;
result['ADX'] = adx;
return result;
}