Average() 計算結果跟我預期的不同

  •   12 
  • 最後發表   奔雷  2 週前
奔雷 發文於   2020/07/31

我寫了底下這段程式碼想觀察 Average() 的輸出

 

Var: avgClose(Average(Close, 2));
print(File("C:\SysJust\XQ2005\LOG\print_log\"), avgClose);

 

結果我執行選股回測後,得到的台泥(1101) log 是

 

45.050000 
45.050000 
45.050000 
45.050000 
45.050000 
45.050000 
45.050000 
45.050000 
45.050000 
45.050000 
45.050000 
45.050000 

 

裡面總共有 12 筆資料

我的選股回測時間是設定 2020/7/30 ~ 2020/7/31,回測的詳細參數在附圖裡

只有兩天的回測時間,為什麼會跑出 12 筆資料呢?

 

台泥 2020/7/30 的收盤價是 45.35,2020/7/31 收盤價是 45

(45.35 + 45)/2 = 45.175,45.175 也跟 45.05 不一樣

 

請問 Average() 為什麼產生這樣的輸出結果?

 

我原本以為會得到底下的輸出結果:

45.2
45.175

因為 7/29, 7/30, 7/31 台泥的收盤價分別是 45.05, 45.35, 45

45.2 等於 45.05 跟 45.35 的平均: 45.2 = (45.05 + 45.35) / 2

45.175 等於 45.35 跟 45 的平均: 45.175 = (45.35 + 45) / 2

附加文件

奔雷 發文於   2020/08/02

我查到原因了,因為我的讀取資料是 10 筆的關係,所以程式讀了 7/30 以前的 10 筆資料。

這 10 筆再加上 7/30, 7/31 的 2 筆資料,總共是 12 筆。

 

而 Var: 開頭的程式經過我的觀察,它只會執行 1 次,所以每次 print 輸出的值的都一樣。

 

由於 7/30 往前數 10 個交易日是 7/16,所以 print 產生的 45.05 是 7/16 與 7/15 收盤價的平均。

45.05 = (44.5 + 45.6) / 2

 

  • 按讚來自於
  • b24524658
發表回覆
Close