使用內建函數 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 中,所以希望版上大大或小編能幫忙解決疑惑,卡關在這裡很久了,謝謝。

2 評論