MACD的OSC數值錯誤

  •   386 
  • 最後發表   可愛小甜心  2023 三月 07
可愛小甜心 發文於   2023/02/24

您好,

我在選股腳本撰寫MACD(週期24.52.18)策略的時候,發現指標腳本和選股腳本跑出的OSC值(頻率是日)是不相同的,

我用警示腳本搭配盤後選股腳本印出TSE.TW結果: 20180226這天 OSC = 20.229824,

而我用指標腳本印出TSE.TW結果: 20180226這天 OSC = -50.268025,

這兩邊數據相差很大,在日K圖使用指標可以發現指標是正確的。

請問為何選股腳本MACD的OSC值是錯誤的?

 

以下為我使用的程式碼:

value1 = MACD(GetSymbolField("TSE.TW","收盤價","D"),24,52,18,value2,value3,value4)

 

警示搭配選股腳本 MACD 結果

-----------------------------------

D =  20180226.000000 

T =  0.000000 

TSE.TW =  10836.700000 

OSC =  20.229824 

OSC[1] =  11.775888 

D =  20180227.000000 

T =  0.000000 

TSE.TW =  10815.470000 

OSC =  25.820021 

OSC[1] =  20.229824 

 

 

指標腳本 MACD 結果

-----------------------------------

D =  20180226.000000 

T =  0.000000 

TSE.TW =  10836.700000 

OSC =  -50.268025 

OSC[1] =  -57.464059 

D =  20180227.000000 

T =  0.000000 

TSE.TW =  10815.470000 

OSC =  -44.796379 

OSC[1] =  -50.268025

 

排序方式: 標準 | 最新
XQ小幫手 發文於   2023/03/01

 Hello 可愛小甜心,

 

MACD是種需要用到前期值的指標,所以如果若跨頻率的話需要使用 xf_MACDxfMin_MACD

若您的選股/雷達設定的頻率不是日頻率的話,計算就會出錯。

另外,由於其需要用到前期值,故需要一定的預讀筆數才能夠計算出正確的數值。

所需的筆數可以參考內建的選股腳本: SetTotalBar((maxlist(FastLength,SlowLength,6) + MACDLength) * 4);

以您的狀況就會是 (52 + 18) * 4 = 280 日的資料。

 

由於選股預設的預讀筆數是10筆,所以推測可能是您的筆數不足導致計算出的數字不同。

建議您可以將選股/雷達的筆數調長至280日後再試。

 

如果還是有問題的話,麻煩您提供 選股策略和警示雷達的匯出檔勾選(包含)兩者的腳本 以及 XQ Log 來檢驗。

Log資料夾(預設路徑:C:\SysJust\XQLite\LOG)直接壓縮後提供即可。

您可以直接將檔案上傳,如果檔案過大的話也可以保存至雲端空間並提供連結Mail至客服信箱 XQservice@XQ.com.tw 且務必附上 討論文章連結網址(小幫手才能盡早處理)。

感謝。

 

可愛小甜心 發文於   2023/03/03

警示腳本

SetTotalBar((maxlist(24,52,6)+18)*4);

value1 = MACD(GetSymbolField("TSE.TW","收盤價","D"),24,52,18,value2,value3,value4);

if Date=20180226 or Date=20180315 then begin

 print(File("C:\\DDisk\\XQ.txt"), "D = ", Date);

 print(File("C:\\DDisk\\XQ.txt"), "T = ", Time);

 Print(File("C:\\DDisk\\XQ.txt"), "商品名稱", SymbolName);

 print(File("C:\\DDisk\\XQ.txt"), "TSE.TW = ", GetSymbolField("TSE.TW","收盤價","D"));

 print(File("C:\\DDisk\\XQ.txt"), "OSC = ", value4);

end;

if close>10 and close<300 then ret=1;

 

 

回測兩支股票

6625(必應),1539(巨庭)

2018/01/01~2020/11/1

 

 

輸出的結果

D =  20180226.000000 

T =  0.000000 

商品名稱 必應 

TSE.TW =  10836.700000 

OSC =  20.229824 

D =  20180315.000000 

T =  0.000000 

商品名稱 必應 

TSE.TW =  11018.450000 

OSC =  51.099739 

 

D =  20180226.000000 

T =  0.000000 

商品名稱 巨庭 

TSE.TW =  10836.700000 

OSC =  -50.268025 

D =  20180315.000000 

T =  0.000000 

商品名稱 巨庭 

TSE.TW =  11018.450000 

OSC =  10.956280 

 

 

問題:

我要觀察的是大盤 MACD OSC 值

可以看到回測 6625 時

在 20180226 時 OSC =  20.229824

 

回測 1539 時

在 20180226 時 OSC =  -50.268025

 

請問為什麼會不同?

XQ小幫手 發文於   2023/03/07

 Hello 可愛小甜心,

 

因為6625在2018/2/7日才公開上市,所以沒有足夠的資料筆數來計算。

如果您再多回測個2330的話,就會看到2330和1539出來的數值相同。

另外需注意,MACD計算時使用的是加權平均收盤價,不是單純的收盤價。

發表回覆
Close