逐筆洗價造成重覆下單

  •   223 
  • 最後發表   無情卻慈悲  2022 十月 25
無情卻慈悲 發文於   2022/10/07

你好,

我腳本寫的下單,一次只下一筆,且安控也有設定,但部位卻有3,且是在同一時間連續下單造成的,

更奇的是,在歷史委託與成交記錄中卻只有一筆,請看我看一下。

log檔 : 

https://drive.google.com/file/d/1lXFhixqUuxvtg0vq_3K0fVBiy-t30Ycu/view?usp=sharing

 

 

 

排序方式: 標準 | 最新
XQ小幫手 發文於   2022/10/11

Hello 無情卻慈悲,

 

關於部位庫存的部分,小幫手會請相關人員確認。

但您的最大部位限制設定為1只代表同一時間最多只能有1張庫存,並不會限制交易數量。

所以您的執行紀錄裡賣出成交後接了一個買進委託成交,讓庫存變回0,接著才繼續賣出成交。

小幫手建議您在所有的進出場條件裡面,加上同時用 position 和 filled 來作限制,如果只用position的話會因為 position 變動而持續進出場 (不論是否有成交)。

無情卻慈悲 發文於   2022/10/11

你好,

兩個回問:

1、

在逐筆洗價中,當訊號發生時若只要下一次就好,你說要加上filled判斷,

是這樣寫嗎?

if     position <= 0  and filled <= 0  .....

2、

如果只用position的話會因為 position 變動而持續進出場 (不論是否有成交) →

可是如果我以市價單出去,positon應會立即變成1,不是嗎?用市價單也會造成我上述的問題嗎?

 

XQ小幫手 發文於   2022/10/12

Hello 無情卻慈悲,

 

1. 如果您是空方要出場的話,小幫手會寫 if position < 0 and filled < 0。

如果您是空手要進場的話,會寫 if position = 0 and filled = 0。

小於等於0會讓空方出場與空手進場的狀況重疊。

filled 會比 position 穩健的原因在於,position 是會隨著腳本變動,但 filled 則是要實際成交後才變動。

所以較簡單的作法是使用 filled 來控管就好,至於 position 的部分則是避免使用會變動的價格當限價單時因為洗價而一直改單。

 

 

2. 在冷門商品上,市價單不一定會馬上成交 (如果沒有對手方的話)。

另外,成交回報也有可能因為各種因素導致沒有在下次洗價前收到。

所以還是建議您多做一層保險。

無情卻慈悲 發文於   2022/10/12

你好,

如果您是空手要進場的話,會寫 if position = 0 and filled = 0。

→ 因我有時候是會「多空互換」,所以若空方要進場的話可能當下正值多單有部位,所以空單我一定得寫成  if position >= 0 and filled >= 0 ,

那這樣我要怎麼避免呢?

XQ小幫手 發文於   2022/10/13

Hello 無情卻慈悲,

 

這種狀況的話,您是可以這樣寫沒錯,但要注意當position和filled同時等於0的時候兩邊條件若發生同時符合的狀況。

另外,如果您有其他的出場方式 (ex. 停損停利),其條件也要用 filled 來控管。

這樣策略在多方或空方時可能同時觸發停損/停利和反手的狀況,此時的先後順序也要安排。

由於 setposition 會執行最先符合條件的指令,所以可以將您希望優先執行的交易邏輯放在前方。

XQ小幫手 發文於   2022/10/25

Hello 無情卻慈悲,

 

關於庫存的部分,相關人員表示應該是 10/07 日盤成交的部分,要等到夜盤交易完畢 (10/08 05:00) 後轉檔完成才會顯示出來。

在還沒轉檔完成前,您應該可以在當日成交中確認。

發表回覆
Close