使用自動交易,為什麼有部分當沖賣庫存沒產生回補交易指令

  •   172 
  • 最後發表   wang1990  2025 十月 29
wang1990 發文於   2025/10/22

請教,要將當沖放空的股票,在收盤前全部回補,

//------------------

If  MKP=-1 and Filled<0  then begin   If time>=132000 then begin     MKP=0; SetPosition(0, market,label:="收平");     End; //------------------(設定為逐筆洗價+自動洗價) 但是為什麼有部分當沖個股沒生成回補交易指令 而到收盤還是庫存(3016 -7張)

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

3016在132000之後沒有補K的問題,照理說應該會回補。請先檢查MKP在回補當下是否等於-1,且看看執行記錄裡面是否有送出委託。

wang1990 發文於   2025/10/23

時間都過了133000,3016實際部位是-7,MKP當然還是-1,

怪的是為什麼沒生成回補交易指令,想不透原因

 

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

沒有補K的情況下,沒有送出委託,代表MKP並非等於-1。變數MKP是否用intrabarpersist宣告?

我建議這邊用Position<0取代MKP=-1,可避免逐筆洗價因變數沒有用intrabarpersist宣告而造成邏輯錯誤。

wang1990 發文於   2025/10/23

感謝教授指點

我試試看

wang1990 發文於   2025/10/23

我想也許條件改為

>>   If  Filled<0  then begin .....

可解決

(不須要MKP=-1)

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

你的情況只用filled控制是不夠的,實戰時會一直重複送出無效指令。應該用if position<0 and filled<0 then ...控制。

  • 按讚來自於
  • wang1990
XS小編 發文於   2025/10/29

Hello wang1990,

 

小編補充,關於用 position 和 filled 控制交易指令的部分,可以參考 自動交易語法介紹 這篇文章。

裡面有提到如何使用以及只使用部分的差別。

發表回覆
Close