2016年1月17日星期日

尾盤出場策略2-加強判斷

一支交易策略可簡單分成進場主邏輯、出場主邏輯,而當沖策略在尾盤必須出場的特性,使得其重要性在出場設計上不容小覷,然而根據 J 幾年來的觀察,似乎許多交易者並不太在乎這點,大多專心於進場與一般停損的設計,而最後出場僅使用指定時間出場,因此本篇延續 尾盤出場策略1-建立日期表,來簡單介紹一些尾盤現象對績效的影響性,提供讀者思考更多在尾盤邏輯設計的一些想法。

本篇測試的策略在進場主邏輯部分延續 通道突破策略  一文中所使用的程式碼,讀者可先行參考,然而為了增加交易次數以突顯出尾盤的影響性,本篇改用台指期1分線交易,參數也稍微修改,並配合尾盤出場策略1-建立日期表 所使用的最終出場時間作為初始設計,其出場設計如下圖,讀者可先回憶一下。

圖片 1

2007年至今交易績效如下(手續費來回共800元)
圖片 2

現在,開始進入本篇的尾盤出場邏輯,主要新增的想法是,交易時間以及賺賠對於出場快慢的影響,以及是否該逆勢找好的點出場(例如作多拉高出),或順勢出場(例如下跌後多單出場),讓我們直接看程式碼與績效得到簡單結論。

圖片 3

從上圖中可發現,若策略處於虧損狀態,且12點50分至13點時是上漲的,則於13點後就盡快出場,如同虧損時找有利的點出場,其改善的績效如下圖。

圖片 4

獲利增加約10萬,MDD幾乎不變,效果不錯,然而若是條件相反,當策略賺錢早點出場則會如何呢?直接看下圖績效來得到結論。

圖片 5

可發現獲利明顯減少23萬,MDD幾乎不變,符合虧損時早點讓部位出場,賺錢時讓獲利奔馳的精神,然而讓賺錢的部位一直持有到尾盤就是最好的嗎? J用同樣的手法找到稍微能繼續改善績效的方法,一樣直接來看程式碼。

圖片 6

其想法主要在思考,若是賺錢的時候,大多數當沖順勢策略應該也是賺錢,而假定多數策略與K棒周期的影響大約都在13:10至13:20分左右出場,因此若行情在此時間轉為與今日當沖走勢反向,也許顯示法人在尾盤作價上並不積極,持有過久也不一定能吃到13:30當沖強制平倉以及現貨收盤後期貨的順勢行情,使得順短期的勢先出場較有優勢,其績效如下。

圖片 7

獲利上升6萬,MDD續減少,反之此時若改為逆勢出場(即條件3與4對調),績效如下。

圖片 8

顯示若尾盤趨勢持續順勢,不該提早出場,將大幅減少獲利與增加MDD。

最後,透過尾盤簡單的上漲與下跌現象,與交易時間的特色,將有助於進一步改善交易績效,而本篇並非特別要研究其成因為何,只是挑出可能相對有意義的時間去做測試,得出符合一般賺錢精神的結論,賠錢快出,而且逆勢找好機會出效果不錯;賺錢要等轉弱再出,否則持有久一點較有優勢再了解簡單的尾盤狀況後,更進階讀者則可思考如何精進賠錢逆勢出的方法,賺錢順勢出的方法,也許可以找到更明顯改善績效的交易邏輯。

Average True Range(ATR) 平均真實範圍

之前紀錄過觀察行情波動的技術指標,有 歷史波動率 及 動能指標-ADX與Momentum ,此外常見的另一個指標是Average True Range(ATR) 平均真實範圍。目的都是由波動程度來輔助策略,應用在合適的盤勢及避開不合適的盤勢。而不同的計算方法則是各有其依據,每個人能領略並應用的程度也不同,但多認識一下總是好的。

定義的連結如 Average True Range – ATR,先計算其中的TR,取以下三者的最大值
  1. 今高-今低
  2. (今高-昨收)的絕對值
  3. (今低-昨收)的絕對值
然後再計算N個TR的簡易平均值

ATR定義

在說明中有簡單提到,高的行情波動會有高的ATR值,低的行情波動會有低的ATR值。

ATR值的計算很簡單,在MULTICHARTS裡也有內建了這個函數可以直接使用,例如下圖,使用AvgTrueRange,一個參數是要多少期間的平均數。

mc_atr

直接套用指標觀察圖形

mc_atr_pic

ATR如同其他波動性指標,在很多方面都可以應用,例如

  1. 單一指標的高低比較,由設定的門檻判斷波動的高低值。
  2. 長短期的ATR互相比較,判斷近期相對的波動率程度走向。
  3. 將ATR應用在帶狀指標的範圍決定上。
  4. 應用在出場的條件,例如遇上K棒遠大於ATR的區間時,是否適合停損停利。
  5. 也可以應用在停損的設定上,ATR小讓停損小,ATR大讓停損大。
  6. 某些基於K棒強弱度的策略邏輯可以應用ATR過濾不具代表性的K棒。

以上提到的各項都各自有測試應用的價值,L自己也有應用到的部份,不過以目前的應用程度來說,還不及ADX的順手,在有不同想法時仍會想到測試使用看看,或許有更多的好用之處,就請朋友們動手使用看看囉~

歷史波動率策略設計

在 歷史波動率 這一篇中紀錄了歷史波動率的計算和指標語法,就可以拿來作為策略訊號的設計或濾網,基礎想法是在於波動率期間的比較,如果短期的波動率小於長期的波動率,表示目前行情較為穩定、黏著、緩慢,也比較像是多頭的環境中表現的狀況。反之,若短期的波動率大於長期的波動率,表示目前行情的波動較快速、急拉急殺,可能有恐慌氣氛,那就像是空頭盤勢了。

以上述波動率比較作為濾網,嘗試搭配最根本的均線策略邏輯,市價大於均線作多、市價小於均線作空,設計一個留倉長波段策略來觀察表現,程式碼如下列:

CODE


主要邏輯在第11、12列,如前述,另出場條件設定為市價反向跌/漲破均線時多少點該出場。以上參數也列出來了,讀者可以自行練習邏輯和參數調整。範例策略使用30分線的週期,進出場的價位節錄如下圖。

pic

可以先預想勝率和盈虧比和強弱處,它就和基本的均線策略一樣,大波段可以獲利,均線黏著時易洗刷,勝率應低於40%,盈虧比應高於2.5,drawdown起碼25萬以上。就以上圖來觀察,搭配波動率作濾網是有效果的,避開了不少次無謂的洗刷。績效報告如下圖 (2005~2013,交易費用800)。

績效結果

交易分析

績效報告中,最大的亮點是盈虧比很高,尤其是空單的表現,表示這個策略在空方勢時可以抱的很緊、很久。pro/DD 和 kelly值也相當不錯,更多的策略評估可以參考 交易策略評估-Kelly formula 、 交易策略評估-獲利風險比 、交易策略評估-損益期間 。

以上,是利用歷史波動率作為策略邏輯的應用,參數都是經過最佳化的,另外值得注意的是這個策略2013年表現並不突出,不至虧損,但幾乎無獲利,因此若要當作實戰的交易邏輯還有得思考修改。

尾盤出場策略1-建立日期表

J注意到一般朋友進行策略撰寫的時候,可能較容易頭重腳輕,即非常努力思考進場邏輯的創意,卻容易遺忘尾盤出場的創意其實也影響甚大,因此本篇將介紹一個最基本的尾盤出場的方法作為系列的第一篇。

此方法基本上說穿了很簡單,就是當沖不要都只在1330前出場,也許常常會圖個方便而沒有使用這樣的做法,又或是使用當沖保證金的人受限於規定都必須於30分前平倉出場,然而J之後會簡單證明市場是殘酷的,越有錢的人或法人可能因為不會用到如此滿的保證金,策略也相對多元,因此多承擔幾分鐘的風險,確實也有其報酬可拿,以下將示範先從建立結算日期表作為FUNCTION,再於訊號中使用。

首先,先選擇新增功能函數的頁面。

尾盤出場策略1

再鍵入名稱,本例以END OF MONTH縮寫取名,讀者可自行依喜好設定,其他項目可不用調整。

尾盤出場策略2

將結算日期KEY入如下圖所示,每年做一次,但讀者千萬記得若碰到颱風休假調整日期,須要更改之前所預KEY的日期,才不會發生錯誤。

尾盤出場策略3

最後加上如下的判斷式,讓本FUNCTION可以在結算當天為1,非結算日為0。
(註: L補充,表列的方法是較完整的方式,另外結算日的判斷也可以寫函數,邏輯是(星期三) && (15號~21號) ,但延後結算日可能需要再稍微修改 )

尾盤出場策略4

J將先前撰寫的 通道突破原型進場策略 拿來作為測試的基準,首先使用固定時間於1325後出場的方式,程式碼如下。

尾盤出場策略5

績效如下圖,來回手續費共設定為800,自2005年回測至今,獲利55萬回檔約28萬,每筆交易平均賺319元。

尾盤出場策略6

尾盤出場策略7

現在我們將尾盤出場時間修改如下,在非結算日晚點出場,結算當天維持一樣25分出場。

尾盤出場策略8

其他參數與回測時間皆不變,績效如下圖所示。

尾盤出場策略9

尾盤出場策略10

可以發現獲利明顯增加35萬,MDD幾乎不太影響,平均每筆獲利增加了約200元,效果相當顯著。

這樣簡單的測試期望能提醒讀者,不要認為尾盤的出場幾分鐘沒甚麼差別,也許市場規則確實影響了交易的結果,不要怕麻煩,多花一點時間建立一個結算日期表,也許可以幫助大家多獲得一些報酬,然而本篇的測試相當的基本,實際上EOM還有許多用途,日後J將繼續介紹,讀者也可先行思考。

另外此種建立日期表的方式,也可用在交易海外事件上,透過J之前分享的 經濟數據 一文中,讀者可先尋找對市場有較大影響的事件公布日期,建立於FUNCTION中,即可回測,也許當日行情確實比其他日子更值得交易。

停損點轉向指標-SAR

SAR停損點轉向指標,或稱為拋物線型指標,是 Technical 技術分析  中很常見的一個指標,常用在設定停損點。在 investopedia 的介紹 中如下圖

SAR定義

它是移動式的跟隨著行情,當反向穿越時就是進/出場點,計算的公式如

SARt = SARt-1 + AF * ( EP – SARt-1)

其中AF為加速因子(acceleration factor),EP為極值(extreme price)
反轉條件:SARt與當天價格發生交會,即下跌波段時SARt < Hight,上漲波段時SARt > Lowt,即為反轉訊號。此時,SAR0= EP。

網路上有篇文章對於SAR指標有蠻詳細的說明,想進一步瞭解SAR可以點進

而我們在應用上,也不需要自己重新編寫指標的原始碼,SAR指標在 Multicharts 有內建函數 ParabolicSAR,訊號有 ParabolicSAR LE及 ParabolicSAR SE,兩者都可以直接看原始碼參考或修改。SAR指標可以用在進場或出場訊號,不過單單僅用在進場訊號時表現並不好,原因和一般趨勢型策略相同,在震盪區間時進出次數太多,另外SAR若套用在短時間的K線上也有同樣的問題,太容易翻單了。

而讓單一指標發揮效用的最簡易方法就是交配,把不同屬性的指標拿來結合使用,因此我們除了用較長的K線之外,還要增加些過濾的邏輯,建議是能表示趨勢的指標,例如ADX(可參考  動能指標-ADX與Momentum  此篇)。

以下提供一個SAR及ADX結合應用的程式範例,主要邏輯是當ADX小於門檻值時,就照著SAR的方向作部位,另外再加上停損停利的設定。另外,這次同樣沒直接顯示參數的數值,請有興趣的朋友自己測試。

ADXSAR_noin

加上ADX的判斷後可以有效避免區間震盪時的洗刷,在有趨勢時(ADX大於門檻)的波段,不讓訊號翻轉。例如以下的圖示,若無ADX的過濾,那麼高檔的震盪會多了許多無謂的反轉。但反過來說,也就沒翻的那麼快,或許等到ADX轉弱已經回吐獲利一大段,這些就是邏輯設計的取捨了。

高檔避免震盪進出

這樣的邏輯有以下績效。L所使用的是台指期30分K線,測試時間為2005~2013,費用雙邊設定共800。

策略績效

獲利風險比 : Profit / Drawdown 值為13.63

總交易分析

Kelly 值 : 13.3

年週期

月週期

在 損益期間的評估 上,年週期表現穩定,近兩年波動較小,獲利也較小了。而月週期看來是有不短的時間要忍受,整體看來還是正常。

損益曲線

損益曲線是挺漂亮的。以上是SAR指標的介紹及結合ADX應用,請有興趣的讀者一起動手測看看吧~

交易心理應用於程式交易 – 總和K棒濾網

在 四種常見的錯誤判斷 此篇中,J分享過我們到底如何判斷(或評估),然而在快思慢想一書中,有提到一個有趣的研究,可以讓我們應用到交易上面,也許可以有當作濾網的價值。

J將研究轉化成交易上的現象,讓我們先看這張台指期1分線圖,判斷兩個問題。

  • 請問總和實體k棒長度約為幾點?
  • 請問平均實體k棒約為幾點?

總和K棒濾網1

不知道讀者是否覺得第一個問題(總和)比第二的問題(平均)難答許多?一般常在看K棒的交易者,可能可以透過上圖大該抓得出來平均實體K也許大約3-5點,但無法馬上把整張圖的K棒長度加總計算,必須透過先想到平均再乘上總共估計約100多根K棒而得出一個總長的估計數字。

推究其原因,主要是我們的系統一(直覺辨識),並擅長處理平均數問題,但對於總合運算卻很不行,而又有相關研究發現,當我們在評估類別規模或案例數量時,總和的變相時常被忽略

如果我們常忽略,又不容易用眼睛就看出答案,我想也許會是有用的指標,就讓J來幫大家測試一下來觀察,程式碼如下。

總和K棒濾網2

利用INPUT參數KK來計算回取的K棒數(可跑最佳化)。
透過TL紀錄近40根(本例)K棒高點至低點長度的總和。
RL則紀錄若實體K為上漲,總計其上漲的總和長度。
BL則紀錄若實體K為下跌,總計其下跌的總和長度。
RR在計算,上漲總和長度佔高低點總和長度的比率。
BR則計算,下跌總和長度佔高低點總和長度的比率。

若先將簡單的TL放置在圖上,即可成下圖。
總和K棒濾網3

可簡單發現 K棒持續上升,表示K棒變長,其時間多數發生在早盤,也許是到了盤中交易量減少,使得K棒的長度減少,而透過這樣日內有周期性的現象,也許可以試著朝當沖的方向思考,因此推想早盤的方向容易是當天順勢交易的方向,而TL則是趨勢強度的指標,當指標夠強(例如突破一個門檻)才值得進場交易。當然口說無憑,眼見也不足為憑,來測試看看績效吧。

 總和K棒濾網4

利用TLBRY 把變數TIMES(本例09:00)的數值記錄下來,當作是否進場的門檻之後TL必須超過這個值,而且配合J先前寫過通道突破進場的邏輯(回憶請參考 通道突破策略 ),價格突破後進場,因此進場程式碼就改為下圖,增加一個門檻條件在突破進場之前。

總和K棒濾網5
績效如下圖,可發現不論多空單獲利都小幅減少,但空單的回檔減少了。

總和K棒濾網6

當然這樣的結果我們不會滿意,此時我們改為研究多空分開的指標RR(表示上漲總長度佔總長度的比例)與BR(表示下跌總長度佔總長度的比例)。

在使用之前,我們一樣來觀察一下他們各別畫出來的圖形如下,其中紅色是RR,綠色線是BR,可以看出當空方主導且強勢的時候BR會不斷上升,反之RR不斷下降,而當時行情則會一路往下,直到行情轉為橫盤震盪或反轉時,RR與BR將出現轉弱或反轉的現象

 總和K棒濾網7

因此J將進場條件改為如下圖所示,透過分別記錄RR的門檻值RRBRY與BR的門檻值BRBRY來當作進場濾網,之後若要於價格突破後進場,當下的RR或BR值必須先要超過9點所記錄的RR或BR值

總和K棒濾網8
績效測試如下。

總和K棒濾網9



整體勝率提高到超過50%。

總和K棒濾網10
總和K棒濾網11
總和K棒濾網12

由績效測試表可發現對於多單沒有太大的效果,僅小幅改善,但空單卻有明顯的幫助,不但改善獲利,也減少回檔風險,可能可以推論若要進場作空,K棒趨勢要夠明顯才比較容易獲利


小結,透過K棒長度的邏輯,J簡單測試了兩個濾網當作示範,似乎可以改善一些錯誤進場的狀況,而關於TL這類趨勢指標的當沖應用,讀者可以繼續延伸研究,畢竟許多現象不是很容易可以從圖中看出關係,例如若TL明顯增加,是否該進場?多空是否有差異?或TL明顯降低,是否該提早出場等。

也許有更廣的應用和策略搭配可以思考,例如不限制使用在當沖交易上,將回取K棒拉長,而當TL指標處於近期低檔或高檔,是否可以當作逆勢單的開關? 更甚TL指標是否可以搭配到選擇權策略的應用上? 等等有意思的想法,也歡迎讀者一起來思考討論,日後 J 也會繼續幫大家測試邏輯,示範如何透過增加出場條件的設計,改善績效,使得策略發展逐漸完善。