各位好
最近看到滿多大大提問關於MACD 的數值跟線圖數據不相符的
小弟我有自己嘗試了一下,
發現好像最大的原因在於"取的時間資料量不足"
nEMA=(前一日nEMA*(n-1)+今日收盤價×2)/(n+1)
mEMA=(前一日mEMA*(m-1)+今日收盤價×2)/(m+1)
DIF=nEMA-mEMA
xMACD=(前一日xMACD*(x-1)+DIF×2)/(x+1)
----
從上面MACD 的公式可以看出,MACD的值會運用到前期的值在加以運算
也就是環環相扣的
所以要取比較長的時間才能讓數據平滑,符合計算線型的值
我看了一下XQ 內建的MACD 公式為
// MACD 死亡交叉 (dif向下穿越macd) // input: FastLength(12), SlowLength(26), MACDLength(9); variable: difValue(0), macdValue(0), oscValue(0); SetTotalBar((maxlist(FastLength,SlowLength,6) + MACDLength) * 3 + 8); SetInputName(1, "DIF短期期數"); SetInputName(2, "DIF長期期數"); SetInputName(3, "MACD期數"); MACD(weightedclose(), FastLength, SlowLength, MACDLength, difValue, macdValue, oscValue); Ret = difValue Crosses Below macdValue;
其中
SetTotalBar((maxlist(FastLength,SlowLength,6) + MACDLength) * 3 + 8);
為設定資料讀取筆數的公式,這樣取的值對應macd的數值就會是正確的

我們可以看到數值為正確的,系統算出來的對應資料讀取數最低為113


1 評論