關於自動交易

  •   321 
  • 最後發表   tradeNew  2022 十一月 16
tradeNew 發文於   2022/11/14

小幫手您好:

以下問題都是看現股指標,買個股期貨的環境下:

運用的函式庫為GetSymbolField的「資料欄位」,執行頻率1分K,逐筆洗價格

電腦環境:電腦配備i5-12400,32RAM,windows10。 

 

1.請問如何判斷 同一筆交易(同一單)累積交易量 超過1000張呢?

目前只知道這個函式 GetSymbolField("Underlying", "成交量", "Tick");

 

2.關於自動交易期貨買賣,如果用目前「市價」,買入5張股期

假設成交3張,十秒後沒成交的2張取消,該怎麼判斷呢?

或者在執行頻率1分K,逐筆洗價的情況下因為用市價了,沒有成交的部分就取消(考慮到漲停買不到)

 

3.我設定頻率一分鐘,逐筆洗價,一次跑190隻個股期貨,但我看LOG有些個股期根本不會執行(確定真的股票市場有進行買賣,我print出close成交價格,log來看都久久才跑出來一次.. 甚至過了好幾分鐘)

是因為我用GetSymbolField 這個函式的關係嗎? GetSymbolField 在股票市場快市的時他更新速率多少呢? 

還是一次跑太多隻個股期嗎?

 

4.剛剛我又用以下腳本去測試,測試2014中鴻,買期貨,看現貨指標,發現速度真的跟不太上,有時候落1~2分鐘

 

4.以下腳本為  看現股指標,做期貨,頻率1分鐘,逐筆洗價,超過2%就立刻購買(個股期) 跌破1%立刻賣出(個股期)

但目前如果一次跑全部的個股期貨,會發生接收tick過慢的情況(試過只用單一個股期也是一樣),導致假設現股剛剛突破2%,機器不會自動去買,可能過個幾分鐘機器才會跑這支股票有突破,再進行買進。請問自動交易是可以做到tick trade的嗎?

 

// 購買價格

// 購買價格

value1 = GetSymbolField("Underlying", "參考價", "D")*1.02;

 

// 目前成交價格

value2 =  GetSymbolField("Underlying", "收盤價", "Tick");

 

// 單量 成交量 Tick

value3 = GetSymbolField("Underlying", "成交量", "Tick");

 

// 購買幾張 以50萬計算 >250 就0張

value4 = 0;

 

if(value2 <=1000)  then begin

value4 =  Round(500/(value2 * 2), 0);

end;

 

print("漲停價格",value1,"目前成交價格", value2,"成交量", value3,"購買幾張", value4);

 

 

// 購買價格 = 成交價格  && 5 買單 && 市價交易 下一秒取消

if value1  < value2 and value3 >= 10 and Position = 0 then begin

 

SetPosition(value4,market);

 

print("條件到購買");

 

end;

 

if position > 0 and value2 < value1*0.99 then begin 

 

SetPosition(0,market);

 

print("跌破1% 自動賣出");

 

end;

 

 

if position > 0 then begin 

 

SetPosition(filled,market);

 

print("取消掛單");

 

end;

 

XQ小幫手 發文於   2022/11/16

 Hello tradeNew,

 

1.小幫手不太確定您說的 同一筆交易(同一單)累積交易量 是什麼意思。

是指一筆委託數量貫穿多個價格嗎?

如果是的話可以參考 readticks 函數。

https://xshelp.xq.com.tw/XSHelp/?HelpName=ReadTicks&group=PRICERELFUNC

需注意 readticks 取得的是執行商品的資訊。

 

2.您可以用 intrabarpersist 的變數紀錄下委託單的時間,搭配 timeadd 函數計算要取消單的時間,若時間到且尚未全都成交的話就刪單。

https://xshelp.xq.com.tw/XSHelp/?HelpName=TimeAdd&group=TIMEFUNC

需注意XS目前運作的方式是有洗價才會運算,若商品超過10秒都沒有交易的話,那上面的條件也不會在剛過10秒的時候就觸發。

 

3.如同小幫手上面所說,要執行商品有洗價才會運算。

若您掛在期貨商品上,然後用 GetSymbolField 去取得其他商品資訊,當期貨商品沒有交易時,就算其他商品有交易XS也不會運算。

 

4.同上,XS腳本運算是看執行商品。

若期貨商品沒有成交的話,XS腳本就不會運算。

 

相關人員有在規劃定時洗價功能,屆時就能讓XS腳本在固定時間內洗價運算,不受到執行商品是否有交易的限制。

發表回覆
Close