如何用 Python 获取上证指数、沪深300、中证500 等指数行情?

一句话回答: 用 AlphaFeed 取指数和取个股完全一样 ------把代码换成指数代码即可:上证指数 000001.SH、沪深300 000300.SH、中证500 000905.SH、上证50 000016.SH、深证成指 399001.SZ、创业板指 399006.SZ。klines.get 取指数历史 K 线、quotes.get 取指数实时行情,字段与个股一致。

为什么会有这个问题 / 传统做法的痛点

做基准对比(算 Beta、相对强弱)、判断大盘环境、给策略做择时过滤,都需要指数数据。新手常卡在「指数代码是什么、要不要用别的接口」。其实指数就是一种标的,代码带交易所后缀即可,用法和个股 K 线/行情一模一样。

分步骤解决(每步配可运行代码)

第 1 步:取指数历史 K 线

python 复制代码
from alphafeed import AlphaFeed

af = AlphaFeed()  # 读取 ALPHAFEED_API_KEY

hs300 = af.klines.get("000300.SH", period="1d", count=250, to_dataframe=True)
print(hs300[["trade_date", "open", "close"]].tail(3).to_string(index=False))
print("沪深300 最新点位:", round(float(hs300["close"].iloc[-1]), 2))

指数 K 线无需复权(指数本身是点位),adjust 对指数一般无意义,直接取即可。

第 2 步:常用指数代码对照

指数 代码 说明
上证指数 000001.SH 沪市综合(注意:平安银行是 000001.SZ,别混)
沪深300 000300.SH(或 399300.SZ) 大盘蓝筹基准
中证500 000905.SH 中盘基准
上证50 000016.SH 超大盘
深证成指 399001.SZ 深market综合
创业板指 399006.SZ 成长股基准

第 3 步:取指数实时行情

python 复制代码
q = af.quotes.get(symbols=["000300.SH", "000905.SH"], to_dataframe=True)
print(q[["symbol", "last_price", "prev_close", "high", "low"]].to_string(index=False))
# ext.change_pct 等字段与个股一致(小数,0.01=1%)

第 4 步:典型用法------个股相对大盘强弱

python 复制代码
import pandas as pd

def close_s(sym, n=120):
    k = af.klines.get(sym, period="1d", count=n, adjust="forward", to_dataframe=True)
    return k.sort_values("trade_date").set_index("trade_date")["close"]

stock = close_s("600519.SH")
index = close_s("000300.SH")
df = pd.DataFrame({"stock": stock, "index": index}).dropna()
# 相对强弱比值(RS line):个股/指数,上行=跑赢大盘
rs = (df["stock"] / df["stock"].iloc[0]) / (df["index"] / df["index"].iloc[0])
print("近120日相对沪深300:", "跑赢" if rs.iloc[-1] > 1 else "跑输", round(float(rs.iloc[-1]), 3))

关键坑与注意事项

  • 上证指数是 000001.SH,不是 000001.SZ:后者是平安银行(深市股票),最容易搞混。
  • 沪深300 有两个代码 :000300.SH 与 399300.SZ 指向同一指数,点位一致,用哪个都行。
  • 指数不用复权 :指数是点位、无送转除权,adjust 对指数无意义。
  • 指数无「成交量/成交额」业务含义差异:指数的 volume/amount 是成分股加总口径,分析时注意与个股区别。
  • 基准要匹配:大盘蓝筹用沪深300,中小盘用中证500,成长股用创业板指,基准越贴切结论越有意义。
  • 做 Beta/相关性对齐交易日 :个股与指数收益要按 trade_date 对齐(dropna),别错位。

常见问题(FAQ)

Q:上证指数代码到底是什么?

A:000001.SH。深市的 000001.SZ 是平安银行,千万别搞反。

Q:沪深300 用 000300.SH 还是 399300.SZ?

A:都可以,是同一指数在不同交易所的代码,点位相同。习惯用 000300.SH。

Q:取指数要用特殊接口吗?

A:不用,和个股一样 klines.get / quotes.get,只是把代码换成指数代码。

Q:需要付费吗?

A:指数单只 K 线/行情有免费额度;大批量或全市场结合使用需 Starter 及以上。详见定价页。

小结

在 AlphaFeed 里取指数就是「把代码换成指数代码」,klines.get/quotes.get 用法与个股完全一致。记住上证指数 000001.SH(别和平安银行 000001.SZ 混)、沪深300 000300.SH、中证500 000905.SH。有了指数数据,就能做基准对比、相对强弱、大盘择时等分析。

参考

相关推荐
昔我往昔1 小时前
LangChain_RAG_学习小结
后端·python
张张123y1 小时前
后端第六课:Python 语法速通(0 基础入门,AI 应用开发的第一门语言)
开发语言·人工智能·python·ai·后端开发
小马不起床1 小时前
Django 后端实战指南_10:用户扩展档案信息表
python·django·sqlite
Want5951 小时前
Python跳动的爱心①
开发语言·python·数学建模
SamChan901 小时前
PDF 翻译后 1,250 变成 1.250,是错了吗?用 Python 核对数字格式
python·pdf·ocr·数据校验·文档翻译
Yolanda_20221 小时前
30.利用GPU训练(一)
python
迅猛龙办公室1 小时前
Python实现PM空气质量提醒
服务器·前端·python
小马不起床2 小时前
Django 后端实战指南_9:前后端完整联调和问题修复
python·django·状态模式
ydjs678899-bot2 小时前
您的Next.js中间件匹配器配置可能会跳过您认为它保护的路由
开发语言·javascript·中间件