iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 2
0
AI & Data

量化交易30天系列 第 2

量化交易30天 Day2 - 繪製K線圖

  • 分享至 

  • xImage
  •  

量化交易30天
本系列文章是紀錄一位量化交易新手的學習過程,除了基礎的Python語法不說明,其他金融相關的東西都會一步步地說明,希望讓更多想學習量化交易但是沒有學過相關金融知識的朋友們,透過這系列的文章,能夠對量化交易略知一二,也歡迎量化交易的高手們多多交流。

Day1拿到股票價格之後,可以先來瞭解一下拿到的資料怎麼用,最簡單的應用當然就屬K線圖拉,因此這篇就來用Python的套件繪圖一下。

K線圖包含四個價格,分別是開盤價、最高價、收盤價、最低價,下面是兩種不同的K線

(引用自wikimedia.org)

  • 紅色的K棒(簡稱紅K) - 代表收盤價高於開盤價
  • 綠色的K棒(簡稱黑K,因為早期用黑色) - 代表收盤價低於開盤價
  • 十字線:代表當天收盤價等於開盤價,由於中間比較寬的棒棒會壓縮成一條橫線,所以整個K棒看起來會像一個十字
  • 上影線:最高價與收盤價的差距,這段越長代表空方壓力越大
  • 下影線:最低價與收盤價的差距,這段越長代表多方力道越強

Python繪製K線圖 - 使用mplfinance模組

mplfinance模組中,可以繪製不同長相的K線圖,我們就來畫一下幾種不同長相的K線圖吧!

繪製K線圖的兩個步驟

  • 使用pandas讀取時間序列資料,包含開盤價、最高價、最低價、收盤價
  • 使用mplfinance繪製K線圖

一、讀取股票價格資料

這邊可以使用任何資料來源,任何你想要的標的,只要有開高低收的時間序列資料,都可以拿來畫圖。為了讓大家都能輕鬆拿到資料,我使用開放的pandas-datareader來讀取資料。

  • 安裝pandas-datareader模組
pip install pandas-datareader
  • 串接遠端資料庫(Remote Data Access)
    由於datareader只是一個API,真正的資料庫是由專門儲存金融資料的公司擁有的,以國外的公司來說,有Tiingo、IEX...等等。而這次我會使用Tiingo的API來取得,因為它的免費方案有蠻大的額度可以使用,每月可用500檔標的、每小時500的requests、每天20000個requests。要使用TIINGO API的話,需要先去TIINGO註冊帳戶,然後它會給一個API KEY,再把這個KEY輸入下方程式碼的相對位置即可。
# 取得Google股票的價格,美股代號GOOG
import os
import pandas_datareader as pdr
df = pdr.get_data_tiingo('GOOG', api_key='YOUR TIINGO API KEY')
df.tail()

拿到的資料如下圖,有包含還原價格(還原除權息之後的價格,可以Google了解一下),一般會用還原價格作為回測或運算,會比較正確一些。

二、使用mplfinance繪製K線圖

先將資料處理成mplfinance可以讀的格式

# 將multi-index轉成single-index
df = df.reset_index(level=[0,1])

# 指定date為index
df.index = df['date']

# 取adjClose至adjOpen的欄位資料
df_adj = df.iloc[:,7:11]

# 更改columns的名稱,以讓mplfinance看得懂
df_adj.columns = ['Close','High','Low','Open']

# 抓取近20日的資料
df_adj_20d = df_adj.iloc[-20:,:]

# 繪製K線圖
import mplfinance as mpf
mpf.plot(df_adj_20d)

會得到20天的K線圖,下圖是其中一種格式。

試試另外一種格式:

mpf.plot(df_adj_20d,type='candle')

再試試最簡單的線圖:

mpf.plot(df_adj_20d,type='line')

本篇總結
這篇大概講解K線定義、讀取股票資料API、資料整理,最後繪製幾種不同格式的線圖,下一個單元會介紹K線型態。

P.S.
如果大家對於量化交易有興趣的話,我自己有上過以下這門課,課程內容從串接股市資料API、儲存至資料庫、將自己的策略轉化成程式碼、自動下單,並且可以把整個流程自動化,每天早上執行一次,一整天就不用看盤了,覺得是蠻實戰的,可以參考看看。

筆者 Sean
奈米戶投資人 / Python愛用者
喜歡用Python玩轉金融數據,從個股基本面、技術面、籌碼面相關資料,一直到總體經濟數據,都是平常接觸到的素材;對於投資,除了研究歷史數據,也喜歡瞭解市場上大家在玩些什麼。


上一篇
量化交易30天Day1 - 串接API,取得價量資料
下一篇
量化交易30天 Day3 - 分析K線型態
系列文
量化交易30天30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言