請問新版問題

  •   279 
  • 最後發表   pure4321  2021 四月 06
pure4321 發文於   2021/03/20

請問新版【交易策略】教程之問題,以下皆指日頻率,

A、若融資庫存昨日存在某股票1張,然後今日盤內融資再次買進相同股票1張,融資庫存成為2張,如果稍後突然反轉,Close<= FilledAvgPrice*0.95,則融資賣1張,融劵賣1張,也就是一次平倉,請問以上情境,介面如何設定?程式如何撰寫?

 

B、if GetField("開盤價", "D")> GetField("收盤價", "D")[1] then ret=1;也就是上期策略被觸發,如果本期續強,開盤大於上期,才用【本】期開盤價進場價,請問新版回測能否做到?

 

C、AddSpread函數加減幾檔後價格,若跟安控設定不同如圖,何者為準?

 

D、策略部位是否能用程式舉例?

 

E、舊版虛擬帳號是否能用?如何轉移?

 

F、GetField("買進特大單量")之內容是否錯誤?為何不是張數?

https://xshelp.xq.com.tw/XSHelp/?HelpName=%E8%B2%B7%E9%80%B2%E7%89%B9%E5%A4%A7%E5%96%AE%E9%87%8F&group=TVOLUME

排序方式: 標準 | 最新
XQ小幫手 發文於   2021/03/23

Hi pure4321,

Q1、若融資庫存昨日存在某股票1張,然後今日盤內融資再次買進相同股票1張,融資庫存成為2張,如果稍後突然反轉,Close<= FilledAvgPrice*0.95,則融資賣1張,融劵賣1張,也就是一次平倉,請問以上情境,介面如何設定?程式如何撰寫?

A1:待小幫手研究後再向您說明,謝謝。

也可以先用「自動交易中心-帳號設定」這邊設定為「資券」嘗試撰寫看看,如下圖,以上方向先提供給您參考。


 

Q2:if GetField("開盤價", "D")> GetField("收盤價", "D")[1] then ret=1;也就是上期策略被觸發,如果本期續強,開盤大於上期,才用【本】期開盤價進場價,請問新版回測能否做到?

A2:可以使用 Setposition 語法,在條件達成時,使用開盤價進場,例如以下範例表述語法,供您參考。

if GetField("開盤價", "D")> GetField("收盤價", "D")[1] then SetPosition(1, Open);


 

Q3:AddSpread函數加減幾檔後價格,若跟安控設定不同如圖,何者為準?

A3:與 SetPosition 語法有關,可以參考連結網頁說明,節錄如下

SetPosition函數的第一個參數是目標部位(Position),代表交易策略預期持有的部位。第二個參數是此次交易的委託價格,如果不傳的話則會使用策略的預設買進/賣出價格。

所以如果有使用到以下這樣的語法,就會以 Setposition 設定的第二個參數為準,詳細介紹可以參考 SetPosition 語法介紹。

SetPosition(Position+1, AddSpread(Close, 1));

Q4:策略部位是否能用程式舉例?

A4:可以參考「策略部位計算功能」此篇文章說明,有相關介紹,提供給您參考。


Q5:舊版虛擬帳號是否能用?如何轉移?

A5:可以搭配模擬交易帳號使用,有關交易帳號的介紹,可以參考「交易帳號」說明,有相關介紹,提供給您參考


Q6:GetField("買進特大單量")之內容是否錯誤?為何不是張數?

A6:感謝指正,以請相關人員勘誤中,待明日中午12點即修正,正確文字如下,謝謝:

買進特大單的成交量。單別定義請參考以下連結文章網址:http://www.xq.com.tw/台股逐筆功能行情端相關異動/

pure4321 發文於   2021/03/26

一些地方補充,麻煩您們

A1:待小幫手研究後,現在呢?

另外,FilledAvgPrice是否限定同日買進之未平倉成本?不同日呢?

 

A2:如果情境類似,改為更貼近實務操作,

期策略被觸發,下期續強,也就是下期開盤大於本期,才用【下期】開盤價進場價,

請問新版【回測】能否做到?

 

A3:http://www.xq.com.tw/lesson/xsat/bulid_own_xsat/

上方所述

腳本內的交易指令可以指定委託的價格,此時系統就會依照指定價格送單,如果交易指令內不指定價格的話,則會使用策略的預設買進/賣出價格來傳送委託。

請問,如果安控設定、交易指令不同,何者為準?

 

A6:單位仍然錯誤,為何不是張數?

 

XQ小幫手 發文於   2021/03/31

Hello pure4321,

 

A1:FilledAvgPrice並沒有限定同日,是包含所有的未平倉成本。

        另外Q1的部分附上自動交易中心匯出檔供您參考。

A2:這有兩種作法,一種是你在本期策略被觸發的時候買,然後在隔天的時候再加碼。

        另一種則是一次檢查前兩期,如果有發生您說的狀況時以本期開盤價進場,沒有的話就用前期的開盤價進場。

        畢竟現實裡沒辦法預測下期的開盤價是否會大於本期開盤價。

        第一種:

        if open[1] < open[0] then setposition((filled + 1), open);

        第二種:

        if open[2] < open[1] and open[1] < open then setposition(1, open) else if open[2] < open[1] and open[1] >= open then setpositon(1, open[1]);

 

A3:以腳本內的交易指令為最優先,接下來才是依照安控設定。

 

A6:感謝指正,以請相關人員勘誤中,待明日中午12點即修正。

附加文件

pure4321 發文於   2021/04/01

對不起此處只討論回測。

在回測介面能選擇【下期開盤價】下單,代表此價存在資料庫,只剩最新一期不存在【下期開盤價】,

只是多了一個判別,【下期開盤價】<=>【上期收盤價】,只要在回測介面多個選項罷了。為何做不到?

如果【下期開盤價】<=>【上期收盤價】*N%,則是更理想?

XQ小幫手 發文於   2021/04/06

Hello pure4321,

 

回測介面中選擇下期開盤價下單,但在腳本運算的時候其實並不知道下期開盤價為何。

腳本會在每個K棒/Tick結束的時候作運算(依據您的設定),此時腳本有的是這之前的資料,並不包含接下來的開盤價。

回測時因為都是歷史資料,雖然可以得知下期開盤價,但在實務運作時並不是這樣。

如果在回測時讓使用者運用的話,最後得出的回測結果將有可能會失真,而那是大部分使用者不願意看到的情況。

希望這樣的回答您能夠接受,謝謝。

發表回覆
Close