MACD 計算出來的DIF,MACD 和 OSC 值都跟XQ看盤軟體的值不一樣

  •   530 
  • 最後發表   Dave  2020 十月 30
Dave 發文於   2020/10/27

您好:

我使用 00647L 元大S&P 500 正2 股票所做

MACD 計算出來的 DIF,MACD 和 OSC 值都跟XQ看盤軟體的值不一樣.

語法:

//MACD

Variable : DIFvalue(0),MACDvalue(0),OSCvalue(0);

//MACD 死亡交叉

macd(close, 12, 26, 9, DIFvalue, MACDvalue, OSCvalue);

print(date,close,difvalue,macdvalue);

if DIFvalue cross under MACDvalue then ret=1;

附檔為產生出來的值

附加文件

排序方式: 標準 | 最新
Dave 發文於   2020/10/28

您好, 我改成你回覆給我將的設法, 一樣出來 DIF, MACD, OSC 的值都是錯的

導致回測出來結果都不對也

--> SetTotalBar((maxlist(FastLength,SlowLength,6) + MACDLength) * 3 + 8);

附加文件

XQ小幫手 發文於   2020/10/28

Dave 您好

// 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);

if DIFvalue cross under MACDvalue then ret=1;

print(date,close,difvalue,macdvalue);

此為我所測試的腳本,

附檔的圖為我按照您回測報告所跑的資料 2010~2020

我們可以看到 print 數值10/27 是

dif =-0.03 macd=-0.037  數值會是相符的

再請您試看看  並利用print數值看看是否如附檔這樣

附加文件

Dave 發文於   2020/10/29

您好, 

不好意思, 我想買你們策略模組, 我先測試一下你們的資料回測正確性, 但

我直接貼你的公式了, 出來MACD 值還是錯的, 

請問我買進的策略是如下:

input:x(20,"天期");

value1 = average(close,x);

if close cross over value1 then ret=1;

賣出策略是直接 Copy 你程式.

出來結果: 他會直接在第20 天就開始計算 DIF 值, 而不是第26天, 結果如下: 完全都跟系統圖表的值不一樣

20151214.000000 19.320000 0.000000 0.000000 

20151215.000000 19.400000 0.000000 0.000000 

20151216.000000 19.900000 0.000000 0.000000 

20151217.000000 20.240000 0.000000 0.000000 

20151218.000000 19.560000 0.000000 0.000000 

20151221.000000 19.210000 0.000000 0.000000 

20151222.000000 19.450000 0.000000 0.000000 

20151223.000000 19.720000 0.000000 0.000000 

20151224.000000 20.040000 0.000000 0.000000 

20151225.000000 20.020000 0.000000 0.000000 

20151228.000000 20.030000 0.000000 0.000000 

20151229.000000 20.050000 0.000000 0.000000 

20151230.000000 20.400000 0.000000 0.000000 

20151231.000000 20.180000 0.000000 0.000000 

20160104.000000 19.530000 0.000000 0.000000 

20160105.000000 19.400000 0.000000 0.000000 

20160106.000000 19.160000 0.000000 0.000000 

20160107.000000 18.620000 0.000000 0.000000 

20160108.000000 18.400000 0.000000 0.000000 

20160111.000000 17.660000 0.000000 0.000000 

20160112.000000 17.580000 0.002194 0.000439 

20160113.000000 18.230000 0.047363 0.009824 

20160114.000000 17.250000 0.002840 0.008427 

20160115.000000 17.450000 -0.006350 0.005472 

20160118.000000 17.190000 -0.043591 -0.004341 

20160119.000000 17.390000 -0.057115 -0.014896 

20160120.000000 16.500000 -0.124695 -0.036856 

20160121.000000 16.810000 -0.156877 -0.060860 

20160122.000000 17.060000 -0.168137 -0.082315 

20160125.000000 17.500000 -0.136753 -0.093203 

20160126.000000 16.910000 -0.155278 -0.105618 

20160127.000000 17.280000 -0.141498 -0.112794 

20160128.000000 17.180000 -0.135072 -0.117250 

20160129.000000 17.430000 -0.113143 -0.116428 

20160130.000000 18.000000 -0.047806 -0.102704 

20160201.000000 17.880000 -0.001256 -0.082414 

20160202.000000 17.750000 0.027052 -0.060521 

20160203.000000 17.280000 0.005646 -0.047287 

20160215.000000 16.880000 -0.034323 -0.044695 

附加文件

XQ小幫手 發文於   2020/10/30

Dave 您好

 

原因是因為 

2015/12/14 元大原油正二 才剛上市呀

沒有數據的情況要怎麼去算macd 值呀XDDD

總要給他足夠的時間數據才能算出東西吧! 

假設如果這段時間有數值 我們才該擔心~

Dave 發文於   2020/10/30

您好, 

你誤會了, 麻煩你看一下XQ 系統上我去查週 MACD 的值和,

和回測時產生的值 MACD 值都不一樣,  在第一筆資料二者就不一樣了

我個人用 EXCEL 去算, XQ系統資料是對的, 回測是不對的

我把回測 MACD MACD 值加到附檔給您

附加文件

Dave 發文於   2020/10/30

您好, 

我補充一下, 在以下條件下 回測 MACD 的值不一樣

買進策略: 突破20平均線

賣出策略:DIF  MACD 死亡交叉

我回測的績效我覺的不對, 我對進出資料, 發現賣點不對, 我進一步查, 發現是 MACD 的的值不對, 

MACD 所產的值如附檔(上封), 可以麻煩你再對一下, 你們XQ 系統上的資料, 謝謝

附加文件

XQ小幫手 發文於   2020/10/30

Dave 您好

這是一樣的道理

這邊先向您說明一下macd的計算公式

請參考這篇文章

https://forum.xq.com.tw/thread/macd-%e6%8a%80%e8%a1%93%e6%8c%87%e6%a8%99%e7%9a%84%e8%b3%87%e6%96%99%e8%ae%80%e5%8f%96%e7%ad%86%e6%95%b8%e8%a8%ad%e5%ae%9a/

MACD RSI KD 等技術指標

都是"連續性" 的指標, 

也就是"當前的數值,會使用到前期的數值去做運算"

所以如果您單看開始前幾根的數值是不可能準確的,也沒有所謂正確的值

這類指標需要一段時間去進行平滑才會是你所希望的準確值

我們看看盤介面上的值為2016/1/20 開始進行運算 OSC -0.24

您PRINT出來的值是2016/1/12 開始    2016/1/20  OSC -0.12  

建議您可以看看其他券商看盤軟體的值為多少 相信也會是不一樣的

EX 元富證券的系統 2016/10/4  才開始計算  OSC = 0 

----

 

XQ小幫手 發文於   2020/10/30

例如您把您的PRINT值去觀察近一兩年的數值 就會是正確無誤的

發表回覆
Close