1. 获取所有场内ETF基金列表
使用 fund_etf_category_sina()
函数,从新浪财经获取ETF列表数据(包含代码、名称、净值、涨跌幅等):
python
import akshare as ak
# 获取所有ETF列表
etf_list = ak.fund_etf_category_sina()
print(etf_list)
输出字段示例:
symbol
: ETF代码(如sh510300
)name
: ETF名称nav
: 单位净值change_percent
: 涨跌幅
2. 获取指定ETF的日级别数据
使用 fund_em_etf_fund_daily()
函数,从东方财富获取日线数据:
python
# 示例:获取沪深300ETF(代码:510300)的日线数据
daily_data = ak.fund_em_etf_fund_daily(symbol="510300")
print(daily_data)
输出字段:
日期
: 交易日期单位净值
: 净值累计净值
: 复权净值涨跌幅
: 百分比
3. 获取指定ETF的分钟级别数据
使用 fund_etf_hist_min_em()
函数,从东方财富获取分钟级数据:
python
复制
ini
# 示例:获取沪深300ETF(代码:sh510300)的1分钟数据
minute_data = ak.fund_etf_hist_min_em(
symbol="sh510300", # 需带市场前缀(sh/sz)
period="1", # 1/5/15/30/60分钟
adjust="qfq", # qfq前复权/hfq后复权
start_date="2023-01-01",
end_date="2023-12-31"
)
print(minute_data)
输出字段:
时间
: 分钟时间戳开盘价
/收盘价
/最高价
/最低价
成交量
/成交额
完整流程示例
python
复制
ini
import akshare as ak
# 1. 获取ETF列表
etf_list = ak.fund_etf_category_sina()
# 2. 遍历获取每个ETF的历史数据
for index, row in etf_list.iterrows():
symbol = row["symbol"] # 如 'sh510300'
code = symbol[2:] # 提取纯数字代码 '510300'
# 获取日线数据
daily = ak.fund_em_etf_fund_daily(symbol=code)
# 获取分钟数据(需带市场前缀)
minute = ak.fund_etf_hist_min_em(symbol=symbol, period="1")
注意事项
- 代码前缀 :分钟数据需指定市场前缀(
sh
或sz
),日线数据一般用纯数字代码。 - 数据频率 :部分接口可能有访问频率限制,建议添加
time.sleep(1)
避免被封。 - 数据更新 :确保使用最新版
akshare
(更新命令:pip install --upgrade akshare
)。
如果需要进一步优化代码或处理异常,请告知具体需求!