NBlog_20230609使用mplfinance 打造一個互動的顯示股票線圖工具(1)

很高興在這裡。再次的跟你一起討論如何使用Python做量化交易。從這一期文章開始,會花兩期或更多的篇幅。來做一些基建的工程。因為在未來的工作當中,我們會需要大量的調閱一些股票的圖形。所以想花一些時間,來做一個簡單可以顯示股票的圖形工具。方便我們隨時的來讀取K線。它不需要像一般所熟知的商業工具;我們不需要一些花俏的功能,就只是想便捷的來調取閱讀K線,並能夠方便大家分析與討論。
基本上它調用的就是之前介紹過的Mplfinance套件。如果您對它的基礎功能還有些不熟悉,歡迎回去翻閱之前的文章。在預期上,這個工具將會顯示K線ˋ成交量。就是這樣的清爽;除了這兩樣以外,先暫時不加任何的指標功能。而所增強的部分是加入了一些針對工作需求服務的互動功能。比如嘗試方便的輸入股票代碼,以及簡單選擇顯示風格的選項。這個工具在未來幾篇文章中也會做一些修改,以期滿足我們所想要的需求。在第一階段的計劃當中,會從如何接收資料?到最終建立一個股票池。這裡包含了會建立幾個篩選股票的工具[Screen]。就讓我們慢慢的,一步一步把它建立起來吧。
今天。我們將完成的小工具應該會長得像這樣子。


 

程式碼如下,就這幾行非常的簡單。使用 Jupyter notebook完成。

import matplotlib.pyplot as plt
import pandas as pd
import os
import mplfinance as mpf
%matplotlib notebook
code = input("請輸入台灣股票代碼:")
data = yf.download(code, start = "2023-01-01", end = "2023-05-31")
mpf.plot(data,type='candle',volume=True,title=str(code),figsize=(8, 5))

這段程式碼大家應該非常容易理解。絕大部分都是在之前我們曾經使用過以及解說的。這裡有一行比較特殊的,所以在這裡提及一下。
%matplotlib notebook 因為我所使用的Python開發環境是Jupiter notebook。所以才有這段特別的程式碼。它是屬於Jupyter notebook的一個特殊指令;稱之為魔術指令。大部分這些魔術指令都是以百分比的符號%作為開頭。在這行當中。這個魔術指令是要將之後當使用繪圖指令時,所產生的圖形畫面。將以獨立的一個視窗來呈現。在Jupiter notebook的初始,設定狀態中原繪圖指令所產生出來的圖形,是內嵌在工作表當中的,而非獨立的。如果你想讓圖形的顯示恢復到原始設定當中;你可以把剛才那個魔術指令改為 %matplotlib inline 這樣便可以。把圖形的顯示,調整回原來的設定。而為什麼在這裡要做這樣的設定呢?因為將產生的圖形顯示在單獨的視窗裡。我們便可以使用許多這個單獨視窗裡的小工具,比如說來做一些圖形的縮放動作;或者將圖形儲存起來。成為一個圖片檔。這些功能都必須要在這樣的設定以下才能夠被開啟。
另外,我們加入了一個小小的互動功能。就是使用input指令。來方便輸入想要顯示的股票代碼。比如說我們想要看蘋果的股價就輸入它的代碼AAPL。假設你要看的是臺灣的股票,別忘了在代碼後面加上 .TW。例如想要看臺積電的股價走勢。就輸入2330.TW。 
在圖形的配色上面,我個人偏好喜歡這個;內定 Default風格。上漲的K線顯示為白色,下跌為黑色。多年來一直偏好喜歡這樣簡單的色彩布局。當然對許多人來說,還是習慣於一般常看見的紅色上漲綠色下跌的K線圖形。首先你可以做一個小實驗。將我們的style值改為Yahoo。如果沒有意外,將呈現一個白底的,類似於一般所常見的K線圖形。當然比較遺憾的是,這裡所呈現的跟一般的使用習慣剛好相反。是一個綠色標示為上漲,而紅色標示為下跌的K線圖形。這個原因是因為;除了我們中國人的使用習慣以外,世界上很多地方在對紅色綠色的定義上,是與我們相反的。當然我們也可以再加給幾行程式碼讓它來呈現,我們習慣了的紅色上漲綠色下跌K線圖形。修改後的程式碼如下。
import matplotlib.pyplot as plt
import yfinance as yf
import mplfinance as mpf
%matplotlib notebook
code = input("請輸入台灣股票代碼:")
data = yf.download(code, start = "2023-01-01", end = "2023-05-31")
import mplfinance as mpf
# 设置mplfinance的蜡烛颜色,up为阳线颜色,down为阴线颜色
my_color = mpf.make_marketcolors(up='r',
                                 down='g',
                                 edge='inherit',
                                 wick='inherit',
                                 volume='inherit')
my_style = mpf.make_mpf_style(marketcolors=my_color,
                              figcolor='(0.82, 0.83, 0.85)',
                              gridcolor='(0.82, 0.83, 0.85)')
mpf.plot(data,type='candle',volume=True,style = my_style, title=str(code),figsize=(8, 5))
 



mpf.plot(data,type='candle',volume=True,style = my_style, title=str(code),figsize=(8, 5)
在這一行繪圖的敘述當中。我們帶入了一些新的參數。許多是我們之前所熟悉的,但也有一個是陌生的。所以必須要簡單的來說明一下。這個新出現的參數就是Style。在其它所熟悉的參數中,比如成交量。只需給它一個True或者False;來決定成交量是否需要顯示?但是這個Style它是一個複雜的包含許多項目的參數。基本上它就是一個住在海邊的參數,管天管地的。所以我們打算在這裡只是大略的介紹這個參數的使用。在未來的任何功能需要它派上用場時,再來針對哪一項功能做介紹。就好像今天要來介紹的就是Style裡面所包含的。顏色設定的功能。



my_color = mpf.make_marketcolors(up='r',
                                 down='g',
                                 edge='inherit',
                                 wick='inherit',
                                 volume='inherit')
這個my_color裡面就是設定了這個工具在顯示K線時所需要用的顏色設定。如同前述的,這個my color是包含在Style裡面的一組設定值。
在這裡面,我們設定了上漲與下跌所代表的顏色。分別就是up的R(Red)。跟down裡面的G(Green)。然後。在edge中設定了實體的框線(這裡繼承與漲跌同色)。如果你需要的話;還有上下影線wick的顏色。最後包含了成交量顯示的時候,所依賴的顏色。有興趣的朋友可以嘗試著去改變這些設定值。你就會看到在圖形裡面所產生出來的變化。在這個例子當中,除了上漲跟下跌的顏色以外;其他的這些參數,也都是繼承了這個漲跌的顏色使用方式。在繪圖敘述的最後,我們再來看一下這個新出來的figsize=(8, 5)就字義上來看;是用來設定顯示圖形的尺寸與長寬比。也可以嘗試著去改變它,很容易地就看到改變後的效果。那麼我們的小工具開發的第一篇,就先到此為止。下一篇,我們再繼續地探討他其他能夠使用的互動功能。非常推薦去安裝Anaconda來使用它的 Jupyter notebook作為開發工具。特別是在未來當我們加入更多的互動功能之後;一些其他偏向文字頁的開發工具。恐怕就沒有辦法看到所介紹的效果。祝您早安午安跟晚安。我們下一篇再見。

留言

熱門文章