求教-即時轉單改價的交易方式

  •   252 
  • 最後發表   XQYi  2024 六月 12
XQYi 發文於   2024/05/30

自動交易訊號condition1觸發價格,進行委託買進一張,委託後還沒成交前如果價格下跌則連續改降價買進,如果委託買進,兩秒鐘內價格上漲沒成交,則調高價格1檔買進,這樣的自動交易程式碼該如何寫?

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

程式邏輯如下:

(1)送出委託時記錄時間及價格。

(2)判斷是否成交,若沒成交,則

(3)比較即時價格與委託時的價格,若價格下跌(這裡要定義跌多少),則以更低價(這裡要定義價格)進行委託單改價。若價格上漲(這裡要定義漲多少),則判斷距離委託的時間是否超過2秒鐘,若超過,則以高於目前價格1檔進行委託單改價。

XQYi 發文於   2024/05/30

感謝教授,以下是否OK?

var: intrabarpersist SBT1(0) , intrabarpersist PT1(0),intrabarpersist PT2(0),intrabarpersist SentTime(0);

var: intrabarpersist hasOrdered(false);

 

if  position=0 and filled=0  and condition90 and currentTime > TM and  currentTime <=101500  

then begin 

if  condition1  and (trueAll(value31 > value31[1],2) or value7 > value7[1] ) 

and value7*1.0045 < getField("High","D") 

then

setposition(minList(position+2,2),GetField("收盤價","Tick"),label:="買1");//有庫存時,不進場加買,維持2張 

SBT1=Getfield("時間","Tick");

PT1=GetField("收盤價","Tick");

end;

//-------------?秒內尚未成交有更低的價格改低單

if position <> 0 and filled=0 and Getfield("時間","Tick")>=timeadd(SBT1,"S",0.5)

and GetField("收盤價","Tick") < pt1 then begin

pt2=GetField("收盤價","Tick");

setposition(minList(position+2,2),PT2,label:="買1-0.5");//超過0.5秒尚未成交有更低的價格改低單 

end;

//-------------買不到追價

if position <> 0 and filled=0 and Getfield("時間","Tick")>=timeadd(SBT1,"S",2) then //已經委託尚未成交經過2秒

setposition(minList(position+2,2),addSpread(GetField("收盤價","Tick"),1),label:="買1-2B");//2秒內如果買不到則調高追價   

虎科大許教授 發文於   2024/05/31

你使用0.5秒,亦即500毫秒,使用TimeAdd時應該用MS,亦即timeadd(SBT1,"MS",500)。

XQYi 發文於   2024/05/31

感謝教授指導!

教授何時有開課?

虎科大許教授 發文於   2024/05/31

預計八月份。

  • 按讚來自於
  • xqyi0502
XQYi 發文於   2024/05/31

如圖交易情況,有些看不懂交易為何會這樣?

第一次觸發44.55,

第二次0.5秒內未成交有更低價格調降44.4

第三次觸發0.5秒內未成交,應調降為何價格增加了?

(2、3次的觸發,都沒有刪單改委託價 ?)

結果第四次成交是在第一次觸發的指令,但價格不是原來的44.55

 

虎科大許教授 發文於   2024/05/31

若改價之後,需要再改價,則改價時,重新紀錄時間。另外,你必須留意,還有一個2秒鐘用加一檔的方式改價,要考慮兩種改價方式會不會衝突。

XQYi 發文於   2024/06/01

實際交易情況是有的如預期有的不如預期,上述就是不如預期,不知道原因出在何處?

虎科大許教授 發文於   2024/06/01

XQ的委託單,任何時候在外頭最多只能有一張。有多張委託單的情況下,後面的委託單會對前面還沒有成交的委託單進行刪單或改價。由於你同一秒鐘送出三張委託,其中包含最後兩張改價的委託單,在改價(先刪單,再重送委託)之前,第一張就成交了。送出委託的時間差只有0.5秒鐘,容易出現這種問題。等同於改價沒有發揮功效。

XQYi 發文於   2024/06/01

感謝教授指導

如果原因是速度追不上邏輯,也就只能改邏輯了!

有建議的修正嗎?

顯示更多回應 發表回覆
Close