自動交易漏單問題

  •   118 
  • 最後發表   黑框  13 小時前
黑框 發文於   2021/04/27

小幫手您好

我目前使用自動交易的方式來進行當沖

有三個自動交易的策略,每個策略盯50檔股票,每個tick都洗價

收盤後檢查print出來的資料,發現漏單的問題蠻嚴重的

舉例來說: 有6個符合我進場策略的條件成立,但只會下單其中一筆

print檢查後確認電腦的確有抓到符合條件的tick,但卻沒有下單。請問這是甚麼原因呢?

(ps. 我沒有設定任何的安控機制)

排序方式: 標準 | 最新
BLin 發文於   2021/04/27

我也是有同樣狀況

一個策略一次盯三四十檔股票當沖,常常整天都沒下單

收盤後檢查,常發現符合條件的TICK出現之後,系統卻沒執行指令,

每天這樣測,時常漏單,這狀況是跟盯太多檔股票有關嗎? 還是同時執行太多策略有關? 還是系統面本身需要改進?

當沖的狀況 有沒有建議一個策略最多盯幾檔為上限?

 

XQ小幫手 發文於   2021/04/28

Hello 黑框, BLin,

 

需要麻煩您們提供自動交易中心/策略雷達的匯出檔、相關腳本以及 XQ Log 檔案來檢查才能知道問題出在哪裡。

Log資料夾(預設路徑:C:\SysJust\XQLite\LOG)直接壓縮即可。

您可以直接將檔案上傳,如果檔案過大的話也可以Mail至客服信箱 XQservice@XQ.com.tw且附上討論文章連結網址。

黑框 發文於   2021/04/28

小幫手您好,檔案已e-mail到客服信箱

麻煩您盡快回覆,謝謝您!

XQ小幫手 發文於   2021/04/29

Hello 黑框, BLin,

 

客服有收到兩位的來信並轉給小幫手了,但是裡面並沒有附檔案。

您信裡面有提到附上了 4/27的交易腳本/log file/print。

但是需要您一起附上自動交易中心的匯出檔,因為裡面包含了您對交易頻率,商品的設定,如果您有串接選股中心的話,那部分的資料也需要麻煩您提供。

您可以直接將檔案上傳,如果檔案過大的話也可以Mail至客服信箱 XQservice@XQ.com.tw且附上討論文章連結網址。

黑框 發文於   2021/04/29

小幫手您好,目前您只缺少自動交易中心的匯出檔嗎?

能否請您截圖如何匯出?

我擔心我之前匯出的方法可能不是您想要的。

謝謝您!

黑框 發文於   2021/05/04

小幫手您好

上禮拜已經把需要的檔案寄給您了!

再麻煩回覆一下處理的進度,謝謝!

XQ小幫手 發文於   2021/05/04

Hello 黑框,

 

根據您郵件裡提到的6個商品的 tick 應該要觸發但只觸發第一件商品的狀況,小幫手根據您提供的print結果檢查了沒觸發的五樣商品。

其中 1605、3030和2485的 單量 > 0.08 * (q_BestBidSize1+q_BestBidSize2+q_BestBidSize3+q_BestBidSize4+q_BestBidSize5) 的條件不符合。

3030 的 (q_BestBidSize1+q_BestBidSize2+q_BestBidSize3+q_BestBidSize4+q_BestBidSize5)>(q_BestAskSize1+q_BestAskSize2+q_BestAskSize3+q_BestAskSize4+q_BestAskSize5)*1.5 也不符合。

計算細節如下:

 

1605: 230 > 0.08 * (290+623+1443+531+776)

3030: 25 > 0.08 * (16+4+43+227+71)

          (16+4+43+227+71) > (4+5+15+33+804)

2485: 45 > 0.08 * (306+46+307+11+189)

 

2363 和 2615 這兩樣商品print出來可以檢查的部分都符合,但還有以下兩個條件無法重現於查驗,問題可能出在這邊。

TimeDiff(tick_array[idx, 2], tick_array[idx-1, 2], "S")<30

TimeDiff(tick_array[idx, 2], tick_array[2, 2], "S")>60

 

小幫手建議您可以考慮在print的時候將各個條件是否符合分別 print 出來,會比較容易檢查。

 

關於您在mail裡提到的第二個問題 error code 1401 等確認完後會再告知,感謝。

附加文件

黑框 發文於   2021/05/04

小幫手您好,print的檔案有包含tick_array[idx, 2],這部分應該可以判斷。

TimeDiff(tick_array[idx, 2], tick_array[idx-1, 2], "S")<30,希望每個tick時間間隔小於30s

TimeDiff(tick_array[idx, 2], tick_array[2, 2], "S")>60,希望開盤60s後才動作

我把2363跟2615的print截圖下來,這兩個條件應該都是成立的

所以2363 和 2615的漏單問題還是找不出原因嗎?

 

第二個問題 error code 1401,好像只要讀取資料筆數要設定成0筆就可以解決了

附加文件

XQ小幫手 發文於   2021/05/05

Hello 黑框,

 

ReadTicks 函數回傳的並不是開盤到現在的tick而是上次洗價到這次洗價間的tick。

所以會隨著使用者的洗價時間點不同導致有不同的結果。

您 "TimeDiff(tick_array[idx, 2], tick_array[2, 2], "S")>60,希望開盤60s後才動作" 這個條件中抓到的距離並不是開盤60秒,而是上次洗價到這次洗價之間的第二筆與現在這筆的時間差。

如果你要求的是 "開盤60s後才動作" 建議您可以修改成 TimeDiff(tick_array[idx, 2], 90000, "S")> 60。

黑框 發文於   2021/05/05

小幫手您好

有些股票開盤試搓會比較久,例如有時候到090200才開盤

所以希望第一筆tick出現後過了60s才開始動作,而不是卡絕對時間,這樣有甚麼建議嗎?

Show More Posts 發表回覆
Close