1. XS自動交易是什麼?
XS自動交易的主要功能,是讓我們可以設定欲交易的商品以及券商帳號,然後透過編寫腳本邏輯,來自動進行買進、賣出的動作。透過交易相關的語法,使用者可以控制委託的買賣方向、委託數量、委託價格,也可以進一步的取得已經成交的數量及價格等完整的成交資訊,也就是說透過XS自動交易,使用者可以完成一個全自動化的交易流程。
要設定XS自動交易時,我們也必須把交易的邏輯寫在一個交易腳本內,這個動作可以透過XScript編輯器來完成。
( 更多 XScript 編輯器教學請參考《 功能介紹:XScript編輯器? 》 )
設計好交易腳本之後,接下來我們可以進行回測。在回測的過程中,XS自動交易系統會以歷史資料來執行腳本,同時依照腳本內的指令進行交易的動作。這些交易的動作並不會送出委託單,而是會藉由歷史資料來判斷這些交易是否會成交,如果會的話成交價格以及成交數量又會是什麼。最後,透過這些成交的資料,回測系統可以告訴我們這個腳本的勝率、賺賠、報酬率等資訊。
如果接下來我們想要開始執行自動交易時,我們就需要設定這個自動交易執行時的相關參數,例如希望執行哪些商品,希望用什麼資料頻率來執行,希望用那個交易帳號來下單等。這一個動作則是透過「自動交易中心」這一個介面來做設定。每一個「自動交易策略」內可以指定要執行的交易腳本、商品、頻率、交易帳號等。一旦啟動「自動交易策略」,系統就會依照商品的資料來進行洗價以及交易的動作。
2. 語法介紹:什麼是交易腳本
在交易腳本內,核心概念是「Position」(部位),即腳本預期持有的目標部位。Position用來控制商品的買賣,數值可以為正(持有多單)、0(空倉)或負(持有空單)。調整Position時,XS系統會自動依據指令送出委託單,且當委託成交後,部位的數量會與Position數值一致。
2.1. SetPosition語法說明
XS自動交易提供了多種「交易語法」來調整Position,其中常用的「SetPosition」語法如下:
- SetPosition(目標部位):設定新的部位目標數量。
- SetPosition(目標部位, 委託價格):在指定價格執行部位目標。
2.2. SetPosition 使用範例
範例#1
if Position = 0 then SetPosition(1);
當Position為0時,買進1張,委託價格使用策略預設價格。執行後Position變為1。
範例#2
if Position = 0 then SetPosition(1, Close);
當Position為0時,買進1張,委託價格為當前收盤價。
範例#3
if Position = 0 then SetPosition(-1);
當Position為0時,賣出1張,使用預設賣出價格。執行後Position變為-1。
範例#4
if Position > 0 then SetPosition(0, MARKET);
若Position大於0,用市價賣出所有持有部位。
MARKET是一個特殊的保留字,代表希望用市價交易。XS自動交易系統會依照帳號類型來決定市價單該如何傳送,如果是證券帳號的話,會傳送市價委託,如果是期貨帳號的話,則會傳送範圍市價委託。
除了SetPosition語法可以更改目標部位之外,另外XS自動交易還提供了Buy、Sell、Short、Cover這四種語法。與SetPosition不同的是,這四種語法所傳入的數量是加碼/減碼的數量。不過不管是透過哪一種語法,這些交易指令最終的目的都是調整商品的目標部位。
3. 交易指令與Position/Filled運作概念
在XS自動交易系統中,Position代表腳本目前預期的持倉目標,例如:買進或賣出某商品的指定數量;而Filled則代表該商品的實際成交部位,兩者配合使用,讓使用者清楚掌握交易執行的狀態。
3.1. Position與Filled的變化流程
假設剛開始執行腳本時,Position和Filled均為0,接下來若腳本執行SetPosition(1)並發出買進1張的委託,Filled和Position的變化情形如下:
- 委託單尚未成交:Position會變為1,但Filled仍為0。
- 委託單成功成交:當買進1張的委託單成交後,Filled會更新為1,表示成交部位與Position一致。
利用Filled值可以幫助判斷委託是否已成功執行,例如:若Filled為0則表示尚未成交,若Filled與Position相等則表示已全部成交。
4. 判斷交易狀態Position/Filled的程式範例
以下為根據Filled和Position判斷目前交易狀態的實作範例:
假設當策略啟動時商品的Position為0,接下來的腳本判斷式可以協助監控交易狀態:
範例#1
if Position = 1 and Filled = 0 then begin
{ 已經送出一筆買進1張的委託, 可是還沒有成交 }
end;
範例#2
if Position = 1 and Filled = 1 then begin
{ 已經送出一筆買進1張的委託, 而且這一筆委託已經成交 }
end;
範例#3
if Position = -1 and Filled = 0 then begin
{ 已經送出一筆賣出1張的委託, 可是還沒有成交 }
end;
範例#4
if Position = -1 and Filled = -1 then begin
{ 已經送出一筆賣出1張的委託, 而且這一筆委託已經成交 }
{ 注意:Filled和Position一樣,可能為正或負,取決於多單或空單的成交狀況 }
end;
在這些判斷式中,Filled的值代表了委託是否已被市場完全執行。當Filled等於Position時,表示此商品的目標部位與實際成交數量已同步,腳本可以根據此結果進行進一步的判斷和交易操作。
5. 完整交易策略範例
以下是一個均線策略的範例,根據均線穿越與跌破訊號來進行買賣操作:
Condition1 = Average(Close, 5) cross over Average(Close, 10);
Condition2 = Average(Close, 5) cross under Average(Close, 10);
if Position = 0 and Condition1 then SetPosition(1);
if Position = 1 and Condition2 then SetPosition(0);
此策略當短期均線穿越長期均線時,執行買進1張操作;當短期均線跌破長期均線時,則賣出持有的部位。
6. 總結
透過以上XS自動交易功能的設定步驟及語法範例,您可以輕鬆建立並自動執行您的交易策略,達成自動化操作目標。希望這份說明能幫助您快速上手XS自動交易中心,並有效應用於實際交易中!
更多的交易策略範例,可以參考XS編輯器內的系統範例腳本,也可以參考此篇文章喔!
以上就是自動交易中心:自動交易中心功能介紹教學,我是 XQ 小編,我們下次見。