2013年12月30日 星期一

外側日

當某日的最高價高於前一日的最高價,最低價低於前一日的最低價,就形成外側日 (outside day) 。換句話說,外側日完全包含了前一日的價格區間。如下圖:
外側日本身並不罕見,但在某些情況下,卻代表強烈的見底可能:

1. 出現在跌浪之中。
2. 外側日的價格區間遠大於前一日。
3. 外側日的收市價高於開市價,而且位於最高價附近。
4. 外側日包含了先前兩日或以上的價格區間。
5. 伴隨著成交量增加。

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 吧!

2012年1月7日 星期六

通道突破系統

看到這標題,相信很多人會立即聯想到保力加通道。但這次我想介紹另一個簡單而有效的交易方法:移動平均線通道 (Moving Average Envelopes)。

顧名思義,移動平均線通道就是在平均線的上下兩端建立通道。由於價格不會長期大幅拋離移動平均線,因此人們便想到將移動平均線加減某一個固定百分比,作為價格波幅的上下限。例如,恆生指數現在的 20 天線位於 18528.03,若以 3% 作為固定百分比,則通道頂及通道底計算如下:

通道頂 = 18528.03 + ( 18528.03 * 3% ) = 19083.87
通道底 = 18528.03 - ( 18528.03 * 3% ) = 17972.19

恆生指數 - 移動平均線通道

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年5月21日 星期六

出場策略(2):Chandelier Exit

上次介紹了拋物線系統 (SAR) ,SAR 最大的特色是止賺位的移動速度會愈來愈快,以保障既有的利潤。短線交易者傾向賺夠了就跑,絕不會對倉位有所留戀,因此 SAR 很適合他們。但對中長線投資者來說,止賺位的加速移動卻成了最大的缺點,請看下圖:

現貨金 - SAR


想像你是順勢交易者,預期金市將出現大升浪,於是在 09年 9月初進場,然後金價果然節節上升。一切看來都很完美,但可惜你選擇了 SAR 作為你的出場訊號,SAR 在 9月 21日發出止賺訊號,你只好在 995美元附近「止賺」,眼巴巴看著金價最後升至 1226美元!

在這裡我想介紹一個較適合中長線投資者的出場指標:Chandelier Exit

2011年3月5日 星期六

出場策略(1):Parabolic SAR

無論是否採用機械化的交易系統,投資者都需要作出兩個決定:(1) 何時進場,與及 (2) 何時出場。新手往往將重點放在進場訊號上,認為只要找到最佳的入市位,就能夠保證賺大錢。但專業玩家會將時間和精力花在出場策略上,因為他們知道這才是決定輸贏的關鍵。

很多投資者都有以下經驗:成功在低位入市,但升少少就獲利離場,結果錯過了一個大升浪;或入市後帳面曾賺到可觀利潤,卻因為沒有及時出場,結果在市況逆轉下利潤化為烏有。如果不想重蹈覆轍,就要在出場策略方面多下功夫。

出場策略包括止蝕及獲利兩個部份,但很多投資者都不願談及止蝕。一個利好的進場訊號意味著可能出現新的升浪,若你入市持好倉會有優勢,但不是「必贏」,即使訊號的準確率再高也好,仍代表有時會失效,這時止蝕位就能幫你盡快離場,避免損失擴大。

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)
解釋:昨天收市價高於前天收市價。

2011年1月16日 星期日

如何評估系統的測試結果

當你編寫了一個自以為有效的交易系統後,必須利用歷史資料進行測試,確定它真的能夠幫你賺錢。這一點很重要,除非你確定自己的系統有效,否則你很容易會對它失去信心。

很多人花錢參加昂貴的投資課程,學到神奇的交易方法後,沒有進行歷史測試 (back-testing) 就拿來實戰,結果往往遇到兩、三次的虧損便信心盡失,於是又再踏上尋找之旅,希望找到另一個「聖杯」。這樣的過程不斷重複,他們不明白問題其實出在自己身上,世上沒有穩賺不賠的交易方法,如果輸兩、三次就放棄,就算是再好的系統,交到他們手上也沒有用。

現在,讓我們嘗試比較兩個不同的交易系統,圖 1 是 StochRSI 系統的測試報告 (已扣除佣金及滑移價差),圖 2 則是 Moving Average Crossover (10天/30天) 系統。在這裡我只想評估系統的測試結果,至於買賣規則就不多作解釋了。

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月18日 星期四

保力加通道與 RSI 的結合 - %b(RSI)

自從技術分析大師 Welles Wilder 的著作《New Concepts in Technical Trading Systems》面世後,相對強弱指數 (RSI) 就成為投資者最喜歡的技術指標之一。RSI 的基本應用非常簡單,幾乎隨便找一本技術分析書都可以找到:

1. RSI 超越 70為超買,市場有調整壓力。

2. RSI 低於 30為超賣,市場隨時展開反彈。

只要看過這兩個「法則」,就不難想到為什麼 RSI 會如此受歡迎了。多數投資者都喜歡低買高沽,怎樣才算高?很多人習慣與過去的價位比較,若恆指上星期還在 21000點附近,現在升至 22000點,就覺得很「高」了,再加上看到 RSI 升至超買區,往往就會忍不住想做淡。

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月31日 星期日

陰陽燭:錘頭與射擊之星

陰陽燭 (Candlesticks) 可說是最古老的技術分析工具,起源於日本,自從 Steve Nison 在 1991年出版了《陰線陽線》一書,隨即引起世界性的陰陽燭學習熱潮。到了今天,陰陽燭已成為技術分析軟件的必備工具之一,在投資界幾乎無人不識。

我想陰陽燭之所以如此普及,應該歸功於其易記又令人著迷的形態名稱,諸如早晨之星、身懷六甲、三個白武士,聽著就覺得很有威力,連信心也好像倍增了。但是,到底這個在日本已盛行 150年以上的分析工具,在今時今日的金融市場上有多大效用呢?這次我嘗試用 MetaStock,對兩個基本的陰陽燭形態 ─ 錘頭與射擊之星 ─ 作簡單的 back-testing。

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月14日 星期四

保力加通道指標 - %b

相信很多投資者也聽過保力加通道,我以前亦有在網站介紹過它的計算和基本用法,這裡就不再重覆了,有興趣的朋友可參考 ectrader.org/bands.htm。其實,除了保力加通道外,其發明者 John Bollinger 還設計了兩個技術指標:%b 和 BandWidth,這裡我想簡單介紹一下 %b。

%b 能清楚告訴我們價格和保力加通道的關係,其公式如下:

(收市價 ─ 保力加通道底) / (保力加通道頂 ─ 保力加通道低)

2010年10月10日 星期日

移動平均線的種類

移動平均線 (Moving Average, MA) 屬於順勢指標,它能幫助投資者判斷趨勢,而且預測能力頗強。最常用的有以下三種類型:簡單 (Simple)、加權 (Weighted) 與指數 (Exponential)。大多數人都採用簡單移動平均線 (SMA),因為它的計算最容易。以5天期為例,將今日收巿價和之前四個交易日的收巿價相加,再除以 5 ,得出的便是今日的 5天 SMA。

那麼,我們應如何選擇移動平均的長度呢?首先,我們要了解,移動平均的長度愈短,對價格的反應就會愈敏感,因此轉勢訊號亦會較快出現。但凡事有利也有弊,短期平均線的反覆訊號亦較多 (即平均線發出買入訊號後,很快又發出離場訊號,令之前的買入訊號蝕錢) 。請看下圖:

恆指日線圖


我們看到,在今年3月恆指出現短暫調整時,5天線立即跟隨向下,但較長期的20天線仍維持上升趨勢;到4月時,恆指真的轉勢了,5天線因為較敏感,所以比20天線更早發出反轉訊號。因此,投資者在選擇移動平均的長度時,要考慮的是自己所希望掌握的趨勢有多長。如果希望掌握長期趨勢,可以採用100天甚至200天線;至於大多數投資者,一般採用10天至50天之間的平均線。

2010年10月5日 星期二

踏出第一步

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

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

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

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

交易系統的好處

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

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

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

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

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