iT邦幫忙

1

量化交易 X 跨界金融 | EP.2 股市資料視覺化---K線重疊指標

  • 分享至 

  • xImage
  •  

前言


從本章節開始,將依照技術指標的類型或方向來進行分類,並在之後一一分享,內容將著重於介紹技術指標的用處以及視覺化的呈現,必須強調的是,技術分析理論並非無懈可擊,也因此不能作為投資的唯一依據,應廣泛參考不同類型的分析方法,選擇自己最熟悉的操作模式,並於投資前審慎考量,來避免落入賠錢的窘境當中

本章節的Google Colab筆記本連結:https://colab.research.google.com/drive/1GtXBxm0KSmcolr2C3VG9a9ppVLPmPah8?usp=sharing

前情提要【EP.1 部署股票搜尋器,獲取上市櫃股票資訊

EP.2 股市資料視覺化---K線重疊指標


兩分鐘帶你認識“均線”

本章節作為這系列技術分析文章的開端,首先介紹的就是投資人很常使用的移動平均線,也就是俗稱的均線,能夠作為投資人分析股市趨勢、進出場時機以及交易策略的判斷依據,例如:短週期均線向上超越長週期均線時,常被視為多方訊號;短週期均線向下穿越長週期均線時,常被視為空方訊號,因此本節將整理四種類型的均線如下表,並分享相關的應用方式。

均線名稱 計算方式
簡單移動平均線 (SMA) 直接計算收盤價的算術平均值
指數移動平均線 (EMA) 利用當前收盤價與前一根K線進行計算,呈現指數型遞減,以指數平滑方式更新當前的EMA值
加權移動平均線 (WMA) 給予個別天數不同的權重進行計算,呈現線型遞減,計算最終收盤價的WMA值
考夫曼自適應移動平均線(KAMA) 以當期收盤價格與前一期KAMA進行計算,結合價格軌跡效率與迭代運算

Ta-lib技術指標套件

由於Ta-lib並非Python的官方套件,因此需額外進行安裝作業,這邊提供的是Colab的安裝方式,其餘的安裝指南可至開發者網頁查看

!wget http://prdownloads.sourceforge.net/ta-lib/ta-lib-0.4.0-src.tar.gz
!tar -xzvf ta-lib-0.4.0-src.tar.gz
%cd ta-lib
!./configure --prefix=/usr
!make
!make install
!pip install Ta-Lib

Ta-lib的API串接共有兩種,且呼叫方式與輸入值不同,需要特別注意

  • 抽象型態API(abstract):輸入由K線參數組成的DataFrame,須包含open、close、high、low、value五個欄位,欄位名稱皆需小寫,且值為float,或是直接輸入所需的參數陣列即可
from talib.abstract import *
  • 函數型態API(function):僅接受所需的參數陣列
import talib

mplfinance金融數據可視化套件

mplfinance 是專門用於金融數據的可視化分析的套件,其中有各種彈性化的設定,有機會的話之後會另外撰寫一篇文章,詳細說明mplfinance各式各樣的功能與使用方式

!pip install mplfinance

我們以mplfinance為繪圖核心,設置一個chart()的類別,以便後續進行圖表的可視化操作

  • def TA() 為技術指標的繪圖方法,傳入指標資料、繪圖位置、繪圖類型、顏色
  • def Show() 為輸出圖表的方法,將K線資料與子圖列表中的技術指標圖合併印出
# 繪製圖表
class chart():
    #建構式
    def __init__(self,K_line):
        self.K_line = K_line #K線資料
        self.axlist = [] #子圖列表
    #方法
    def TA(self,data,panel,type='',marker='.',color=''):
        ax = mpf.make_addplot(data, panel=panel, type=type, marker=marker, color=color) 
        self.axlist.append(ax)
 
    def Show(self):
        color_set = mpf.make_marketcolors(up='red',down='green',
                                          edge='inherit',
                                          wick='inherit',
                                          volume='inherit',)
        style_set = mpf.make_mpf_style(marketcolors=color_set,
                                       figcolor='(0.82, 0.83, 0.85)',
                                       gridcolor='(0.82, 0.83, 0.85)',)
        mpf.plot(self.K_line, 
                 type='hollow_and_filled', 
                 style=style_set, 
                 volume=True, 
                 addplot=self.axlist,
                 update_width_config=dict(line_width=0.7,candle_width = 0.8),
                 figsize=(20, 8))

繪製均線與技術分析

本次分析以2022-07-01~2022-12-30的台積電為例,首先將全部欄位名稱轉為小寫,接著將表格內的date設置為index,並替換部分欄位的名稱,以符合Ta-lib套件的設定

data.columns=[ i.lower() for i in data.columns ]
data.index = pd.DatetimeIndex(data['date'])
data.rename(columns = {'max':'high', 'min':'low','trading_volume':'volume'}, inplace = True)
簡單移動平均線(SMA)

簡單移動平均線,是由各收盤價的平均值直接計算而成,沒有添加權重的概念,使用函數SMA(資料,時間週期),協助計算簡單移動平均的數值,其中的時間週期可自由設定,例如5日、10日、20日等,並將計算結果存入變數當中,接著使用chart()類別與其中的方法,分別添加資料與sma_5sma_20兩項指標變數,透過Show()繪製含有指標的K線圖

sma_5=SMA(data,timeperiod=5)
sma_20=SMA(data,timeperiod=20)

fin_chart = chart(data)
fin_chart.TA(sma_5,panel=0,type="line",color="black")
fin_chart.TA(sma_20,panel=0,type="line",color="blue")
fin_chart.Show()

https://ithelp.ithome.com.tw/upload/images/20230109/20156740VXLsRUoVUu.png

指數移動平均線(EMA)

指數移動平均線,會依據K線的距離時程給予不同的的權重,越接近當天的權重越高,因此相較於SMA,更能反映出近期的股價走勢,當行情出現反轉情勢,EMA的反應速度會比SMA來的更快,使用函數EMA(資料,時間週期)

ema_5=EMA(data,timeperiod=5)
ema_20=EMA(data,timeperiod=20)

fin_chart = chart(data)
fin_chart.TA(ema_5,panel=0,type="line",color="orange")
fin_chart.TA(ema_20,panel=0,type="line",color="gray")
fin_chart.Show()

https://ithelp.ithome.com.tw/upload/images/20230109/201567404jfJu8l6OB.png

加權移動平均線(WMA)

加權移動平均線,會依據K線的距離時程給予不同的的權重,越近期的權重越高,與EMA不同的是,WMA呈現線性遞減,EMA為指數遞減,使用函數WMA(資料,時間週期)

wma_5=WMA(data,timeperiod=5)
wma_20=WMA(data,timeperiod=20)

fin_chart = chart(data)
fin_chart.TA(wma_5,panel=0,type="line",color="Brown")
fin_chart.TA(wma_20,panel=0,type="line",color="blue")
fin_chart.Show()

https://ithelp.ithome.com.tw/upload/images/20230109/20156740lDislOmnFc.png

考夫曼自適應移動平均線(KAMA)

考夫曼自適應移動平均線,由當期收盤價與前一期KAMA計算而成,與EMA計算方式類似,區別在於KAMA的權重值會受到效率比的影響而浮動,所謂的效率比是用來衡量均線的變化態勢,越接近1表示越平滑,代表明顯的多或空頭走勢;反之則代表曲折,呈現劇烈的盤整波動現象,使用函數KAMA(資料,時間週期)

kama_5=KAMA(data,timeperiod=5)
kama_20=KAMA(data,timeperiod=20)

fin_chart = chart(data)
fin_chart.TA(kama_5,panel=0,type="line",color="purple")
fin_chart.TA(kama_20,panel=0,type="line",color="red")
fin_chart.Show()

https://ithelp.ithome.com.tw/upload/images/20230109/20156740XePmol3cxY.png


圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言