關於自動交易

  •   55 
  • 最後發表   tradeNew  2024 四月 16
tradeNew 發文於   2024/04/11

小編你好

 1.

關於自動交易,商品是台指期

如果我交易直接用setPosition(x,close+100) or  setPosition(x,Market) 範圍市價

這種極端的數值讓交易 100%會成交的話

那是否就不用判斷 Filled 這個參數呢?

因為我已經確定 100%成交了

 

 

2.環境設定 1分K,逐筆洗價

a.請問自動交易逐筆洗價跟下面這個有關嗎?

(系統參數→策略→逐筆洗價執行頻率是最快)

b.請問自動交易用觸價單,請問觸價後,從逐筆洗價到真實的交易約要多少時間呢?

目前用模擬的帳號指要千分之1毫秒 = 001毫秒 ,即可 但實際上應該不可能那麼樂觀

 

目前電腦設備i5-12400 RAM = 32g

 

排序方式: 標準 | 最新
XS小編 發文於   2024/04/15

Hello tradeNew,

 

1.您可以參考 自動交易語法介紹 裡面的說明。

小編會建議使用 filled 是為了穩定保險,若您很確定一定會成交,那麼不設當然也可以。

 

2a.是的,在最快的情況下會是 0.125 秒運算1次策略。

 

2b.自動交易大概會經過洗價 => 策略運算 => 下出委託 => 收到伺服器回報 等幾個順序。

除了網路連線外,前面三個步驟是會受到本機的cpu運算影響,最後一個步驟則是券商伺服器的影響。

小編無法確定透過券商伺服器下單後,要多久才能夠收到委託成功的回報。

tradeNew 發文於   2024/04/15

小編你好

在最快的情況下會是 0.125 秒運算1次策略

1.例如像台指期有時候,逐筆洗價,但有時候在快市的時候 -他在0.125秒內 可能會打很多比 那此時腳本是如何運算的呢?

假設在0.125秒內 成交了10筆成交單,

那我逐筆洗價用print(close),會每一筆最腳本計算, 還是說會同時間print(close),10次呢?

想請問腳本用如何方式呈現這0.125秒內發生的交易 謝謝

 

 2.另外如果有送ROD的單,若幾秒內沒有成交,如何讓它取消呢?

 

3.getField("收盤價","Tick")及其[1]、[2]等等逐一抓每筆價格。 如何使用迴圈一筆筆跑出來呢?

虎科大許教授 發文於   2024/04/15

一段時間內,不論成交幾筆,只要洗到價,print(close)就會顯示即時成交價。當然,快市時,會漏接Tick,漏接的Tick就print不出來。若想特定期間所有Tick都不漏接,需要跑迴圈,用getField("收盤價","Tick")及其[1]、[2]等等逐一抓每筆價格。

XS小編 發文於   2024/04/16

Hello tradeNew,

 

1. 在快市的情況下,腳本只會運算最新的那一筆Tick 或是 有特殊意義的Tick (ex. OHLC)。

其餘的Tick則會跳過。

要取得每筆Tick的話可以參考 ReadTicks 函數。

 

2.您可以用變數紀錄條件成立下單的時間,然後判斷經過指定的時間後尚未成交的話就用 CancelAllOrders 來刪除委託。

舉例來說:

var: intrabarpersist _time(0);

if position = 0 and filled = 0 and 進場條件 then begin

    setposition(1, open[1]);

    _time = currenttime;    //保存下單的時間

    end;

 

if currenttime > timeadd(_time, "S", 30) and position <> filled then begin    //經過30秒且尚未成交 (部位庫存不相等)

    CancelAllOrders();

    _time = 0;

    end;

 

3. 可以參考 ReadTicks 函數。

 

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

發表回覆
Close