2013年9月24日 星期二

停損點轉向指標-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指標介紹 - 部落格 - 財經知識庫 - MoneyDJ理財網

 

而我們在應用上,也不需要自己重新編寫指標的原始碼,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應用,請有興趣的讀者一起動手測看看吧~

 

 

 

2013年9月23日 星期一

交易心理-錨點

 

與前幾篇一樣 ( 交易心理-可用性與捷徑 、 交易心理-認知放鬆  ) ,在說明名詞之前,先來體驗一下。

 

交易心理-錨點1


 

看過上圖後,要請問讀者兩個問題:

1. 請問今天壓力支撐在哪,交易區間大概多大?

2. 請預估明天開盤價與交易區間大概多少?

 

在回答這兩個問題的時候,你的眼睛在看哪裡? 也許第一題讓我們很直覺得去看了這張圖的高低點或實體K的高低點,而區間則為兩者相減,本題答案大約為30-40點。而第二題我們眼睛則看得是8238這個數字,透過今天收盤(也就是最新資訊)配合大概一般開高開低是多少後,就可猜測明天可能的開盤位置,再透過上一題得到的資訊推算,假設有事件影響,就估計交易區間會比今天放大,也許變成50-70點,若無特別事件,則採用原本的30-40點。

 

經過這簡單的測驗,可以發現我們透過眼睛蒐集現有的資訊,經過大腦去調整現有資訊來形成對未來的估計。而錨點就像是一種建議,當我們再考量一個未知的數量時,會採用特定的價值來估計比較,這個特定的價值就是經由連結機制在我們心理中選擇性得找出相容的證據,而系統一則習慣相信你所看到的事

 

然而經由錨點去推估未來,則常出現調整不足的錨點效應,例如在交易中,區間大小的估計,即可看出調整不足的現象,以及一般人不容易賺到錢的原因。

 

觀察下圖,如果只看黃線左邊,該天交易區間大約為25點左右,會透過這個錨點25來估計明天大約也是35點左右的區間,造成隔天一開始下跌時,心中認為今天跌40點已經算多了,猜測往下空間有限,而不敢追空。即使勇敢於破底追空,當第一根K棒為紅色時已經從高點下跌了60點,受到心理面覺得已經跌多了的影響,將難以抱持著空單到尾盤。

 

交易心理-錨點2


 

反之,若是看到今天(下圖左側)交易區間為140點,就容易因為調整不足的估計明天(下圖右側)的交易區間可能也會有100點左右,因此當隔天破底後,將認為還有許多空間可以賺而追空在底部,最後收盤才知道整天是區間不過50點的震盪盤,並沒有獲利機會。

 

交易心理-錨點3


 

錨點效應中另一個有趣的部分是,他可以計算錨點指數,以了解效應的程度。

 

藉由上述兩張圖我們來試著計算錨點指數,我們分別用兩個交易區間不同的左圖,來估計隔天(右圖),此時可稱交易區間比較大的(140點)為高錨,比較小的(25點)為低錨,而錨點指數=(高錨預估的值-低錨預估的值)/(高錨-低錨)*%,因此本例的錨點指數=(100-35)/(140-25)=56.5%

 

快思慢想書中提及,錨點指數55%,是在許多實驗中常得到的數字,而數字越大,表示錨點效用越高,從本例來看交易區間的錨點效應是高而且常見的,讀者可再想想看是否交易中有許多的預估都受到了錨點的影響,也許有不少的交易邏輯可從此來發想。

 

 

 

2013年9月16日 星期一

網站介紹(Daily FX、鉅亨網)

 

從事海外期貨程式交易的人,經濟數據公布產生的事件交易機會,將是一個不可缺少的交易概念,本篇將介紹兩個好用的網站協助讀者了解經濟數據公布,再透過公布日期規則的了解,建置自己的事件交易策略。

 

Daily FX ,透過這個中文網站(右上角可點選繁體中文),我們可以清楚的掌握到今天或特定日子的經濟數據公布,也可藉由國旗的按鈕選擇單獨觀察的國家。

 

網站介紹(Daily FX、鉅亨網)1


 

而本網站如同多數外國外匯交易網站一樣,公布了數據公布的時間、訊息的重要性、前值、預估的數值與即時公布結果,但對台灣的讀者來說,最方便的是不用換算公布時間,網站上時間就是台灣的時區

 

若尚未公布數據之前,將顯示如下圖,結果部分將持續出現偵查中,而在數據一公布即會顯示出結果。

 

網站介紹(Daily FX、鉅亨網)2


 

另可透過日期的查詢可以找出過去美國經濟數據公布的狀況,如下圖所示。

 

網站介紹(Daily FX、鉅亨網)3


 

若判斷美國非農就業人數變化對走勢影響較大,可直接點選歷史數據的按鈕觀察近期的經濟數據走勢圖,如下圖所示。

 

網站介紹(Daily FX、鉅亨網)4


 

再了解有哪些數據在公布後,若希望建置事件交易的策略,在回測上,須要在mc中建立過去歷史事件公布時間的表,而鉅亨網是大家常用的財金網站,其中在經濟指標的FAQ中就可以找到公布的規則,讀者可透過下列聯結直接進入。

 

鉅亨-國際金融-經濟指標教室

 

 

網站介紹(Daily FX、鉅亨網)5


 

而所提及的非農就業人數變化即可在就業部份找到,期公布時間為每月第一個星期五美國時間早上8:30。

 

經過了解與尋找可能影響盤勢的經濟數據後,將交易規則寫進程式碼中,若可驗證當日波動確實較一般交易日放大,即可藉此增加獲利機會,因此多結合此類外部因素影響的事件型交易策略,將能有效分散一般純價量關係所撰寫的組合風險。

 

 

 

2013年9月9日 星期一

基本出場策略

 

一般程式交易者一開始常常花時間在思考進場邏輯比較多,而例如均線交叉、通道突破等,都是直接利用下一個訊號進場,當成前一訊號的出場,例如黃金交叉買進,死亡交叉時將買進訊號直接反手做空,又或是漲破通道買進,跌破通道直接反手做空。這樣的交易特色是,沒有空手的時期,也就是認為隨時要有方向,導致在震盪盤的時候,交易次數比有先出場的策略來的多,因此本篇先介紹一些J認為若要寫出有空手時期的策略,最基本需要有的出場寫法。

 

本篇一樣採用通道突破的邏輯擔任進場主邏輯,讀者可先複習 通道突破策略 ,本篇將進場稍微增加了每日交易次數與時間的濾網,交易次數控制的程式碼如下:

 

J 基本出場策略1


J 基本出場策略2


 

利用DTTL(多單用)與DTTS(空單用)來建立一個開關,每天第一根K棒後即計算為1,當部位變化為多單或空單,則將其歸0,藉此控制減少區間過小時來回進出的狀況,因此進場的程式碼改寫如下。

 

J 基本出場策略3


 

在交易次數與時間控制下,當價格突破HH或跌破LL就進場。

 

        再透過進場濾網的限制後,此通道突破已不若原本隨時都會有部位的設計(因可能進場條件被濾掉),所以原本通道反手作多或反手作空的進場線,須另外撰寫成為出場邏輯,避免進場濾網檔掉原本通道的出場,故可如下圖般重新撰寫

 

J 基本出場策略4


 

我們簡單看一下這樣的留倉績效,如下圖。(本篇主要凸顯增加停損機只與原本策略的差異,因此參數與K棒周期並不特別提供,讀者可以自行嘗試適合自己的周期。)

 

J 基本出場策略5


 

績效有個印象後,我們開始試著增加最基本的固定停損邏輯,如下圖。

 

J 基本出場策略6



 

透過SETSTOPLOSS內建功能的使用,可以設定多空兩者分別輸多少金額停損,將多空特性不同的想法結合進去,但讀者須特別注意,若使用MP來判斷多空,則會漏掉一進場時,瞬間價格可能在當根就已經超過停損的狀況,因此特別增加一個不分多空的SETSTOPLOSS,善用只要有部位就能在K棒內產生委託的出場功能 

增加後的績效如下圖。


 



J 基本出場策略7



 
 多單明顯的改善,空單在獲利上卻減少了,雖整體的獲利上升,回檔卻變大,結果並不令人滿意,顯示只有固定停損是不夠的,接著我們來撰寫也很常用的獲利拉回出場法

 

        在撰寫獲利拉回出場時,為了避免MC計算上產生K棒內價格走勢假設的錯誤(例如在未開啟精密回測時,K棒只用開高低收4個點運算,而若當根走勢很大,在回測計算獲利拉回時,將利用該K棒最高或最低點計算,然而真實情況可能在還沒出現最高或最低點時已經達成獲利拉回出場的現象,導致高估獲利能力的狀況。)




 

因此J將不建議讀者使用setpercenttrailing與setdollartrailing等內建功能,下圖將示範如何利用自行撰寫的程式碼達到同樣的目的。  


 





J 基本出場策略8



 


透過MPH與MPL的設計,可以計算進場後最高的價位,與最低的價位,再透過變數GAINL與GAINS的調整,設定要達到多少點以上才滿足"獲利"的條件並再由TRLX與TRSX來設定拉回的百分比,於確立出現上一根K棒最高最低點後,掛出STOP單,等待"拉回"時觸碰價格即出場
 

 增加此出場法後,績效如下圖。


 




J 基本出場策略9



J 基本出場策略10






 

可以發現獲利持續增加,回檔也大幅減少,近年績效也持續創高,顯示出場的設計將明顯的影響策略表現,而本篇除了主邏輯通道得出場,另增加了固定停損與獲利拉回的出場,但實際上還有許多不同類型的出場設計,在有了本篇基礎後J將於日後介紹更多面向的出場邏輯,以提供讀者思考如何打造一個更完整的交易策略。


 
 







2013年9月7日 星期六

建立文字檔下單機 (with C#)

 

文字檔下單機是常用的自動下單接法,它一定不是最有效率的作法,但非常通用,不論是策略產生是由TS、MC、EXCEL或客製的程式,都可以在訊號產生時寫入文字檔,再由文字檔下單機處理委託送單。

 

網路上也有多種免費的文字檔下單機可以利用,或許之後可以請J再介紹一下,但套裝的總是有點用不順手,寫的太完整的感覺又很複雜,所以L就來紀錄文字檔下單機的設計架構,若有朋友嘗試自己設計一個文字檔下單機,也是個起步的參考。

 

設計程式一開始當然就是確認需求,還有定義好文字檔的格式。這格式設計有很多種,例如

  1. 方向,口數,價位 (“Buy”, ”1”, “8000”) (買一口8000)

  2. 方向結合口數,價位 (”2”, “8000”) (買兩口8000)、(“-1”, ”7950 ”) (賣一口7950)

  3. 方向結合口數 ,(“1”) (買一口)、(“-3”) (賣三口)

  4. 給部位OI ,(“1”) (調到買進一單位)、(“-1”)(調到賣出一單位)、(“0”)(調到無部位)


 

如果文字檔沒寫入價位,那麼下單機就要能收行情,不然就只能丟市價單很奇怪,另外依照不同的文字檔定義,下單機也要設計不同的判斷邏輯。資料給的越少,下單機要處理的事情就越多,那我們就來看給最少的第四種為範例,文字檔只寫策略現在是0、1、-1,這三種狀態。

 

繼續確認需求,這個下單機對於使用上的功能希望如下:

  1. 設定連結下單的帳號

  2. 設定文字檔所在路徑

  3. 設定讀取的文字檔

  4. 設定策略的口數倍數

  5. 設定下單的滑價點數

  6. 設定下單機開啟/關閉

  7. 目前策略狀態以燈號顯示

  8. 策略進出紀錄


 

內部要作到的功能如下:

  1. 登入帳號

  2. 收取行情並顯示

  3. 判斷文字檔後產生委託資料及送出

  4. 寫出訊號紀錄


 

以上,就先來刻介面,如下圖展示的範例:

 

TXTOrder


 

介面各功能如需求所述就開始寫程式吧,唯一的按鈕[登入並啟動],要寫的程式大致是

 
private void buttonLogin_Click(object sender, EventArgs e)
{
FN1 = textBox1.Text;
Algo1 = System.IO.File.ReadAllText(@"L:\"+FN1+".txt");
changeColor();
Commodity = textBoxCommod.Text;

//登入並訂閱行情
api.login("XXXXX", "XXXXXX", "XXX.XX.X.XX");

if (api.loginStatusFlag == true)
{
labelLogin.Text = "登入成功";
api.regItem(Commodity);
}
else
{
labelLogin.Text = "登入失敗";
}
/*
這邊寫把行情顯示到介面的Label上
....
*/

//啟動新執行緒讀取文字檔動作
Thread ProcessPSTD = new Thread(ProcessPS);
ProcessPSTD.Start();
}

 

其中一開始的

FN1 = textBox1.Text;

Algo1 = System.IO.File.ReadAllText(@"L:\"+FN1+".txt");

就是先到設定路徑去讀取文字檔,所用到的方法是System.IO.File.ReadAllText,然後將文字檔的內容設定到Algo1這個字串(別忘了它只有可能是三種狀態0、1、-1),這是第一次讀取文字檔的狀態,之後文字檔的變動會要依據這個Alog1字串變數。

 

2013年9月3日 星期二

交易心理-可用性與捷徑

 

在你目前的認知下,先在心中回答下列2個問題


  1. 出現長上引線後,作多容易賺錢還是做空容易賺錢?




  2. 賺錢機率有多高?




 


現在不論你上2個答案為何,看看下圖,再次思考同樣上2個問題

 

 

可用性與捷徑



 

你是否有改變心意? 如果先不論真實上到底答案是什麼(雖然J很久以前有做過簡單測試,我的答案會是往上容易賺錢,但勝率低於五成,如同一般順勢交易,但本篇重點不在此,因此暫時不詳細提供驗證資料,建議讀者可以嘗試看看。)如果你的答案,從做空容易賺換成作多容易賺,這樣整個過程中你就使用了3次可用性偏見與捷徑思考,現在我們一一來分析整個思考過程。

 

 

第一個問題,我們容易使用到可用性偏見來思考他,當這問題一提出,我們便開始在腦中思考過往經驗,還有課本上或名師書籍中,教導我們K棒型態如果出現長上引線,表示可能出現假突破,上檔賣壓沉重,可能出現回檔壓力,因此應該往下做比較有機會賺錢,而我們也常常在交易中看到轉折點時,可以容易觀察到這個現象,所以最後我們選擇了我們容易思考到的結果,即可用性偏見的特色-用一個最容易進入心中的答案替代思考許多複雜的事。

 

 

第二題,機率判斷,我們會將這個問題簡化到可以回答的程度,而做法就是去判斷簡化後的事情。這時透過捷徑思考,這種系統一的能力,我們能藉由替代問題來思考-我常不常看到長上引線後出現下跌? 而此時回憶的流暢程度就決定了機率高低,如果很容易想到,你可能就給的機率比較高。

 

 

第三個問題,更明顯的藉由剛剛看的圖,來影響你回想長上引線與上漲下跌的關係,如果你原本的在這方面的回憶不夠清晰,就更可能受到剛剛或最近發生的事情影響,因為這個長上引線,之後上漲的狀況,最容易進到你心中,所以透過這樣可用性的思考,你就會偏向選擇上漲作為答案,機率也會比真實或你原本預估高。

 

 

然而同樣的狀況屢見不顯,例如最近常常出現,美股大跌卻開低走高,有人會說這是打第幾隻腳,然後出現這種狀況後,近期將造成許多散戶出現一種現象-開低就更想做多(雖然開低散戶本來就喜歡作多,所以只能說程度可能更為增加。)因為這種狀況最近太容易想到這樣的結果,而導致常常可以聽到作交易的人過類似的話:行情總是不如預期,獲利總在最不確定的時候發生。

 

 

再來討論捷徑受到情緒喜好的影響,書中稱之為情意捷徑。

 

 

主要在探討我們透過捷徑思考來快速回答替代的問題時,受到我們本身對那件事的喜好而產生影響,例如在交易上,常可聽到有人是只喜歡做多,從不做空,而推究其原因多可發現其實是情意捷徑影響了我們的思考,也許是日常生活或交易中多數人買進東西並持有,是較賣出東西容易且習慣的多,而這樣的偏好導致我們認為作空(希望價格往下)是件危險也不開心的事情,因此容易忽略作空可能導致的收益,而成為一個只多不空的交易者。

 

 

再一個常見的例子,買低會賺還是追高會賺?這個問題也許能用情意捷徑角度思考為何多數人喜歡買低而不愛追高,也許一般我們思考買進期待上漲,成本當然越低越好,追高形同現在不想買,漲上去才想買,成本是往上增加,沒有人喜歡,而這種喜不喜歡的偏好就影響了下一層次的思考,認為追高買的高,所以風險高(常聽到有人說要居高思危...),因此追高比較不會賺錢,完全忽略去思考追高可能的獲利機會與延續性是大於低買。

 

 

最後,可用性偏見也影響我們對交易風險的態度-我們不是太看重風險,就是完全忽略它,沒有中間地帶。例如最近常常出現漲跌停,將使我們特別重視漲跌停對我們交易的影響,但難道最近的事件真的影響了長期出現漲跌停的機率?也許以指數期貨來說漲跌停常態性來看是本來就有出現的機率,但我們卻容易在最近有發生的時候才開始特別在意,進而調整交易行為,然而像最近幾年很久沒發生漲跌停,就容易忽略這樣的留倉風險實際上長期是一樣的。

 

 

        本篇J舉了一些交易上的小例子,讓讀者可以透過不同的方式思考自己的交易是否受到可用性與捷徑的心理因素影響了決策? 也許換個角度思考一些原本認為理所當然的事情,或利用程式交易去驗證決策,可以大幅減少這些現象,增加交易的獲利性。





2013年8月29日 星期四

選擇權評價-BS MODEL (with Excel)

 

選擇權的評價是策略的最基礎,瞭解各項因素對選擇權價格的變動後,我們才能進一步討論各項因素的實際運用。我們一開始需要先來應用Black–Scholes option pricing model,經過實際的計算瞭解後,再來看Greeks和波動率,再來才是各種價差和組合策略。

 

關於選擇權的評價和解說,網路上的資料已經非常豐富,各項變動因素說明的文章也很容易找到,所以為了有些不同的貢獻紀錄,L將偏重在計算函數和程式介紹上面,實作上以EXCEL VBA和C#為主。

 

另一方面,大部份人看到評價公式後大概就已經懶惰了,但光是看看公式和解釋,其實不如實際寫一次、算一次來的有體會,而且實際上真的很容易,如果對於選擇權有興趣卻沒計算過的朋友們,請跟著一起作看看吧。

 

首先就看看公式的定義,可以到這兩個網址先大略看看假設和定義,有興趣再詳讀內容

Black–Scholes

Black-Scholes期權定價模型

 

推導和證明就算了吧,如果有要念財金所的話倒是會出考題,我們只要會用就好了,所以只要看Call和Put的價格是這樣的:

 

CP


 

其中d1和d2是這樣的:

 D1D2


 

 

參數是這樣的:

PA


 

所以我們知道計算價格需要五個變數,

s 現貨價格,我們拿來算台指選的話,就拿台指期市價當作s

k 履約價格

t 距離到期日的時間,要年化

r 年利率

v 年化波動率

 

放到excel上寫寫看了,如下圖,

 

excel


 

s,就是期貨價,假設7750。

k,就是履約價,假設我們要算的是7700的call和put。

t,年化的到期餘日這個地方要注意的是有人一年用日曆日365,也有人一年是用工作日255左右,L自己是慣用工作日的算法。到期餘日就是今日和到期日的差距,可以利用excel的函數 NETWORKDAYS()來計算,以圖中例子就是=NETWORKDAYS(C27,C28)。今日也可以用函數來包,例如=DATE(YEAR(NOW()),MONTH(NOW()),DAY(NOW()))。算出到期餘日為16後,拿來除255,就得到年化的t = 0.062745。

r,年利率,拿定存利率一年約一點多%,以1%為例。

v,主觀的波動率,波動率是重要的主題,下篇再以歷史波動率和隱含波動率一起進行介紹紀錄,這邊以15%為例子。

 

有了這些參數,就可以算價格了,Call算出來理論價是145.23,Put是90.4。用函數 =calloption(F25,F26,F27,F28,F29),這個calloption就是我們要寫的function囉,打開vba或直接在excel按ALT+F11,貼上這段程式碼

 
Function calloption(s, k, t, r, v)

calloption = s * Application.NormSDist(cal_d1(s, k, t, r, v)) - k * Exp(-(r * t)) * Application.NormSDist(cal_d2(s, k, t, r, v))

End Function

Function putoption(s, k, t, r, v)

putoption = k * Exp(-r * t) * Application.NormSDist(-cal_d2(s, k, t, r, v)) - s * Application.NormSDist(-cal_d1(s, k, t, r, v))

End Function

Function cal_d1(s, k, t, r, v)

cal_d1 = (Log(s / k) + (r * t) + (v ^ 2 * t / 2)) / (v * Sqr(t))

End Function

Function cal_d2(s, k, t, r, v)

cal_d2 = cal_d1(s, k, t, r, v) - v * Sqr(t)

End Function

 

稍微再解釋一下,公式的N(),就是常態分配的機率,可以用NormSDist()來計算,sqr()就是根號,d1和d2也都各自寫了function,也都是照著公式直接拿進來寫,一個一個填就完成了。

 

如果跟著作的話,現在就可以試看看這幾個參數的變動對於選擇權價格的影響囉。

 

接著說明一點,這是不包含股利的評價模式,對於股票選擇權不適用,算指數選擇權剛好。

 

我們現在是帶入五個變數計算出理論的選擇權價格,實際上市場本來就有市價,那麼五個變數裡只要知道四個,就可以求出剩下來那一個。所以我們有選擇權市價、期貨市價、要求的履約價、到期日、利率之後,就可以算出波動率了,是的,它就是隱含波動率,下篇再繼續寫程式實作它。 ( 隱含波動率 (with EXCEL VBA、C#) )

 

 

2013年8月21日 星期三

交易心理應用於程式交易 - 總和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 也會繼續幫大家測試邏輯,示範如何透過增加出場條件的設計,改善績效,使得策略發展逐漸完善。

 

 

 

 

2013年8月20日 星期二

四種常見的錯誤判斷

 

在開始解釋我們到底如何判斷(或評估)時,J將舉一些常碰到的狀況,來思考我們如何判斷,請讀者依序往下閱讀,並試著思考與記得被問問題後冒出的第一個念頭。

 

1.請問裕隆這檔股票,今年底的目標價是多少?


 

這時候第一個冒出的想法,可能是裕隆不熟悉? 或就是那家做汽車的。股價現在多少? 不知道?  如果硬要猜,就開始會想到,這家公司經營者好像蠻有型的? 汽車聽朋友說好像還不錯?最近常在路上看到?

 

透過系統一的幾種能力(特色),我們可以做出判斷。

 

例如利用心智發散性(已經不是在回答本來問題,而不自覺想到其他問題)與月暈效應(因為經營者有型,所以公司應該不錯,股價應該好),最後結合強度配對(一種配對量表在我們心中自動運算,將經營者外觀好看程度或汽車好用度,轉換成財報好壞或股價強弱程度)與因果關係的聯結,推導出因為以上種種原因,所以股價應該是多少。

 

2.如果說某家公司預估今年EPS為2.3,則今年底的目標價是多少?


 

要回答這個問題,有受過財務訓練或是有經驗的交易人,這時就習慣性的使用了捷徑這個系統一的能力,想利用本益比乘上EPS的方式來計算股價,然而實際交易上並不能完全利用簡單的公式得出今年底合理的目標價,只是前面的敘述,讓有練過的讀者用了簡單的方法,回答了一個其實很困難的問題

 

然而,這個過程中J並沒有告訴大家這是哪一類的產業,或是哪一家公司,所以如果硬要判斷本益比,並真的得出一個數字答案,這時就要用上可用性偏見這個系統一的能力,依照答案進入我們心中的難易程度或頻率,讓我們快速的回憶,並得出最常被提及或印象最深刻的答案,當作台灣公司平均的本益比。

 

3.下圖是某家公司的日K線走勢圖,請問今年底的目標價是多少?


 

交易心理判斷1


 

透過圖片,可以看出一個上漲趨勢,可以看出目前的價格,而此時,各位讀者的判斷已經受到「錨點效應」所影響,因為資訊有限,形成利用既有的數字進行調整的現象例如現在價格100左右,在配合已經上漲後壓回的狀況,所以估計年底大概可能也落在高檔120-80之間。

 

但實際上J並沒有說,這張圖就是今年以來的K棒,實際上這圖是2011/8-2012/5的鴻海日線圖,這邊反映出了認知放鬆的現象 ( 參考 交易心理-認知放鬆 ),與判斷信任感的問題,我們很容易可以從外觀或人的行為語言判斷是否要信任這個人,而在目前所有的發文中,J稍微有營造出一些與讀者間的信任感,所以將導致直覺得認為,提供的資訊就是跟你想的一樣。(當然J是不會欺騙讀者的,這裡只是為了舉個小例子。)也順道提醒大家在閱讀任何文章或任何資訊的時候,一定不要讓自己的認知太過放鬆,如果交易對你是件重要的事,那千萬要自己動手驗證每一件事情。

 

本文中所提及的「因果關係聯結」、「捷徑」、「可用性偏見」、「錨點效應」都是我們在使用系統一做判斷上常有的現象,因此也造成我們許多判斷上出現錯誤的情況。之後J將一樣利用交易上所碰到的事情來詳細舉例,一起來思考並驗證交易上出現的現象,試著尋找出一些獲利的方法與原因。

 

 

 

 

 

2013年8月19日 星期一

通道突破策略

 

當沖突破是 Technical 技術分析 中很重要的一部份,其觀念在於市場價格穿透了之前的價格壓力或支撐,繼而形成一股新的趨勢,而我們的目標即是在突破發生時能夠確認並建立部位以獲取趨勢的利潤。

 

一般比較單純的當沖突破策略,常利用近幾日內價格計算交易區間,當今日價格一上漲突破即買進,或價格一跌破即放空,這樣的交易區間,可以是固定的,也可以是變動的,當上下兩條突破線連結起來即形成一個價格通道,最常見的指標就是布林通道(Bollinger Band),L曾利用他示範過逆勢的交易策略,可參考 逆勢策略-Bollinger Band

 

創建一個價格通道,方法有無限多種,而通道突破策略又是一個可能可以長期獲利的方法,因此本篇J將利用最單純的方法建立通道,驗證台指期短線當沖中是否可以這樣獲利? 程式碼如下:

通道突破策略1


 

首先定義HL為一個INPUT參數,主要目的是,我想知道要回取(參考)多少K棒形成的高低點比較適合交易。

 

利用FOR迴圈與IFF條件,往回計算最高的值存入HH,最低的值存入LL並且每根K棒算完後,下一根又清除所有計算結果,再以當時的K棒位置往回從算HL(本例為80)根K棒,形成一個不斷計算最近80根K棒高低點的通道

 

若將其寫在指標中,即可做出如下的圖形,我們可藉由觀察這樣的圖形,思考是否值得進行下一步當沖突破的進出場撰寫。

 

通道突破策略2


 

從上圖來看,可發現當日內行情往一個方向移動,每次重新計算時,當根K線即是近80根的最高或最低,而其走勢似乎又有連續性,然若無接觸邊界的日內行情,則最後當日行情通常較小,屬於區間震盪的機會較高。

 

再看似有機會區分出強勢突破行情或日內整理盤時,我們著手進行交易訊號進出場的程式撰寫部分。

 

通道突破策略3


 

簡單的寫上要進場交易的時間,通常會保留一些時間給行情發展的機會,所以不會讓策略到最後幾分鐘還可以進場,而又因最後出場時間到了馬上要出場,出現沒有太大效益的交易狀況。

通道突破策略4


 

進場有受時間限制,所以出場要另外拉出來寫,以免受時間限制而無法停損

通道突破策略5


 

尾盤的出場,J覺得值得多花至少一篇來分享一些方法,本篇為了方便測試當沖的績效,我們可以使用內建SET指令,將最後收盤價當作出場價格。但實際交易中,請切記這個指令是不能讓你在當天出場成交的,當丟單的時候,已經收盤了,變成隔天的早上開盤才會成交出場,無法達成當沖的交易目的。

 

撰寫好後,就可以在圖上看到部分的交易狀況如下

 

通道突破策略6


 

 

績效圖如下,回測時間2005/1-2013/8,手續費與滑價設定總共來回800。

 

通道突破策略7


通道突破策略8


通道突破策略9


通道突破策略10


 

 

從簡單的測試來看,這樣的通道突破在台指期當沖上,是可以獲利的。雖然這樣簡單的邏輯,在當沖的回檔上(MDD)相對來說算大的,而近年的獲利也不佳,但因邏輯單純,交易次數夠多,若能增加一些濾網,適當的減少一些可能會虧損的交易,即可增加獲利也減少回檔的幅度。

 

後續,J將利用這樣的簡單進場邏輯,透過每個小細節的改善,讓這個策略成為一個更完善,風險報酬比更好的策略,也期望透過這樣一步一步的分享,了解在程式撰寫中除了找新邏輯以外,許多小地方其實大有文章,多一點小嘗試,也許會發現讓績效大幅改善的方法