當熟悉了歷史資料,發現有更厲害的K線,這時候就要善用工具,好好的料理資料一番,這次我們來用K線製作20MA圖吧!
本日程式碼使用:d9_kbar.ipynb
直接看Kbars
的Class資料,可以看到他的類別屬性(Class attribute)有ts
、Open
、High
、Low
、Close
、Volumn
,分別表示k線時間、開、高、低、收、量。
class Kbars(BaseMapping):
ts: typing.List[int]
Open: typing.List[float]
High: typing.List[float]
Low: typing.List[float]
Close: typing.List[float]
Volume: typing.List[int]
看到這些後,直接拿資料看最準,這次也是拿台積電(2330)的來看:
kbars = api.kbars(api.Contracts.Stocks["2330"], start="2021-09-15", end="2021-09-23")
df = pandas.DataFrame({**kbars})
df.ts = pandas.to_datetime(df.ts)
print(df.tail())
可以看到結果是:
ts High Close Low Volume Open
1329 2021-09-23 13:26:00 589.0 589.0 589.0 0 589.0
1330 2021-09-23 13:27:00 589.0 589.0 589.0 0 589.0
1331 2021-09-23 13:28:00 589.0 589.0 589.0 0 589.0
1332 2021-09-23 13:29:00 589.0 589.0 589.0 0 589.0
1333 2021-09-23 13:30:00 588.0 588.0 588.0 3606 588.0
所以永豐證的API提供的是一分鐘的k線。
運用1分K線來畫圖,看看呈現的結果如何。
首先別忘記安裝matplotlib、ipykernel
pipenv install matplotlib
pipenv install ipykernel --dev
先來看看我們的圖片,如果只接畫出來會變成怎樣。
df.plot(x="ts", y="Close")
做線圖,我們用rolling()
,這代表滾動的值,然後給予要滾動的資料長度-20筆資料-以及區間單位-1單位-,然後再用mean()
算平均,這樣就可以得到一個值囉,之後串在一起就可以畫成一張趨勢線圖(詳細可參考之前系列的文章)。
# 近20分收盤價圖
close_price_20 = df["Close"].rolling(20, min_periods=1).mean()
close_price_20.plot()
雖然是分K,但是也可以製作成日K、週K等等。他們提供還滿完整的資料,除了tick,連K線都準備好,真的還滿方便的!