回測與實際交易不同 / 實單交易與模擬單結果不同

  •   816 
  • 最後發表   默默耕耘的工讀生  2024 十月 24
默默耕耘的工讀生 發文於   2024/10/17

小弟最近寫一段code , 在 2024/10/16 用實單及模擬單跑, 商品一致

 

1. 實單, 同時段遇到連續交易150次, 同時兩人跑

2~4. 模擬單, 同時段只做一筆交易, 同時三人跑

 

在實單遇到連續交易150次, 此情形在模擬單完全沒遇到, 完全跑同樣的商品, 並且三個人同時跑 

也就是說, 模擬單無法驗證出相關問題.

 

並且實單當日虧損約1萬, 而在2024/10/17回測顯示當日應賺3600, 與實際情景有明顯落差

根據我們 log 的資訊去調查, 發現是指標有落後所致

請問有任何資訊可供參考嗎? 已知的bug?

排序方式: 標準 | 最新
默默耕耘的工讀生 發文於   2024/10/18

補充一下, 這兩日有大量交易, 2024/10/16 ~ 2024/10/17 皆有可能遇到此問題

兩次發生時間為 2024/10/16 21:03 和 2024/10/17 15:00

過往都沒經歷過, 想再請工程師協助探討

虎科大許教授 發文於   2024/10/18

使用交易腳本回測,應有個認知,實戰的腳本在回測時,有一些程式碼需要修改,並非直接拿來回測就可以。

若想知道你的問題所在,需要至少貼部份程式碼上來才知道。

默默耕耘的工讀生 發文於   2024/10/18

許教授您好, 

謝謝教授的時間.

想問下教授, 

1. 按照我們系統程式的邏輯, 回測系統應當屬於 Test 環境, 理應與實際環境可以共用程式碼

2. 模擬單屬於 Beta 階段, 也應當可以跑相同程式碼

 

今日的狀況是於 Test / Beta 與 Production 都出現不同結果.

Best regards,

工讀生

虎科大許教授 發文於   2024/10/18

可以舉很多例子說明實戰的交易腳本在回測時需要修改腳本才行。例如,當沖且只交易一次的策略,你可能會用變數控制,交易一次就raiseruntimeerror。這樣寫,實戰沒問題,但回測就不行。或是實戰時用q_的報價欄位,但回測就不行。

默默耕耘的工讀生 發文於   2024/10/18

許教授您好, 

謝謝教授的時間.

以下是我們有使用到的 api, 這些 api 回測 / 模擬單/ 實單 都共用

但是, 這並不能解釋, 為何模擬單沒有出現連續交易150次, 實單有, 煩請教授協助解惑, 謝謝

 

```shell=c

temp_x = Stochastic(_N_value,_N_value,_N_value,_RSV,_k_value,_d_value);       //計算KD指標

temp_x = MACD(avgprice,MACD_y,MACD_z,_N_value,MACD_DIF,MACD_,MACD_OSC_);

...

Close_5[0] = Close;

...

 if Position = 0 and long_condition then 

 Begin

  long_condition = False;

  SetPosition(1);

 End;

 if exit_long_condition then 

 Begin

  exit_long_condition = False;

  SetPosition(0);

 End;

end;

```

 

 

Best regards,

工讀生

默默耕耘的工讀生 發文於   2024/10/18

補充說明,

相同程式碼 有券商 A ,B 遇到完全一致的問題

同時段有完全不同的程式碼, 券商 B 遇到一樣的問題

 

但模擬單都沒有.

虎科大許教授 發文於   2024/10/18

抱歉,從你提供的訊息,實在無法得知問題所在。

默默耕耘的工讀生 發文於   2024/10/18

許教授您好, 

 

一、我們只有使用以上 api 是XQ提供, 其他皆為我們寫的公式, 

您所提到的內容是

"當沖且只交易一次的策略,你可能會用變數控制,交易一次就raiseruntimeerror。這樣寫,實戰沒問題,但回測就不行。或是實戰時用q_的報價欄位,但回測就不行。"

這句話一部分是指使用API造成的差異,  我們是透過變數控制,  根據 Position 狀態  0 或 1 來判斷能否進單, 相信您的意思是實戰與回測有具體的差異, 那我提供使用何種 api 理應會符合您的說明, 我們完全沒有用到其他的 api, 除非有 api 以外的因素

二、實戰與模擬單不是應該完全一樣嗎?

 

Best regards,

工讀生

虎科大許教授 發文於   2024/10/19

我一直以為您是用XS程式交易。不過,您一直提及的API,則是使用其他程式語言,然後透過API(應用程式介面)呼叫XS的程式庫。這部份我所知有限,恐怕幫不上忙。而這部份是否能做到,我也很好奇。

實戰與模擬不必然會完全一樣。光是洗價、競價與撮合機制就可能有差異。

默默耕耘的工讀生 發文於   2024/10/19

許教授您好,

 

謝謝教授的回應,

一、 可以, 我們有管理 XS程式碼 的方法, 並非直接呼叫, 但對於系統程式流程是一致的.

二、 謝謝教授的回答, 也就是說, 都是跟撮合機制有關而已嗎? 有其他可能性?

按照我們的流程已經一年以上沒有遇到問題, 但是這兩天多人遇到同樣嚴重問題.

都是在大量交易出現, 這有什麼可能的原因?

 

謝謝教授耐心的解釋

 

Best regards,

工讀生

 

 

顯示更多回應 發表回覆
Close