成交後馬上掛委買

  •   216 
  • 最後發表   阿杜  2024 四月 18
阿杜 發文於   2024/04/17

請問我策略A符合條件,委賣-2,當成交後馬上掛委買單,

if position=0 and filled=0 and A then setposition(-2, CloseD(1)*1.06);

end;

if filled<0  then setposition(0, CloseD(1)*1.02);

end;

問題:

1.都成交這個程式沒問題

2.委賣沒成交或剩1張,想在10點以前刪除沒成交的委賣

3.因為委賣成交馬上掛委買單,可能不會成交委買單,須掛單到13:00,若還是沒成交就用市價買回

以上不知如何繼續增加程式撰寫,請協助,謝謝

 

 

 

排序方式: 標準 | 最新
虎科大許教授 發文於   2024/04/17

當放空2張,都沒成交,則10點刪單可用SetPosition(filled)或CancelAllOrders函數刪單。

若部份成交,你的程式就有問題,因為任何時候,XQ只能有一張委託在外頭,你還有空一張的委託在外,但filled已經為-1,會送出setposition(0, CloseD(1)*1.02),結果會刪除放空的委託單並回補一張平倉。若回補買進價格夠好,會將剛放空的那一張回補。若回補買進價格不夠好,可等到1點再改價買回,例如用市價回補SetPosition(0,market)。

XS小編 發文於   2024/04/17

Hello 阿杜,

 

小編補充,如同 虎科大許教授 所回覆的,同一時間自動交易策略只會執行一個交易指令。

當有多個交易指令同時符合時,只會執行腳本第一個運算到的。

故若出場的委託未成交的話,if filled<0  then setposition(0, CloseD(1)*1.02); 這個指令將會一直是 True,導致這行以後的交易指令不會執行。

建議您將其改成 if filled<0 and position < 0 then setposition(0, CloseD(1)*1.02); 這樣才不會影響其他交易指令。

 

您可以用 position 和 filled 來判斷委託是否有成交,當 position <> filled 的時候就代表委託還存在。

所以13:00 以後就用市價平倉就會是 if currenttime > 130000 and position <> filled and filled <> 0 then setposition(0, market);

 

感謝 虎科大許教授 的熱心回覆。

阿杜 發文於   2024/04/17

 

請問這樣可以嗎? 感謝!!

if Position = 0 and Filled = 0 and currenttime < 100000 then begin 

if condition1 Then begin       

setposition(-2,closeD(1)*1.06); 

end;      

end;         

 

if Position = -2 and Filled = -1 then begin

setposition(-1,FilledAvgPrice*0.96);

end;

 

if Position = -2 and Filled = -2 then begin

setposition(0,FilledAvgPrice*0.96);

end;

 

if C = getField("漲停價", "D") and Filled <> Position and Filled <> 0 then begin

setposition(0,market);     

end else 

if condition10 and Filled <> Position and Filled <> 0 then begin

setposition(0,market);

end;

XS小編 發文於   2024/04/18

Hello 阿杜,

 

 

if Position = -2 and Filled = -1 then begin

    setposition(-1,FilledAvgPrice*0.96);

    end;

 

需注意這段只會將尚未成交的一張委託給取消,而當部位與庫存為放空1張時沒有出場的邏輯。

Filled <> Position and Filled <> 0 在 position 與 filled 為 -1 的時候不會符合。

 

建議您可以使用回測或模擬帳號實際執行搭配 print 印出部位庫存作確認,會比較容易理解運作的狀況。

發表回覆
Close