2018年12月10日 星期一

多策略部位整合


在執行多策略組合交易的時候,每個策略圖表獨立運作,各自下各自的單。但我們常常可以發現在某些時候(特別是開盤),出現 A策略要翻多、B策略卻要翻空,對我們的帳戶來說,因為策略圖表獨立運作的原因,實際上卻幾乎同時發出買進、賣出的委託單,而成交回來的價格又往往是買外盤、賣內盤,這完全是沒有必要交易動作,因為這兩個策略訊號對立,總合部位其實是沒有變化的,無端的損失買賣價差與稅費。

因此,我們可以把多策略的所有策略訊號統合在一起,再以訊號總合的部位去發出交易指令就不會做無謂的交易了。

我們需要一個讀取圖表的策略訊號的指標,及一個總和所有策略訊號的圖表來發出交易指令。既然我們要總和多策略的訊號來做交易,就順便也把再投資(Reinvestment)的功能也一併建立,讓日後的多策略組合部位隨著我們的權益增減而連動。


這是放在策略圖表上,讀取策略訊號的指標:
input: chartNO(1);
var: MP(0);


if LastBarOnChart then begin

  MP= i_MarketPosition * i_CurrentContracts;

  GVSetNamedInt( "iam"+NumToStr(chartNO,0), 1 );
  GVSetNamedInt( "chartMP"+NumToStr(chartNO,0), MP );

  plot1( text("chart",chartNO:0:0,"= ", MP:0:0) );
  
end;


RecalcLastBarAfter(0.1);


你需要逐個把這個指標(_GetChartPosition)插到策略圖表上,並設定參數,需要是連號且不能重複,如下圖,四個策略圖表分別插入指標並逐個設定參數為1、2、3、4。


請注意,這個指標的屬性設定務必把"歷史資料同步"的選項取消。


再來,另外建立一個工作底稿,日後每次開啟 MultiCharts ,這個用來輸出策略組合總部位的底稿都必須是在你的所有策略圖表都已經看到訊號、指標都顯示出來,才開啟這個總部位圖表,它需要是 1 tick 圖,資料範圍設個近 20日就足夠。插入訊號(_outputAccountPosition),你會需要設定幾個參數,myMoney(目前權益,也就是帳戶有多少錢) 、unitMoney(策略組合資金需求,你的多策略組合需要多少錢才能跑一組)、fileName(輸出給下單大師做下單的文字檔路徑),另外三個參數可以輸入成中文,就能在畫面上有中文的呈現。

正常來說,這樣設定完成後,你應該會看到圖表的畫面出現這樣。加入交易的策略數量有四個、四個策略的訊號部位加總是 9口(空單的話會有負號)、實際要交易的部位則是 2 口,因為這裡的設定,我有 20萬,但這一個策略組合需要 100萬才能做,所以只交易 20 / 100 = 0.2 組,0.2 組 x 訊號加總 9 口 = 1.8 口,經四捨五入,所以是 2 口多單。


從以上的參數設定範例,不知道你是否看出,你有多少錢跟執行多少個策略,是無關的?就算我只有 20萬,能不能執行一個需要 500萬資金需求的 50個策略組合?完全可以,因為我就只是下 20 / 500 = 0.04 組的部位嘛,一點都不違和喔!

這個總和策略訊號的圖表會產生一個給下單大師接手真實下單動作的文字檔。

至於,下單大師的下單設定,可以參考舊作或洽詢下單大師。 因為輸出文字檔,使用到凌波微步大分享的 outputfile.dll,跟本文所用到指標、訊號就一併包在一起供你下載。下載後,把其中的目錄 AutoTrading 放到 C:\ 下,再行匯入、編譯 pla 檔做如上述設定即可。當然,這個指標與訊號的結合,也可以很輕易的修改成時下滿流行的 比例式下單,本文就不多著墨。


然而多策略的交易僅僅把訊號統合是不夠的。myCTA 還同時兼具策略管理(動態績效表現評估)、風險管理(動態策略風險估算)、資金管理(內建帳戶防爆、再投資)的功能http://www.yctseng.net/2018/11/mycta_15.html


下單大師 4.0 版即將提供多帳戶的未平倉查詢、帳務功能,我想日後還可以再修改 _outputAccountPosition 讓它可以與真實帳戶的資訊做連動。在那之前,就先每一段時間自己輸入帳戶權益有多少吧 ^_^

熱門文章