請問 回測與實際交易的差距該怎麼縮小

  •   53 
  • 最後發表   Lapoo  2 週前
Lapoo 發文於   2024/11/27

我是在用XS及自動交易中心在做當沖交易,一直會遇到策略回測的交易紀錄,跟實際交易紀錄有落差的狀況,例如:1/1 盤中策略都沒有交易,但是1/2我做回測時,會發現回測在1/1會有交易
差距最大甚至會有5~6個策略在盤中都完全沒交易,但是隔天回測時5~6個策略都各有1~10筆交易不等

想請問我可以怎麼找出問題在哪裡?
或是有哪些函數寫法應該改變呢?

目前我的作法是:1分鐘洗價,用前一根K棒做進場判斷、即時洗價做出場判斷
有用到的語法大略是包含以下類型


if date<>date[1] then value1=0;  

if time = 090500 then value1 = summation(getField("V","1")[1],5);

if date<>date[1] then value2=0;  

if time = 091500 then value2 = getField("內盤量","D")-getField("外盤量","D"); 

if date<>date[1] then value3=0;           

if time = 093000 then value3 = getField("內盤量","D")-getField("外盤量","D"); 


it

time > 090500 and time < 120000
and value1 > getField("成交量","D")[1]*0.3

and value2 < value3

and summation(getField("賣出特大單金額","1")[1],15) > summation(getField("買進特大單金額","1")[1],15)

and summation(getField("投信買張","D")[1],10) <= 0
and summation(getsymbolField("tse.tw", "內盤量","1")[1],25) > summation(getsymbolField("tse.tw", "外盤量","1")[1],25) 

and getsymbolField("tse.tw", "內盤量","D") > getsymbolField("tse.tw", "外盤量","D")

and getsymbolField("tse.tw", "O","D")/getsymbolField("tse.tw", "C","D")[1] - 1 <  0.015

and getsymbolField("TSE.TW", "上漲家數","1")[1] - getsymbolField("TSE.TW", "上漲家數","1")[20] < 100

排序方式: 標準 | 最新
XS小編 發文於   2024/11/29

Hello Lapoo,

 

回測的模擬和實際洗價礙於系統效能,兩者會有差異。

若您希望盡量接近的話,小編會建議兩者皆使用 非逐筆洗價 會比較適合。

勾選逐筆洗價的話,需要知道回測是怎麼運作的,才會比較了解如何調整 (討論區有許多文章講過回測的運作邏輯)。

建議您腳本中可以加上print函數印出相關數值,會比較容易確認盤中跟回測的差別。

  • 按讚來自於
  • mklpio2000
  • Pingzz0719
Lapoo 發文於   2024/11/29

感謝回覆,請問關於系統效能,是指我們自己的電腦硬體配備嗎? 
升級電腦會有幫助嗎? 如果有的話,可以建議的規格嗎? 謝謝

我目前規格是
i7-13700K 3.40GHz

RAM 32GB

 

Lapoo 發文於   2024/11/29

另外,有什麼狀況可以判斷是不是效能有問題呢?
例如,程式自動關閉? 電腦當掉? 之類的

  • 按讚來自於
  • mklpio2000
XS小編 發文於   2024/12/03

Hello Lapoo,

 

小編上面指的系統效能是伺服器的效能,因為回測是執行在伺服器上的。

本機端會需要效能的部分主要是策略運算,若同時啟動大量的策略並運算許多商品的話,效能不夠就可能造成系統變慢。

發生閃退的狀況,可能是開太多圖造成。

若發生上述問題,麻煩告知是如何操作的,並提供 XQ Log 讓相關人員確認。

發表回覆
Close