「AT 庫存整合」說明
選擇單元...
XS自動交易
單元目錄
單元目錄
基本功能介紹
由於目前的自動交易策略在每次啟動時會重新運算,且相關的交易資訊不會延續,故對多天期交易策略的編寫上較為困難,故此次改版中針對策略部位所提供的部位設定選項作了調整,讓使用者可以較為輕鬆的處理長期策略可能會遇到的情境。原本策略部位提供的選項為:
- 依腳本計算
- 依庫存
- 自動數值
- 不設定
- 延續前次執行
- 與庫存同步
- 由腳本計算
不設定
在選擇不設定的情況下,運作方式和原本的依腳本計算且不設定策略部位計算起點一樣。也就是策略啟動後是從策略部位庫存為 0 的情況下開始執行。在單純想要測試策略運行時,這是最常使用的設定。延續前次執行
此選項會讓策略延續前次執行的交易紀錄繼續運算。在設定時可以勾選是否自動執行有部位的商品。若勾選了 自動執行有部位的商品,策略在啟動時會將「前次執行結果有產生策略部位,但不在此次執行商品範圍內的商品」一併納入執行。也就是就算某個商品今日啟動時在不在執行商品內,但其在策略前次運行時有交易且有部位的狀況下,今日啟動時亦會一併加入執行商品中。簡單舉例,假設策略的執行商品設定為指定選股法,昨日選股法篩選出了 2303.TW 並買進了一張。今日策略啟動時,選股法篩選出了 2882.TW,在勾選了 自動執行有部位的商品 的情況下,2303.TW 雖然沒有被篩選出來,但因為前日有剩下的部位,因此會一併納入執行商品中並運算。當策略第一次啟動「延續前次執行」並執行時,由於還未建立策略部位,所以所有策略部位皆為 0。之後在每次執行策略時,系統在策略介面上就會顯示前一次策略有部位的商品、成交均價、及該部位建立時間。使用者可以在該介面中確認資訊是否正確,若有問題的話可以手動進行編輯。需注意交易紀錄是保存在本機端,故當發生沒有之前紀錄的情況時 (例如交易紀錄缺失),部位的建立時間會預設為當日,可透過手動修改部位建立日期。點選啟動策略後,會跳出確認執行策略的視窗 (如上圖),裡面會有和策略介面上顯示的相同資訊。可以在此處針對裡面的商品庫存資訊作手動調整。另外需注意的是,雖然策略會延續之前的紀錄,但能夠取用的是最近一次未平倉的部位資訊。 舉例來說,如果策略中 A 商品部位在上次啟動時的變化是:0 -> 3 -> 4 -> 2 -> -1 -> 結束這次啟動時,只會讀到 0 -> -1 的這筆交易資訊。 若策略中 A 商品部位在上次啟動時的變化是:0 -> 3 -> 4 -> 2 -> 1 -> 結束這次啟動時則會取得完整的紀錄。 簡單來說,可以想成以部位 0 為分界點,能夠取用到的是到最近一次部位為 0 間的交易資訊。這種設定適合使用在執行商品為串接選股策略,或是使用組合的清單等可能前後兩次執行策略時商品有差異,以及交易邏輯需要前次執行的交易資訊時 (例如需要計算商品持有天數當作條件之一)。※ 過去在串接選股策略執行交易腳本回測時,若持有前期選股篩選出來但當期沒有的商品時,該商品可以加碼與減碼,但不能反向進場。此項限制在這次改版中廢除,不論是回測還是及時的狀況下,使用者在持有未符合指定商品的庫存時可以正常的進出場。若希望限制此類商品,可以使用 IsListedSymbol 函數來處理。與庫存同步
此選項和原本的依庫存類似,但新版中有 3 個項目可以勾選:1. 自動執行有部位的商品
2. 庫存新增時自動加入執行
3. 庫存異動時自動同步數值
自動執行有部位的商品 會讓策略啟動時將「不在執行商品中,但庫存不為 0 的商品」納入執行。庫存新增時自動加入執行 會讓策略運作時將「不在執行商品中,但後來透過其他方式 (例如手動交易) 加入庫存的商品」一併納入執行。庫存異動時自動同步數值可以讓策略執行商品的庫存與實際庫存同步。過往的策略一旦啟動後,策略庫存就會是獨立運作的存在,其他策略的交易和手動交易都不會對其產生影響。但在勾選「庫存異動時自動同步數值」後,只要有發生交易導致實際庫存變動時,策略執行商品中的庫存也會一併變動,此時策略中該商品會重新啟動計算。需注意系統內部會定義商品每次重新啟動的時間間隔,不一定庫存一改變就馬上重新計算。在策略啟動時,使用者可以手動調整部位建立時間。簡單來說,就是讓策略庫存和實際庫存會相等。這樣就可以實現 A 策略只執行進場、B 策略只執行出場,或是手動交易後讓策略幫忙監控出場的運作方式。※ 在 15.01 的版本上,庫存異動時自動同步數值 和 庫存新增時自動加入執行 的功能啟動後只會受到手動交易的影響,其他策略發生的交易不會互相同步 (此部分預計在未來的版本開放)。故當手動交易發生時,運行中的策略實際上會是增減和手動交易相等數量和價格的部位,不同策略間還是會維持原本的差距。由腳本計算
此功能和原本的 依腳本計算 並搭配 策略部位計算起點相同,也就是讓系統模擬計算從策略部位計算起點到策略啟動之間,若執行該策略的話應有的部位庫存。策略部位計算起點可以設定為指定天數或是選擇日期。需注意由於是模擬計算的,所以可能會和實際運算策略的結果不同,但透過這種方式執行策略的話可以讓腳本內的變數狀態與交易邏輯和從設定的起點開始運算同步。函數
IsListedSymbol();此函數會回傳布林值,判斷運算的商品為策略設定的執行商品,還是後來由於其他因素 (例如自動執行有部位的商品) 而加進來運算的商品。若為策略設定的執行商品則回傳 True。舉例來說,假設策略為延續前次執行並勾選自動執行有部位的商品,執行商品設定為指定選股法。昨日選股法篩選出了 2303.TW 並買進了一張,今日策略啟動時,選股法篩選出了 2882.TW,因此策略在今日會執行 2303.TW 和 2882.TW。IsListedSymbol 在 2303.TW 時會回傳 False,在 2882.TW 則是 True。