MACD 技術指標的資料讀取筆數設定

  •   711 
  • 最後發表   dean60061  2020 十月 28
dean60061 發文於   2020/10/28

各位好

最近看到滿多大大提問關於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

附加文件

dean60061 發文於   2020/10/28

如果是要跨頻率取macd值,似乎需要更大量的資料讀取筆數

我們用5分k頻率去取  日頻率的macd試看看

settotalbar(200);

value1 = xf_MACD("d",xf_weightedclose("d"),12,26,9,value2,value3,value4);

print(date,time,value2,value3,value4);

假設資料讀取筆數設200

那數值會有問題

但如果我們把資料讀取筆數拉大到 像是5000  

數值就會準確了

所以我們在使用這類指標 包括kd那種,

有用到跨頻率的話,可能需要考慮一下資料讀取筆數的問題wwwwwww

(這看起來跨得頻率越大,取的就要越多RR) 

附加文件

發表回覆
Close