
1. 摘要
當我們完成自動交易腳本的撰寫之後,接下來就是將此腳本轉換成自動交易的策略。這篇文章我們將會引導各位如何進行細部設定。 如果想溫習建立交易腳本,也可以參考《 XS 編輯器:交易腳本撰寫教學》。2. 自動交易策略
交易腳本編譯完畢之後,我們就可以建立一個「自動交易策略」來執行這個腳本。 建立自動交易策略的方式有兩種。 ▼第一種方式是直接在XS編輯器內,選擇交易腳本,然後按右鍵「加到自動交易」。

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

2.2. 執行頻率及逐筆洗價
選擇策略執行時所讀取的商品資料頻率,有幾個選項可供選擇: 1.每一根K棒結束後執行一次。只要不勾選逐筆洗價即可。 2.價格有異動時就執行一次。勾選逐筆洗價即可 3.自動洗價。 ▼在勾選自動洗價後,就會跳出設定自動洗價運作的時段以及自動洗價間隔的部分。每次洗價間隔的部分一樣是最短為 1 秒,最長到 60 秒。
2.3. 資料讀取筆數
▼在資料讀取筆數依據策略所需K棒數來自訂。
3. 交易帳號
每一個交易策略可以指定這個策略執行時要對應的交易帳號,目前共提供三種設定的方式 分別是:- 不設定交易帳號
- 設定證券交易帳號
- 設定期貨交易帳號

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 |
委買量 | 買進 | 賣出 | 委賣量 |
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 |
委買量 | 買進 | 賣出 | 委賣量 |
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 |
時間 | 成交價 | 單量 | 成交狀態 |
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張) |
- 目前僅支援證券帳號、期貨帳號。複委託帳號以及群組帳號尚未支援
- 目前僅支援可以透過XQ全球贏家手機版交易的券商,以確保自動交易執行時可以透過手機做完整的監控以及管理
3.3. 下單設定
商品限制 如果策略指定證券交易帳號的話,則在啟動策略時系統會檢查策略的執行商品,如果其中有非證券類型的商品的話,則這些商品會被略過不予執行。 ▼XQ自動交易中心帳號設定
4. 交易帳號庫存部位整合
策略指定交易帳號之後,可以把交易帳號的庫存跟策略的部位做進一步的整合。 目前系統提供了以下四種設定及三種庫存同步方式:- 不設定
- 延續前次執行
- 自動執行有部位商品
- 與庫存同步
- 自動執行有部位的商品
- 庫存新增時自動加入執行
- 庫存異動時自動同步數值
- 依腳本計算

4.1. 選擇:不設定
在這種模式底下,策略啟動時, 初始部位是空的。4.2. 選擇:延續前次執行
若執行商品的來源為「選股中心」或者 「指數成分股」這類每天選出會異動的選股,則適合使用這個模式。 下方有個「自動執行有部位的商品」選項打勾,則庫存中的商品會被加入到執行清單中執行。4.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. 進出場設定
設定策略預設的買進價格以及賣出價格。腳本內的交易指令可以指定委託的價格,此時系統就會依照指定價格送單。如果交易指令內不指定價格的話,則會使用策略的預設買進/賣出價格來傳送委託。 使用者也可以決定萬一行情網路發生連線問題時,策略的執行會自動停止,還是等到行情連線恢復時繼續執行。 ▼策略執行期間如果遇到報價網路斷線的情形時,使用者可以透過策略設定來決定處理的方式