DPO指标在FMZ中的实现

Author: 微信 deshunquant, Created: 2021-09-28 10:49:11, Updated: 2021-09-28 11:50:39

一、怎么使用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波动至超卖线时,意味着股价处于短期低点。

3、如果DPO指标位于0轴上方,代表处于多头市场。如果DPO指标由负值向上穿越0轴时,这是买进讯号。

4、如果DPO指标位于0轴下方,代表处于空头市场。如果DPO指标由正值向下穿越0轴时,这是卖出讯号。


More

小小梦 ``` /* 计算方法: 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]) } ``` 给你个思路,不保证对,没验证过。