Как использовать показатель DPO?
Для начала нужно знать формулу расчета показателя DPO:
1, MA = N-дневная простая скользящая средняя;
2 DPO = простая скользящая средняя за закрытие - MA ((N/2+1));
3 MADPO = DPO - простая скользящая средняя за M дней;
Из них, N=21, M=6。
Второе, как использовать показатель DPO:
1, над 0-й осью, установить линию сверхпокупа, когда DPO колеблется до линии сверхпокупа, означает, что цена акции находится на краткосрочной высоте.
2, вниз по оси 0, установить линию перепродажи, когда DPO колеблется до линии перепродажи, означает, что цена акции находится на краткосрочной низкой точке.
- Если индикатор DPO находится выше 0-ой оси, то это означает, что вы находитесь на многоосновном рынке. Если индикатор DPO проходит через 0-ую ось с отрицательным значением вверх, это сигнал к покупке.
4, если индикатор DPO находится ниже 0-ой оси, то он находится на пустом рынке. Если индикатор DPO пересекает 0-ую ось с положительной стороны вниз, то это сигнал продажи.
/*
计算方法:
1、MA的N日收盘价加总/N
2、DPO = 收盘价 - ((n / 2) + 1)日的MA
3、MADPO = DPO M日的移动平均
N = 21, M = 6
*/
// 指标算法
function DPO(r, n) {
var arrDpo = []
for (var i = 0 ; i < r.length ; i++) {
var currRecords = []
for (var j = 0 ; j < i ; j++) {
currRecords.push(r[j])
}
var ma = TA.MA(currRecords, (_N(n / 2, 0) + 1))
var dpo = NaN
if (currRecords.length == 0 || !ma || ma.length == 0 || !ma[ma.length - 1]) {
dpo = NaN
} else {
var close = r[i].Close
dpo = close - ma[ma.length - 1]
}
arrDpo.push(dpo)
}
return arrDpo
}
function MADPO(dpo, m) {
return TA.MA(dpo, m)
}
// 使用指标例子
function main() {
var r = exchange.GetRecords()
var dpo = DPO(r, 21)
Log(_D(r[r.length - 1].Time), "dpo on last bar:", dpo[dpo.length - 1])
Log(_D(r[r.length - 2].Time), "dpo on pre bar:", dpo[dpo.length - 2])
var madpo = MADPO(dpo, 6)
Log(_D(r[r.length - 1].Time), "madpo on last bar:", madpo[madpo.length - 1])
Log(_D(r[r.length - 2].Time), "madpo on pre bar:", madpo[madpo.length - 2])
}
给你个思路,不保证对,没验证过。
- 1
