計算 MACD 後 Plot 結果跟 Print 結果不一致

  •   196 
  • 最後發表   CyberTrade  2020 九月 22
CyberTrade 發文於   2020/09/19

使用內建函數 MACD 計算 dif, macd, osc 三個數值。

variable: difValue(0), macdValue(0), oscValue(0);

 

MACD(weightedclose(), 12, 26, 9, difValue, macdValue, oscValue);

上述程式若用於主圖指標,則與主圖本身繪製的 MACD 數值完全相同,沒有問題。

plot1(difValue,"DIY DIF" );

plot2(macdValue,"DIY MACD" );

plot3(oscValue,"DIY OSC");

以下截圖使用台指期2020年10月期貨合約,一分鐘線,選擇 9/18 日 16:00 時的一分鐘線觀看,可發現自行繪製的指標與程式內建的 MACD 是一致的:

但是,若將上述完全相同的程式碼用於警示,並於相同的商品 (台指期10月合約,一分鐘線) 回測中使用,然後使用 print 觀看輸出的所有數值,卻發現會得到完全不同的結果。

程式碼與上述完全相同,只不過不是繪製指標,而是輸出的外部檔案如下:

print(file("C:\XQPrint\"), currentdate, currenttime, difValue, macdValue, oscValue);

打開外部檔案,找到 9/18 日 16:00 的一分鐘紀錄,卻發現 difValue, macdValue, oscValue 三個值與繪圖指標完全不同。

請問這不一致是我程式撰寫有錯嗎?是否繪圖以及輸出程式碼寫法是不同的?

努力學習 XS 中,所以希望版上大大或小編能幫忙解決疑惑,卡關在這裡很久了,謝謝。

排序方式: 標準 | 最新
CyberTrade 發文於   2020/09/21

請問小編版主是否有任何回覆?

XQ小幫手 發文於   2020/09/22

CyberTrade 您好

小幫手覺得應該是您在 print 時, 設定是currenttime的關係

currenttime 為您的電腦當前的時間,

在回測時(因為是過往的時間)

建議使用date,time 系統時間 去觀察數據會比較不會發生誤解,

以下是我幫您測試的數據

可以看到數值是相同的(四捨五入會有微小差距)

我的腳本撰寫方式為

ret=1;
variable: difValue(0), macdValue(0), oscValue(0);

MACD(weightedclose(), 12, 26, 9, difValue, macdValue, oscValue);

print(date, time,close,difValue, macdValue, oscValue);

以上提供給您參考 感謝

發表回覆
Close