顯示具有 程式交易 標籤的文章。 顯示所有文章
顯示具有 程式交易 標籤的文章。 顯示所有文章

2012年7月15日 星期日

程式編寫入門8 - ATR

以前我曾提及一個適合中長線投資者的出場指標 ─ Chandelier Exit,這次我們嘗試在 MetaStock 裡建立這個指標 (相關文章請參考出場策略2:Chandelier Exit)。

Chandelier Exit 的計算公式如下:

Chandelier Exit (for long position) = 過去 20天的最高價 - 3‧20天 ATR

這個公式看起來很簡單,問題是我們要如何計算平均真實波幅 (ATR),即使明白它的原理,但要用人手計算的話,也會感到頭痛。幸好在 MetaStock 的 function 裡,已經包括了 ATR:

ATR(PERIODS)

例如,若我們想知道 20天 ATR 的數值,只需要在程式中輸入 ATR(20) 即可,現在讓我們立即在 MetaStock 裡建立 Chandelier Exit 吧!

2011年7月24日 星期日

程式編寫入門7 - HHV

這次介紹一下 HHV function,其實 HHV 的意思就是 Highest High Value,它能協助我們找出特定期間內的最高值,這個最高值所指的可以是價格、成交量、甚至 RSI 。

HHV(DATA ARRAY, PERIODS)

以下為 HHV() 的一些例子:

HHV(C,20)
解釋:最近 20天的最高收市價(包括今日)。

HHV(V,10)
解釋:最近 10天的最高成交量(包括今日)。

2011年2月9日 星期三

程式編寫入門6 - Ref function

編寫交易系統時,會發現很多時候需要用到一天或兩天前的數據,這時我們就會用到 Ref() function:

Ref(DATA ARRAY, PERIODS)

以下為 Ref() 的一些例子:

Ref(H,-1)
解釋:昨天的最高價。

Ref(RSI(14),-1)
解釋:昨天 RSI(14) 的數值。

Ref(C,-1)>Ref(C,-2)
解釋:昨天收市價高於前天收市價。

2010年12月22日 星期三

MetaStock裡的「正宗」MACD

初接觸 MetaStock 的投資者,多數都會有個疑問,就是怎麼 MetaStock 裡的 MACD 不能自訂日數組合的?MetaStock 只容許我們修改訊號線的日數,但用來計算 MACD 線的兩條 EMA,不但不能更改,甚至沒有顯示所採用的是什麼日數:


這也太神秘了吧,MACD 而已,又不是黑盒系統,怎會什麼也沒有顯示的?我嘗試到 "MetaStock Help" 查看,找到如下解釋:

In order to maintain the mathematical integrity of the MACD as prescribed by Gerald Appel, MetaStock does not allow the time periods in the MACD to be changed.

2010年12月8日 星期三

程式編寫入門5 - 常用技術指標

除了移動平均線,投資者最常用的技術指標,相信非 RSI、STC 及 MACD 莫屬。現在簡單介紹一下它們在 MetaStock 程式中的表達方式:


為幫助理解,我們嘗試自行建立隨機指數 (STC),在 Indicator Builder 輸入以下的指標名稱及程式:

Name:STC
Formula:
Stoch(14,3)

2010年11月28日 星期日

程式編寫入門4 - Cross()

當我們編寫交易系統時,最常用到的也許就是穿越訊號,例如 10天線升穿 50天線,或 9天 RSI 升穿 30。在 MetaStock 中,這時就要用到 Cross() function:

Cross(DATA ARRAY 1, DATA ARRAY 2)

假設我們現在要建立一個移動平均線系統,買賣規則如下:

買入訊號
5天線升穿 20天線

沽出(平倉)訊號
5天線跌破 20天線

2010年11月5日 星期五

程式編寫入門3 - Input()

大部份的技術指標都有一些參數供我們自行調整,以適應不同的市場或周期,例如 RSI 就可以採用 9天或 14天等不同的計算日數。那麼,當我們利用 MetaStock 的 Indicator Builder 建立技術指標時,要如何做才能讓指標擁有參數設定的功能呢?以保力加通道的 %b 為例,我曾介紹用下面的 formula 來建立 (請參考「程式編寫入門2」):

(C-BBandBot(C,20,S,2))/(BBandTop(C,20,S,2)-BBandBot(C,20,S,2))

大家可能留意到,這個 formula 所計算的 %b 是固定以 20天 SMA 及 2倍標準差作為參數組合的。如果想在指標建立好後,能夠讓我們自行調整參數,就要用到 Input() 函式:

Input("PROMPT TEXT", MINIMUM VALUE, MAXIMUM VALUE, DEFAULT VALUE)

2010年10月23日 星期六

程式編寫入門2 - BBand

之前曾經介紹過由保力加通道衍生的技術指標 %b,它能顯示當前價格在通道的位置,並反映現行趨勢的強弱 (有關 %b 可參考文章 technical-analysts.blogspot.com/2010/10/b.html )。但是,若你仍在使用財經網站所提供的免費技術分析工具,就會發現根本找不到 %b 這個指標,這也沒辦法,一分錢一分貨嘛。

有些人不太願意花錢去購買貴一點的軟件,情願使用一些不夠全面但免費的網上圖表。但我認為,自己手上所用的技術分析軟件,就像戰場上的武器一樣,你可以使用免費的點38左輪手槍,但當你上到戰場時,發現其他人都手持 AK-47 自動步槍或 MP5 衝鋒槍,你會不會後悔沒有花點錢裝備自己呢?如果花點錢就能大幅提高自己的生存機率,相信大多數人也願意吧。

在 MetaStock 裡,我們可以透過 Indicator Builder 來建立 %b。首先介紹一下保力加通道的兩個基本函式:

BBandTop (DATA ARRAY, PERIODS, METHOD, DEVIATIONS)
BBandBot (DATA ARRAY, PERIODS, METHOD, DEVIATIONS)

BBandTop() 是保力加通道頂的函式,而 BBandBot() 則代表保力加通道底。舉例,保力加通道常用的參數為 20天簡單移動平均線 (SMA) 及 2倍標準差 (Standard Deviation),化做 MetaStock 程式如下:

BBandTop(C,20,S,2);
BBandBot(C,20,S,2)

2010年10月16日 星期六

程式編寫入門1 - Mov()

上次示範了如何用 MetaStock 編寫一個簡單的交易系統,當時所用的是 Mov() 函式,它在 MetaStock 中所代表的就是移動平均線。不過,正式介紹 Mov() 之前,大家首先要知道一些 data arrays 在 MetaStock 語法中的縮寫:


上述的縮寫字在程式編寫過程中經常也會用到,因此大家需要記住。現在我們可以看一看 Mov() 函式的結構:

Mov(DATA ARRAY, PERIODS, METHOD)

2010年10月5日 星期二

踏出第一步

要建立技術分析交易系統,往往需要將買賣規則轉化為電腦看得懂的程式語言,以便進行歷史測試 (back-testing),看看自己設計的系統往績到底如何 。雖然歷史測試也可以人手進行,但卻要耗費大量時間,因此,除非你覺得自己的交易規則很難化做程式語言,否則可能的話還是盡量用電腦幫忙的好。

要把交易系統化做程式語言,需要用到技術分析軟件幫忙,較出名的有 MetaStock、TradeStation 及 Wealth-Lab,而我所用的是 MetaStock 11。現在讓我們來牛刀小試,以MetaStock 建立一個簡單的系統。

今次我們要建立一個移動平均線系統,買賣規則如下:

(1)  2天線升穿19天線買入。
(2)  2天線跌穿19天線沽出。

交易系統的好處

技術分析經常給人主觀的感覺,原因是各種圖表形態如頭肩底、三角形等很難有精確的定義,分析者往往是依靠自己的經驗去作主觀判斷。而波浪理論則更「離譜」,貌似只要掌握了基本的數浪規則,就可以天空海闊任你發揮,往往不同的人會得出不同的數浪結果,誰對誰錯要事後才知了。

但其實技術分析也可以很客觀的,有些人會利用一些技術指標和買賣規則去建立機械化的交易系統,系統完成後,投資者只需要根據系統所發出的買賣訊號去進行交易即可。這樣做主要有兩個好處:

首先,投資者可以擺脫情緒的影響。相信很多人也試過,即使已看過圖表走勢,正式做買賣決定時,仍然會心大心細,進場與否只是一念之差。今天心情好就進場了,下星期可能心情不同了,明明面對相同的圖表走勢卻畏縮不前。

其次,系統可以幫助你維持交易時的紀律。不能否認,很多人投資的動機是因為「好玩」,賺錢當然很重要,但投資市場所帶來的刺激與快感會令他們上癮,結果明明就沒有良好的買賣機會,他們卻仍然忍不住要找各種理由去進場「走一轉」。若投資者建立了自己的交易系統,一切有買賣訊號作依據,便不會再胡亂進場。

雖然建立機械化交易系統有以上好處,但我想強調,「藝術型」的投資者也可以獲得理想回報的,他們根據自己的經驗,對圖表形態和技術指標作出歸納總結,然後才下投資決定。雖然某程度摻雜了主觀成份,但這類投資者通常對技術分析有獨到的見解,而且能夠自我遵守紀律,有本事的人主觀一點又何妨呢?條條大路通羅馬,並沒有敦優敦劣之分。