【單元11】運用DataN與外部資料解放交易策略


在前面單元我們有介紹可以從MultiCharts內建的交易策略,作為新手開發策略的參考,另外包含前面教學單元所使用的範例,這些交易想法多不脫技術指標、價與量的變化等,導致據此開發出來的策略同質性太高,交易資訊其實千變萬化,可以如何計算期現貨價差?我們可以用籌碼資料開發策略嗎?我們可以參考總經指標來為交易策略注入基本面要素嗎?我們可以加入選擇權的資訊(Put/Call Ratio、VIX等)來做為濾網嗎?到目前為止我們在MultiCharts內建可以運用的資料確實只有開高低收量跟時間這幾項,本單元我們要教大家引進”外籍傭兵”,運用data2跟匯入外部資料的技巧,讓交易策略的開發可以突破價量侷限,開發者的各種天馬行空的交易策略得以實現。
 
 
>>讀完本文您可以學到什麼?
1. dataN的教學操作與限制
2. dataN運用技巧
3. 匯入外部資料及其運用

在一張圖加入多個商品:DataN

在MultiCharts的圖表視窗可以允許放入多個商品,操作方式就是在原圖多次執行新增>商品,例如我們想要在原本5分K的圖再多加一張60分K圖,操作流程如下所示:
 
 
這樣的長短週期搭配最常使用在長線保護短線這樣的操作觀念中,也就是用長線來定義大方向多空,在到短線上找點位進出,也就是長線偏空時,短線就盡量避免做多,反之亦然。在PowerLanguage的語法上我們用data1、data2、data3…來依序表示多個商品(data1為預設值可省略不寫出來),直接舉一個範例來說明語法運用。譬如在上面那張data1為5分K,data2為60分K的圖上,我們來跑之前單元舉例過的高低點突破進場,但再加一個長線的KD濾網,即K值在50以下且K大於D值才做多,反之只做空,語法如下:
 
==============================
inputs:len(20),loss(50),profit(100);
vars:HH(0),LL(0), var0( 0, data2 ), var1( 0, data2), var2( 0, data2 ), var3( 0, data2 ) ;
 
HH=highest(high,len)[1];
LL=lowest(low,len)[1];
Value1 = Stochastic( H, L, C, 14, 3, 3, 1, var0, var1, var2, var3 ) of data2;
 
Condition1=var2<50 and var2>var3;
Condition2=var2>50 and var2
 
if condition1 and close cross over HH then buy next bar at market;
if condition2 and close cross below LL then sellshort next bar at market;
==============================
 
看似簡單,但data2使用上首先要建立以下觀念:
 
1. XXX of dataN就是指定讀取第N個商品資料的語法,例如close of data2就是傳回當下data2的收盤價。
 
2. 圖表上第一個商品,也就是data1,為主要商品,自動交易時只能交易該商品,程式腳本的運算也是以該商品週期為主。
 
3. 以data1為5分K、data2為60分的圖,來講我們把上述計算data2的KD指標程式碼畫成指標套入,結果會顯示如下圖,data2的KD指標要每12根K棒(60/5=12)才會重新運算一次:
 
 
4. 我們再回頭看上面的高低突破+長週期KD濾網的策略語法,其中有兩個地方跟我們以前所學語法不同,第一個在KD指標的變數宣告上),我們指定該變數是依據data2,如var2( 0, data2);再者我們在KD運算函示最後加上of data2,也就是
Value1 = Stochastic( H, L, C, 14, 3, 3, 1, var0, var1, var2, var3 ) of data2;
 
5. 並不是所有指標都能依樣畫葫蘆這樣套用,交易人可自行嘗試比對,看看用data2算出來的長周期指標值跟以該週期單獨開一張圖計算出來的結果是否有差異。有關data2等多週期的運用討論可以搜尋MultiCharts官網討論區相關討論串

計算不同商品間價差

  • 期現貨價差
計算不同商品間的價差主要是為了衡量兩者間的強弱關係,計算方式很多,最簡單的算法就是兩個商品價格相減,例如期現貨價差就是期貨減現貨,大於零為正價差,小於零為逆價差。計算價差一樣要用到data2的技巧,也就是第一個商品放台指期,第二個商品放加權,再寫一個計算價差的指標腳本如下:
 
==============================
vars:spread(0);
 
spread=close-close of data2;
 
plot1(spread);
==============================
 
有關指標語法教學可參考【單元14】自己的操盤指標自己寫一文。以期現貨價差當作交易濾網一度是相當受歡迎的做法,交易人可以自行嘗試看看。將上述指標套在圖上,呈現如下:
 
 
  • 配對交易,例如電金價差
「配對交易」(Pairs Trading)也有人稱「價差交易」,主要是在兩個相關的商品,觀察其相對強弱出現失衡狀況時,進場作買弱空強(逆勢)或是買強空弱(順勢)的交易策略。因為整體部位為一多一空中性部位,理論上可大為降低系統風險,僅需將注意力放在價差的變化上。像電子期貨對金融期貨(電金價差)是一種,或是挑選兩檔有相關性的股票期貨,都是常見的組合。
 
價差的算法比較簡單的可採兩個商品收盤價直接相減或是直接相除,如果兩個商品價格差異較大,例如電金價差,採用兩者的市值相除更能反應價差變化。我們在MultiCharts上先放一張電子期貨,再新增data2金融期,將以下價差指標語法套入圖表:
 
==============================
vars:spread(0);
 
spread=(close*bigpointvalue)/(close of data2*bigpointvalue);
 
plot1(spread);
==============================
 
電金價差呈現如下圖:
 
 
坊間也有人以電金價差來做為台指期的交易濾網,其立論點為當多頭行情時台股多仰賴電子股主攻,反之在偏弱行情金融則擔任偏防守角色。要編製這個濾網指標只要將上述的價差當作商品價格,帶入計算其RSI、KD或其他指標,來協助判斷價差強弱。
 
價差策略是一個蠻值得納入投資組合的程式交易策略,重點在捕捉/判斷價差的變化,上述的價差計算其實算是粗糙,在計量交易的領域對價差另有相當嚴謹(學術)的定義,有興趣的讀者可以搜尋關鍵字「Pairs Trading」研究相關資料,之後我們在精選專欄再跟大家深入介紹。

匯入外部資料

在前面的期貨vs現貨價差以及電子vs金融價差中,這些商品的報價都是MultiCharts內可以取得的,如果我們想要開發的策略,所需用到的資料是MultiCharts報價源所沒有的呢?例如我們想利用期交所每日盤後公佈之大額交易人籌碼來當交易濾網,或是我們聽說選擇權的Put/Call Ratio對大盤方向判斷很有參考價值,我們能否在MultiCharts內實證看看?這個時候就要使用匯入外部資料的技巧。
 
匯入外部資料簡單講就是先把上述所需資料整理成QuoteManager可以接受的格式,然後在QuoteManager中新增一個虛擬商品,將前項資料當作虛擬商品的價格匯入,有了這個虛擬商品,回到MultiCharts中我們就可以用新增data2的技巧把外部資料拿進來運用。在精選專欄「MultiCharts如何自製散戶指標」一文中我們有清楚示範整個操作流程,請讀者多加參考。散戶指標計算公式為:三大法人小台留倉部位合計*-1,
 
 
除了籌碼、選擇權相關資料乃至總經資料等等,只要交易人想得到的,並且能取得資料的,就能運用外部資料技巧納入交易發想,等於是解放了原本侷限在商品價量內的策略,讓交易策略延伸無限出可能性!

快速結論

本文介紹如何在MultiCharts圖表視窗加入data2等多個商品,學會data2技巧就可以進一步開發期現價差、配對交易等新指標或策略,再進一步甚至可以匯入外部資料來當data2,打開策略開發的無限可能。交易策略的發展走到後段一定是要設法突破窠臼,力求創意與差異,善加運用data2與匯入外部資料的技巧絕對是藍海所在。
 
 

【警語】:

  1. 本文所舉之語法範例為教學之用,非提供交易策略,請讀者警慎運用。
  2. 自動交易如遇系統異常或斷線等問題,可能暴露更高的風險,交易人仍應檢查電腦系統或網路之狀態,特別要隨時注意部位變化,以降低相關風險。

期貨線上開戶 期貨營業員專區

/統一期貨相關連結/

統一期貨FB統一期貨YouTube統一期貨LINE統一期貨IG