A lightweight K-line (candlestick) plotting tool with matplotlib and mplfinance.
Project description
📈 kbar
kbar 提供一個簡單的 KBar 類別,專門用來繪製金融 K 線圖(candlestick chart)。
它是 mplfinance 的輕量級封裝,並額外支援:
- 🔹 內建成交量副圖(volume)
- 🔹 自訂技術指標副圖(例如 RSI、MACD)
- 🔹 自訂疊圖(例如 SMA、均線)
- 🔹 自動設定中文字型(避免亂碼)
🚀 安裝
pip install kbar
🛠 匯入
from kbar import KBar
# 或
import kbar
📊 使用教學
1️⃣ 準備股票價量資料(以 yfinance 為例)
import yfinance as yf
df = yf.download('0050.TW', start='2024-07-01', end='2024-08-21', auto_adjust=False)
# 轉換為單層欄位名稱(避免多層索引)
df.columns = df.columns.map(lambda x: x[0])
2️⃣ 繪製簡單的 K 線圖
kb = KBar(df)
# 或 kb = kbar.KBar(df) 若使用 import kbar
kb.plot()
3️⃣ 繪製含成交量的 K 線圖
kb = KBar(df)
kb.plot(volume=True) # 成交量副圖會顯示在 panel=1
4️⃣ 添加自訂副圖(例:RSI 指標)
from talib.abstract import RSI
# Ta-Lib 需要欄位小寫
df.columns = [c.lower() for c in df.columns]
rsi = RSI(df)
kb = KBar(df)
kb.addplot(rsi, panel=2, ylabel='RSI') # RSI 畫在 panel=2
kb.plot(volume=True)
5️⃣ 繪製內建均線(mav)
kb = KBar(df)
kb.plot(mav=5) # 繪製 5 日均線
# kb.plot(mav=[3,5,7]) # 繪製多條均線
6️⃣ 添加自訂疊圖(例:SMA 均線)
from talib.abstract import SMA
df.columns = [c.lower() for c in df.columns]
sma3 = SMA(df['close'], timeperiod=3)
sma5 = SMA(df['close'], timeperiod=5)
sma7 = SMA(df['close'], timeperiod=7)
kb = KBar(df)
kb.addplot(sma3, panel=0, color='blue', width=1)
kb.addplot(sma5, panel=0, color='orange', width=1)
kb.addplot(sma7, panel=0, color='green', width=1)
kb.plot(volume=True)
📚 API 文件
class KBar
封裝 mplfinance,提供簡化的 K 線圖繪製與副圖管理。
🔹 建構子
KBar(df)
- df (
pandas.DataFrame):必須包含以下欄位:Open: 開盤價High: 最高價Low: 最低價Close: 收盤價Volume(可選):成交量
🔹 方法:addplot(data, **kwargs)
添加自訂副圖或疊圖。
- data (
Series或ndarray):要繪製的資料 - kwargs:傳遞給
mplfinance.make_addplot()的參數,例如:color:線條顏色width:線條寬度panel:放置的圖表區(0=主圖,1~9=副圖)ylabel:副圖標籤
🔹 方法:plot(**kwargs)
繪製 K 線圖,可同時顯示副圖與疊圖。
- kwargs:傳遞給
mplfinance.plot()的參數,例如:volume:是否顯示成交量副圖mav:均線(整數或整數清單)returnfig:若True,回傳(fig, axes)
📘 範例
import yfinance as yf
from kbar import KBar
df = yf.download("0050.TW", start="2024-08-20", end="2025-01-20")
df.columns = df.columns.map(lambda x: x[0])
kb = KBar(df)
kb.addplot(df['Close'].rolling(5).mean(), color='blue', width=1)
kb.plot(volume=True, mav=5)
📦 依賴套件
mplfinancematplotlibpandasnumpypyarrow(pandas 內部需要)
📝 授權
MIT License
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
kbar-0.1.5.tar.gz
(9.9 kB
view details)
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
kbar-0.1.5-py3-none-any.whl
(7.9 kB
view details)
File details
Details for the file kbar-0.1.5.tar.gz.
File metadata
- Download URL: kbar-0.1.5.tar.gz
- Upload date:
- Size: 9.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.10.11
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8b729d3f6497df3e6c76d0ce569c7f31c7b61dd26314fbafbe78108112bc69db
|
|
| MD5 |
8f1e00a9d7665684017541bb528972a8
|
|
| BLAKE2b-256 |
7d55a3361d9c3dfd292e80a2b94557e806efed8c98e17ffdbfe8c0ca945c6cee
|
File details
Details for the file kbar-0.1.5-py3-none-any.whl.
File metadata
- Download URL: kbar-0.1.5-py3-none-any.whl
- Upload date:
- Size: 7.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.10.11
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
44ac8c14ab82cd787d617fe62a3a5a09dafc8f5409f2161f2fbf0fe691edf5f0
|
|
| MD5 |
8af67d2523c8094e3c17db79156c6cd7
|
|
| BLAKE2b-256 |
f838d320cc08d5a60dacddf17567c51d79ad9546dc9fb81e51511f78035d3ddd
|