自動交易中心:建立自動交易策略教學

自動交易中心:建立自動交易策略教學

2024-12-10 12:48:54
  自動交易中心:建立自動交易策略教學

1. 摘要

當我們完成自動交易腳本的撰寫之後,接下來就是將此腳本轉換成自動交易的策略。這篇文章我們將會引導各位如何進行細部設定。 如果想溫習建立交易腳本,也可以參考《 XS 編輯器:交易腳本撰寫教學》。  

2. 自動交易策略

交易腳本編譯完畢之後,我們就可以建立一個「自動交易策略」來執行這個腳本。 建立自動交易策略的方式有兩種。 ▼第一種方式是直接在XS編輯器內,選擇交易腳本,然後按右鍵「加到自動交易」。 第一種方式是直接在XS編輯器內,選擇交易腳本,然後按右鍵「加到自動交易」。 ▼第二種方式則是開啟「自動交易中心」,然後點選「新增」按鈕,或是從右鍵選單內選擇「新增自動交易」 第二種方式則是開啟「自動交易中心」,然後點選「新增」按鈕,或是從右鍵選單內選擇「新增自動交易」 要建立一個自動交易策略時,必須填入以下設定:

2.1. 執行商品

決定策略要執行哪些商品。 提供的選項包含:
  • 指定商品:可以選擇一個或是多個商品
  • 指定組合:可以選擇一個分類清單(例如我的某組自選股)
  • 指定選股法:可以選擇一個XS選股法,執行前會先執行這個選股法,符合選股法的商品就會執行這個腳本
  • 指定庫存:可以選擇帳號的庫存
  • 指定檔案:可以選擇從外部檔案匯入欲執行的商品
▼執行商品共有5個選項可以選擇 執行商品共有5個選項可以選擇

2.2. 執行頻率及逐筆洗價

選擇策略執行時所讀取的商品資料頻率,有幾個選項可供選擇: 1.每一根K棒結束後執行一次。只要不勾選逐筆洗價即可。 2.價格有異動時就執行一次。勾選逐筆洗價即可 3.自動洗價。 在勾選自動洗價後,就會跳出設定自動洗價運作的時段以及自動洗價間隔的部分。每次洗價間隔的部分一樣是最短為 1 秒,最長到 60 秒。 在勾選自動洗價後,就會跳出設定自動洗價運作的時段以及自動洗價間隔的部分。每次洗價間隔的部分一樣是最短為 1 秒,最長到 60 秒。 洗價的三種選項,會有 4 種運作方式,說明如下:  逐筆洗價和自動洗價皆不勾選 在這種情況下,策略的運作方式會和原本的非逐筆洗價相同。 只有在執行商品 K 棒結束後的第一次洗價,策略才會去運算已結束的那根 K 棒。  只勾選逐筆洗價 在這種情況下,策略的運作方式會和原本的逐筆洗價相同。 策略會在每次商品洗價時運算,每次運算間隔最短會相隔 0.125 秒。  只勾選自動洗價 在這種情況下,策略會在設定的間隔秒數後自動洗價運算。 不會受到商品本身是否發生成交 Tick,或是 K 棒是否結束而影響。 為了確保每根 K 棒運算結果正常,換 Bar 後的第一次自動洗價會重洗已結束 K 棒,此次洗價不會觸發警示或交易。  逐筆洗價和自動洗價皆勾選 這模式是結合「逐筆洗價」和「自動洗價」的功能。 策略除了在執行商品有新成交 Tick 進來的時候運算 (逐筆洗價規則),若在自動洗價設定的間隔秒數間都沒有 Tick 進來時,策略也會取用最後一次成交的資料自動洗價並運算。  

2.3. 資料讀取筆數

▼在資料讀取筆數依據策略所需K棒數來自訂。 在資料讀取筆數依據策略所需K棒數來自訂。

3. 交易帳號

每一個交易策略可以指定這個策略執行時要對應的交易帳號,目前共提供三種設定的方式 分別是:
  • 不設定交易帳號
  • 設定證券交易帳號
  • 設定期貨交易帳號
▼XQ自動交易中心帳號設定類型有三種 XQ自動交易中心帳號設定類型有三種

3.1. 不設定交易帳號

若策略不設定交易帳號,還是可以正常執行。在策略跑完資料讀取區間,以及策略部位計算區間之後,當策略收到即時行情洗價時,如果腳本呼叫了任何交易指令的話,則系統會以當時的即時行情來判斷這個交易指令是否會成交。以下我們用範例來說明判斷成交的邏輯。 假設策略目前的部位是0,然後在09:01:00秒時呼叫了SetPosition(10, 100.0),代表策略會送出一筆買進10張的委託,委託價格是100.0。 此時系統會檢視這個商品五檔委託簿的委賣資料(依照當時交易所揭示的行情),如果有任何委賣價格 <= 100.0,則依照當時的委賣數量依序成交(從最低的委賣價開始成交)。 範例#1: 產生一筆成交,價格=100.0,成交量=4,還有6張尚未成交
委買量 買進 賣出 委賣量
5 99.5 100.0 4
4 99.0 100.5 10
3 98.5 101.0 15
2 98.0 101.5 20
10 97.5 102.0 21
範例#2: 產生兩筆成交,第一筆成交價=99.5,成交量=7,第二筆成交價=100.0,成交量=3,全部成交
委買量 買進 賣出 委賣量
6 99.0 99.5 7
5 98.5 100.0 4
4 98.0 100.5 10
3 97.5 101.0 15
2 97.0 101.5 20
範例#3: 沒有任何成交,還有10張等待成交
委買量 買進 賣出 委賣量
6 100.0 100.5 4
5 99.5 101.0 10
4 99.0 101.5 15
3 98.5 102.0 20
2 98.0 102.5 21
比對完五檔委託簿的資料之後,如果還有尚未成交部位的話,則依照之後收到的商品成交明細來判斷:如果收到了任何成交明細的成交價格 <= 委託價格的話,則產生一筆成交,成交量為Min(剩餘委託量,這一筆成交明細的單量)。 接續上面的範例#3,此時還有一筆買進委託,委託價格=100.0,委託數量=10等待成交。 以下是收到成交明細後的成交狀態範例:
時間 成交價 單量 成交狀態
09:01:10 101.0 8 不成交
09:01:20 100.0 2 產生一筆成交成交價=100.0, 成交量=2 (剩餘8張)
09:01:30 99.5 3 產生一筆成交成交價=99.5, 成交量=3 (剩餘5張)
09:01:40 99.5 10 產生一筆成交成交價=99.5, 成交量=5 (全部成交,剩餘0張)
如果交易指令是賣出的話,則是比對五檔的委買資料,處理的邏輯與買進類似。  3.2. 設定券商帳號 如果使用者希望執行交易指令時會送出真實的委託單,可以在策略設定內選擇想要交易的帳號。 首先請先確定策略想要交易的帳號已經先透過XQ的交易帳號設定完成帳號登入的動作,而且也完成了相關的憑證設定。 接著就可以從策略設定畫面內選擇這個帳號,完成連結的動作。 自動交易所支援的券商範圍有以下的限制:
  • 目前僅支援證券帳號、期貨帳號。複委託帳號以及群組帳號尚未支援
  • 目前僅支援可以透過XQ全球贏家手機版交易的券商,以確保自動交易執行時可以透過手機做完整的監控以及管理
目前支援自動交易的券商清單如連結介紹:合作券商  XQ的交易帳號設定,也可以參考《 功能介紹:什麼是交易帳號設定? 》。

3.3. 下單設定

商品限制 如果策略指定證券交易帳號的話,則在啟動策略時系統會檢查策略的執行商品,如果其中有非證券類型的商品的話,則這些商品會被略過不予執行。   ▼XQ自動交易中心帳號設定 XQ自動交易中心帳號設定 選擇:現股交易/信用交易 選擇現股交易:系統會依照這個帳號的現股庫存數量,以及買賣方向來決定委託單的內容。買進時會送出現股買進,賣出時會送出現股賣出或是現股先賣(當沖)。 選擇信用交易:系統會依照這個帳號的融資/融券庫存數量,以及買賣方向來決定委託單的內容。買進時可能會送出買進融券(回補)或是買進融資委託,賣出時可能會送出賣出融券或是賣出融資的委託。   選擇:ROD/IOC(決定委託單的委託條件) 決定委託單送出的類型是ROD或是IOC。 由於IOC委託會有不成交則被自動取消的限制,所以當系統發現IOC委託被取消時,會自動修正策略的Position數值 舉例:目前Position = 0,接下來執行了SetPosition(1),策略選擇要用IOC來下單。 當策略執行到SetPosition(1),系統會送出一筆買進1張的IOC委託單,同時下一次洗價時Position會被改成1。 如果這一筆IOC委託成交:下一次洗價時Filled會變成1。 如果這一筆IOC委託沒有成交:由於交易所會自動取消這一筆委託單,所以系統在收到取消通知之後,會自動把Position改成0。會自動調整Position是因為目前已經沒有有效的委託單,所以這個策略的Filled永遠不會變成1,也就會造成Position跟Filled永遠不會同步的情形。 請注意:目前系統尚未支援FOK的委託條件。   單邊的交易成本(%) 系統會依照交易成本的設定來調整執行時所顯示的損益數值。使用者可以依照所選擇券商的交易費用填入對應的交易成本數值。 舉例來說,假設證券手續費折數為 3 折,手續費率為 0.1425 %;交易稅率為 0.3 %,則單邊交易費用約為 0.19 %=((0.1425%*0.3*2)+0.3%)/2  交易回報等待時間 此項設定為當系統送出委託時,等待券商的委託回報時間有多長。若在設定的時間內都沒有收到券商端回覆的委託成功/失敗的回報,系統將會中斷此商品的自動交易運作。 舉例來說,如果將交易回報等待時間設為30秒,且系統在 12:30:00 時產生一筆買進委託送至券商的話,若自動交易中心在 12:30:30 以前都沒有收到券商回報此筆委託成功或是失敗的話,系統將會強制終止該商品的自動交易運作。   

4. 交易帳號庫存部位整合

策略指定交易帳號之後,可以把交易帳號的庫存跟策略的部位做進一步的整合。 目前系統提供了以下四種設定及三種庫存同步方式:
  1. 不設定
  2. 延續前次執行
    1. 自動執行有部位商品
  3. 與庫存同步
    1. 自動執行有部位的商品
    2. 庫存新增時自動加入執行
    3. 庫存異動時自動同步數值
  4. 依腳本計算
▼交易帳號庫存部位四種設定方式 交易帳號庫存部位四種設定方式

4.1. 選擇:不設定

在這種模式底下,策略啟動時, 初始部位是空的。

 4.2. 選擇:延續前次執行

若執行商品的來源為「選股中心」或者 「指數成分股」這類每天選出會異動的選股,則適合使用這個模式。 下方有個「自動執行有部位的商品」選項打勾,則庫存中的商品會被加入到執行清單中執行。

 4.3. 選擇「與庫存同步」

策略在執行完歷史資料區間之後,系統會依照當時帳號的庫存,自動調整策略的部位,以及策略的未平倉成本。適合自動交易策略啟動下還需要手單加碼、減碼、平倉部位的操作 在「與庫存同步」設定下有三個與庫存同步的選項可供打勾,分別為:
  1. 「自動執行有部位的商品」:將庫存中的商品都納入執行商品清單中進行交易。
  2. 「庫存新增時自動加入執行」:若盤中庫存有新商品進場,則該商品也會被納入執行商品清單中進行交易。
  3. 「庫存異動時自動同步數值」:勾選時, 如果使用者透過其他交易管道異動執行商品的部位時, 策略會自動同步新的數量。
「與庫存同步」設定下有三個與庫存同步的選項可供打勾 「與庫存同步」設定下有三個與庫存同步的選項可供打勾

4.4. 選擇:由腳本計算

是比較進階的功能,在這種模式底下,策略的部位可能是依照腳本歷史資料計算而來的,與交易帳號的實際庫存沒有任何關係。 因交易帳號庫存部位整合涉及很多觀念上的說明,詳細說明請參考「自動交易中心:庫存整合概念教學」。

5. 交易安控

自動交易策略提供了以下的安控設定,使用者可以依照需求選擇需要開啟的項目: ▼自動交易策略提供了以下的安控設定 自動交易策略提供了以下的安控設定

5.1. 單一商品:每日進場金額上限

這個選項只有在指定了證券交易帳號時才可以啟用。主要用途是確保策略不會進行過多的買賣動作 啟用了這個安控之後,每次策略要執行交易指令之前,會依照目前這個交易指令所需傳送的委託數量/價格,估算所需的交易金額額度,如果這個商品先前累計額度加上這一筆交易金額超過指定額度的話,則不會執行這一筆交易指令。 委託成交時,系統會依照實際成交價格重新計算已經使用的額度,3.06.03/7.06.03 版本修改為「只計算買進部位」賣出平倉則不併入額度。 策略重新執行時,委託額度會從零開始重算。如果策略持續執行,每個交易日結束後委託額度也會歸零重新計算。 請注意:上述計算方式與券商計算額度的方式可能會有差異。  

5.2. 單一商品:最大部位限制

啟用這個選項之後,如果交易指令的目標部位的絕對值如果超過這個限制的話,則這個交易指令不會執行。 舉例來說,如果單一商品最大部位設定為1,SetPosition(1)可以執行,SetPosition(-1)可以執行,SetPosition(2)不會執行,SetPosition(-2)也不會執行。 使用這個選項來確保單一商品的最大部位可以符合預期。

 5.3. 單一商品:每日最多進場次數

所謂進場次數,指的是"策略的成交部位進入多方,或是空方的次數" 舉例來說,策略一開始部位是0,呼叫了SetPosition(1)之後,如果成交的話,進入多方,進場次數為1。之後策略呼叫了SetPosition(2),或是SetPosition(3),甚至是在SetPosition(3)之後又呼叫了SetPosition(2),只要策略的成交部位繼續維持在多方,進場次數都不會改變。 如果策略接下來呼叫了SetPosition(0),在這一筆賣出指令完全成交之後,多方的狀態已經結束,之後的SetPosition(1)就會算成另外一次進場了。 這個安控的設計目的也是用來避免過多的交易,例如不斷的買進/賣出。 如果進場次數已經到達上限,之後的交易指令就不會執行。 請注意:策略部位異動時如果沒有成交的話,並不會改變進場次數。  

5.4. 策略整體:每日進場金額上限

與單一商品每日交易金額上限一樣,這個選項只有在指定證券交易帳號時才可以啟用 策略整體的額度,就是這個策略內每個商品額度的加總。如果要執行某個交易指令之前發現這個交易指令所需額度加上目前已經使用的額度超過這個上限的話,則不會執行這個交易指令。 請注意:系統會累計這個策略當日每次執行時的交易金額,每個交易日結束,或是關閉XQ之後,都會重新歸零統計。 *3.6.3/7.6.3版本修改為「只計算買進部位」賣出平倉則不併入額度。  

5.5. 策略整體:最大部位限制

策略整體部位的計算方式是:每個執行商品的部位的絕對值的加總 如果某個商品要更改目標部位時發現新的部位加上策略內其他商品目前部位的加總超過最大部位限制的話,則這個交易指令不會執行。  

5.6. 策略整體:最多持有商品限制   

策略整體持有商品的計算方式:「統計策略內部位不是零的商品個數」。如果某個商品的交易指令會違背這個限制的話,則這個交易指令不會執行。 可以利用這個限制來"控制可以進場的商品個數"。例如執行10個商品,每個商品都進行最多1張的交易時,可以把這個限制設定成3,來保證至多同時只會持有三個商品。  

5.7. 進出場設定

設定策略預設的買進價格以及賣出價格。腳本內的交易指令可以指定委託的價格,此時系統就會依照指定價格送單。如果交易指令內不指定價格的話,則會使用策略的預設買進/賣出價格來傳送委託。 使用者也可以決定萬一行情網路發生連線問題時,策略的執行會自動停止,還是等到行情連線恢復時繼續執行。 策略執行期間如果遇到報價網路斷線的情形時,使用者可以透過策略設定來決定處理的方式 策略執行期間如果遇到報價網路斷線的情形時,使用者可以透過策略設定來決定處理的方式

6. 總結

透過以上建立自動交易策略的設定步驟,您可以輕鬆建立並自動執行您的交易策略,達成自動化操作目標。希望這份說明能幫助您快速上手XS自動交易中心,並有效應用於實際交易中! 以上就是自動交易中心:建立自動交易策略教學,我是 XQ 小編,我們下次見。