去年以來買了幾本 Python 量化投資的書都因為在忙機器學習而沒時間讀, 最近開始清倉, 讀書進度頗快. 今天在讀下面這本書時看到作者用 Matplotlib 的 bar() 與 vline() 函式來繪製 K 線圖, 覺得手刻 K 線圖很有趣, 就手癢來試試看 :
# 股票發大財-用 Python 預測玩轉股市高手精解 (深智 2021, 胡書敏)
此書的範例檔案下載網址如下 (須註冊) :
K 線圖範例在第 6-3 節, 因為這本書原為厲害國出版品, 原程式碼中 Matplotlib 使用之中文字體無法顯示 (要另外安裝字體, 麻煩), 故改為微軟正黑體, 並改寫一些變數名稱如下 :
測試 1 : 用 Matplotlib 畫 K 線圖 [看原始碼]
import matplotlib.pyplot as plt
def kbar(open, close, high, low, pos):
if close > open: # 上漲
color='red' # 紅 K 棒
height=close - open # 高度=收盤-開盤
bottom=open # 底部=開盤
else: # 下跌
color='green' # 綠 k 棒
height=open - close # 高度=開盤-收盤
bottom=close # 底部=收盤
# 繪製 k 棒實體
plt.bar(pos, height=height,bottom=bottom, width=0.2, color=color)
# 繪製 k 棒上下影線
plt.vlines(pos, high, low, color)
plt.rcParams["font.family"]=["Microsoft JhengHei"] # 字體=微軟正黑體
day=['20190422','20190423','20190424','20190425','20190426','20190429','20190430']
kbar(10.2, 10.5, 9.5, 11, 0)
kbar(10.5, 10, 10.6, 9.8, 1)
kbar(10, 10.7, 10.9, 9.9, 2)
kbar(10.7, 10.1, 10.9, 9.9, 3)
kbar(10.1, 10.2, 10.5, 9.5, 4)
kbar(10.2, 10.8, 10.8, 10.1, 5)
kbar(10.8, 11.5, 10.8, 11.1, 6)
plt.ylim(0, 15) # 設定 y 軸範圍
plt.xticks(range(len(day)), day) # 設定 x 軸的刻度
plt.title('K線圖(2019-04-22 ~ 2019-04-30)')
plt.show()
結果如下 :
哈哈, 原來 Matplotlib 也能畫 K 線圖, 但若資料為 DataFrame, 要呼叫這 kbar() 函式還得做一下資料處理, 把 OHLC 抽出來才行.
沒有留言:
張貼留言