當沖自動交易做多,策略重啟後,部位超賣

  •   114 
  • 最後發表   米亞吉  3 天前
米亞吉 發文於   2025/06/09

教授,小編您好,

目前使用自動交易當沖做多,遇到以下問題:

策略是包含進場及出場,若部位是兩張以上(含),漲停時會賣出一半部位。若當日鎖漲停到收盤則留倉,若漲停打開則移動出場。

但若是遇到XQ程式閃退或是自動交易程式出現異常,導致必須重啟自動交易策略;當策略重新執行後,不會知道 win=1 在當日已經觸發過,就會再度賣出一半部位或是清空。要如何避免這情況發生? 謝謝

以下為出場程式碼,使用 var: intrabarpersist win(0) 紀錄漲停時賣出一半

if Close = GetField("漲停價", "D") and win=0 then begin { 漲停賣出 } 

   SetPosition(floor(position/2), addspread(close,-1), label:="漲停");  { 以漲停價-1檔賣出, 賣出一半以上部位 } 

   win=1;

end;

排序方式: 標準 | 最新
虎科大許教授 發文於   2025/06/09

重新啟動策略,變數都會恢復預設值,沒辦法避免。除非你準備B策略,當作專門針對這種情況的備案。

米亞吉 發文於   2025/06/10

謝謝教授回覆

另外,有遇到一個問題,當策略進場建立部位後,從log上看到有重複觸發,所以去查看了執行紀錄。發現可能的原因是: 因同步券商庫存停止商品,導致該商品重新啟動。

但並不是所有的商品觸發進場後都會發生,請問要如何避免?

虎科大許教授 發文於   2025/06/10

若你的部位都是同一個策略建立的,則策略部位勾選『與庫存同步』即可,三個核取方塊都不要打勾,特別是第三個『庫存異動時自動同步數值』,過去在重設部位時曾經出現問題。不知道這次16.01版本是否有改正。『庫存異動時自動同步數值』是在其他策略也建立部位時才需要使用。在這個功能還沒有修正之前,若多策略交易相同商品,建議先用filledAtBroker處理。

發表回覆
Close