SkillHub

get-stock-line

v1.0.0

获取大A股股票和指数历史K线数据(默认前复权),支持自动切换数据源并获取当天涨跌幅。

Sourced from ClawHub, Authored by mc82465

Installation

Please help me install the skill `get-stock-line` from SkillHub official store. npx skills add mc82465/get-stock-line

stock-kline Skill

获取A股股票和指数历史K线数据。支持自动切换数据源,默认使用前复权数据


快速开始

from skills.stock_kline.kline import get_stock_history, get_today_change

# 获取股票K线 (前复权,自动切换数据源)
data = get_stock_history("600519.SH", days=100)

# 获取当天涨跌幅
result = get_today_change("600519.SH")
# 返回: {open, close, high, low, change, change_pct, volume}

数据源 (自动切换)

优先级 数据源 复权支持 说明
1️⃣ AKShare ✅ 前复权/后复权 首选,数据准确
2️⃣ 新浪财经API ❌ 不支持 降级备用,仅未复权

自动切换逻辑

get_stock_history(code, adjust="qfq")
    │
    ├─→ AKShare (前复权) ✅
    │       成功 → 返回复权数据
    │       失败 → 继续
    │
    └─→ 新浪API (未复权) ⚠️
            成功 → 返回未复权数据
            失败 → 返回空列表

⚠️ 重要: 新浪API不支持复权,除权日会有跳空。强烈建议安装AKShare


安装依赖

pip install akshare pandas

核心功能

1. 获取股票K线

from skills.stock_kline.kline import get_stock_history

# 前复权数据 (默认,解决除权问题)
data = get_stock_history("600519.SH", days=100)

# 后复权
data = get_stock_history("600519.SH", days=100, adjust="hfq")

# 不复权 (原始价格)
data = get_stock_history("600519.SH", days=100, adjust="")

2. 获取当天涨跌幅

from skills.stock_kline.kline import get_today_change

result = get_today_change("600519.SH")
# 返回:
# {
#     "open": 1440.0,      # 开盘价
#     "close": 1453.1,     # 当前价格
#     "high": 1460.0,      # 最高
#     "low": 1430.0,       # 最低
#     "change": 13.1,      # 涨跌额
#     "change_pct": 0.91,  # 涨跌幅%
#     "volume": 1000000    # 成交量
# }

3. 计算准确涨跌幅

from skills.stock_kline.kline import get_accurate_change

# 计算2026-03-13相比2026-03-12的涨幅
result = get_accurate_change("600519.SH", "2026-03-13", "2026-03-12")
# 返回: {target_price: 1413.64, prev_price: 1392.0, change_pct: 1.55}

4. 指数数据

from skills.stock_kline.kline import get_index_history

# 上证指数
data = get_index_history("000001.SH", 100)

# 深证成指
data = get_index_history("399001.SZ")

# 创业板指
data = get_index_history("399006.SZ")

# 沪深300
data = get_index_history("000300.SH")

股票/指数代码

类型 格式 示例
上证股票 600519.SH 贵州茅台
深证股票 300750.SZ 宁德时代
创业板 300001.SZ 创业板股票
上证指数 000001.SH 上证指数
深证指数 399001.SZ 深证成指

复权说明

什么是复权?

股票除权除息后,股价会下跌。如果不复权 Historical 价格会出现跳空。

复权类型 说明 适用场景
前复权 (qfq) 历史价格按最新价格调整 推荐用于计算涨幅
后复权 (hfq) 最新价格按历史价格调整 长期持有收益计算
不复权 原始价格 不推荐,有跳空

⚠️ 使用前复权数据计算涨幅可以消除除权除息导致的跳空,得到真实收益率。


函数列表

函数 说明 返回格式
get_stock_history(code, days, adjust) 获取股票K线 List[Dict]
get_today_change(code) 获取当天涨跌幅 Dict
get_accurate_change(code, date1, date2, adjust) 计算两日间涨幅 Dict
get_index_history(code, days) 获取指数K线 List[Dict]
calc_change_rate(old, new) 计算涨跌幅% Float
build_price_map(kline_data) 构建价格映射 Dict

完整示例

from skills.stock_kline.kline import (
    get_stock_history,
    get_today_change,
    get_accurate_change,
    calc_change_rate
)

# 示例:贵州茅台

# 1. 获取实时行情
quote = get_today_change("600519.SH")
print(f"当前价格: {quote['close']}, 涨跌幅: {quote['change_pct']}%")

# 2. 获取历史K线 (前复权)
kline = get_stock_history("600519.SH", days=20)
print(f"最近20天数据: {len(kline)}条")

# 3. 计算指定日期涨幅
result = get_accurate_change("600519.SH", "2026-03-13", "2026-03-12")
print(f"涨幅: {result['change_pct']}%")

# 4. 手动计算涨幅
if len(kline) >= 2:
    today = float(kline[0]['close'])
    yesterday = float(kline[1]['close'])
    change = calc_change_rate(yesterday, today)
    print(f"今日涨幅: {change}%")