今年開始跟著股票老師學習「技術分析」已經有半年的時間(相關筆記整理在此)。會開始學習「技術分析」是因為去年研習量化投資方面的線上課程時發現到技術面似乎不只是指標的「黃金交叉」或「死亡交叉」那麼簡單,在於驗證過程中察覺指標的交叉有時候會出現一些無效的買賣訊(後來才知道在「盤整」的時候的現象)。並因自己是學過AI的軟體工程師,在股票投資過程中會以Jupyter Notebook做為股票投資筆記;然後嘗試著將股票老師在看盤軟體上所畫的趨勢線或型態用Python程式「復現」,以做為紀錄並從中學習。因此本次參與鐵人賽的內容可以說就是我在這半年期間學習股票投資的筆記與所撰寫的程式總整理。
「技術」一詞在股票市場的應用具有獨特含意,與一般字典的定義有所差異,這個用語指的是研究市場本身的行為,而不是研究市場所交易的東西。技術分析採用圖表的形式記錄某檔股票或大盤指數的交易資料(如價格變動、成交量),並據以推測未來可能的趨勢。當然技術分析並不只用於股票市場,這是一個通用的工具可以用在任何的金融商品(如期貨、外匯、加密貨幣...等);但在本次參賽內容只會討論台股。
技術分析主要分為以下兩個體系:
「技術指標」又稱為指標學派,包含移動平均線、KD指標、MACD指標...等。通常來說技術指標是客觀方式,因此易於「程式化」並常用於「量化交易」或「程式交易」中。
「技術型態」又稱為形態學或圖形學派,以人眼觀察圖表(如Day5的K線圖)找出趨勢或型態。而型態本身是由「轉折點」(這在Day9會談到)與「趨勢線」(這在Day8會談到)所組成的,而這些組成元素都由主觀認定並依賴於過往分析之經驗;因此可能發生每個人看法各異甚至同一個人在不同時間會有不同看法。所以很難或無法「程式化」,接下來會討論如何將主觀性質進行客觀化。
技術分析在型態或部分指標特性是屬於主觀性質,很難或無法直接由程式處理,因此有兩種方式進行主觀性質客觀化程序:
方式一:將在看盤軟體繪製的圖形與線段以人工方式轉換成數據
方式二:利用演算法以自動化方式來找尋或識別型態
方式一就是透過肉眼(或使用Day9的尋找轉折點函式來輔助)找到關鍵轉折點數據,再將數據傳遞給程式以繪出趨勢線或型態於K線圖上。基本上這種方式在需要在已經標註好的K線圖才有辦法使用。但因為本次參賽許很多案例是用股票老師標好圖形與線段的K線圖,所以這種方式可能會蠻常出現在之後的程式實作的案例中。但這個方式有以下問題:1. 每次股票老師畫好後就要人工作方式做一次處理(很花時間與眼力);2. 股票老師有時候畫的線段或圖形並不那個精準,因此需要用試誤法來找出合適的線段與圖形。
以下是方式一的案例,來自一張股票老師K線圖,該圖上有一條手繪的上升趨勢線:
下圖則是以人工方式設定轉折點後使用Python程式繪製上升趨勢線:
在Day8會解說這個方式並進行程式實作。
方式二就是利用演算法來找尋或識別型態(這在Day14會討論到),或自動繪製趨勢線(這在Day9會討論到)。不過問題是有些參數還是需要人來決定,並且有時候人眼看得到型態但使用演算法卻識別不出來。
以這兩個方式進行主觀性質客觀化在後續課題的程式實作中都會碰到。接下來Day2將說明程式設計前的準備工作,Day3則會說明參賽內容相關的技術分析課題。