跳转到主要内容

安装

pip install quantdash
支持 Python 3.9+,推荐 3.10 或更高版本。内置 pandas 和 tqdm 支持。

初始化

from quantdash import QuantDash

qd = QuantDash(api_key="your-api-key")
也可以通过环境变量设置:
export QUANTDASH_API_KEY="your-api-key"
from quantdash import QuantDash
qd = QuantDash()  # 自动读取 QUANTDASH_API_KEY

标的代码格式

标的代码统一使用 {代码}.{交易所后缀} 格式:
后缀交易所示例
.SH上海证券交易所600519.SH
.SZ深圳证券交易所000001.SZ
.BJ北京证券交易所920047.BJ
.US美股AAPL.US
.HK港股00700.HK

获取日K线

支持周期:1d(日)、1w(周)、1M(月)、1Q(季)、1Y(年)
df = qd.klines.get("600519.SH", period="1d", count=5, to_dataframe=True)
print(df[["symbol", "name", "trade_date", "open", "high", "low", "close", "volume"]])
   symbol name trade_date    open    high     low   close  volume
600519.SH 贵州茅台 2026-06-12 1271.18 1295.00 1265.01 1291.91   50495
600519.SH 贵州茅台 2026-06-15 1292.70 1292.70 1270.10 1271.10   41586
600519.SH 贵州茅台 2026-06-16 1267.01 1267.88 1255.00 1255.67   34970
600519.SH 贵州茅台 2026-06-17 1258.00 1259.77 1238.56 1240.00   44803
600519.SH 贵州茅台 2026-06-18 1235.00 1238.87 1211.22 1215.00   57472

获取分钟K线

支持周期:1m(1分钟)、5m(5分钟)、15m(15分钟)、30m(30分钟)、60m(60分钟)
df = qd.klines.get("600519.SH", period="5m", count=5, to_dataframe=True)
print(df[["symbol", "name", "trade_time", "open", "high", "low", "close", "volume"]])
   symbol name          trade_time    open    high     low   close  volume
600519.SH 贵州茅台 2026-06-18 14:40:00 1214.44 1215.82 1212.26 1215.82    1151
600519.SH 贵州茅台 2026-06-18 14:45:00 1215.02 1217.00 1215.00 1216.99     997
600519.SH 贵州茅台 2026-06-18 14:50:00 1216.52 1217.39 1215.99 1217.38     827
600519.SH 贵州茅台 2026-06-18 14:55:00 1217.40 1228.37 1217.40 1222.55    2355
600519.SH 贵州茅台 2026-06-18 15:00:00 1223.02 1223.99 1215.00 1215.00    2324

复权方式

K 线接口支持 adjust 参数:
说明
forward前复权 - 比例复权(默认)
backward后复权 - 比例复权
forward_additive前复权 - 差值复权
backward_additive后复权 - 差值复权
none不复权
比例复权使用乘法因子还原价格,适合计算收益率;差值复权使用加减法还原价格,适合观察绝对价差。
df = qd.klines.get("600519.SH", adjust="none", to_dataframe=True)              # 不复权
df = qd.klines.get("600519.SH", adjust="forward", to_dataframe=True)           # 前复权-比例(默认)
df = qd.klines.get("600519.SH", adjust="backward", to_dataframe=True)          # 后复权-比例
df = qd.klines.get("600519.SH", adjust="forward_additive", to_dataframe=True)  # 前复权-差值
df = qd.klines.get("600519.SH", adjust="backward_additive", to_dataframe=True) # 后复权-差值

批量获取K线

一次请求获取多只标的的K线数据:
symbols = ["600519.SH", "000001.SZ"]
dfs = qd.klines.batch(symbols, period="1d", count=3, to_dataframe=True, show_progress=True)

for sym, df in dfs.items():
    print(f"--- {sym} ({df['name'].iloc[0]}) ---")
    print(df[["trade_date", "open", "close", "volume"]].to_string(index=False))
--- 600519.SH (贵州茅台) ---
trade_date    open   close  volume
2026-06-16 1267.01 1255.67   34970
2026-06-17 1258.00 1240.00   44803
2026-06-18 1235.00 1215.00   57472
--- 000001.SZ (平安银行) ---
trade_date  open  close  volume
2026-06-16 11.05  10.94  942708
2026-06-17 10.97  10.78  965828
2026-06-18 10.74  10.52 1426893

获取实时行情

按标的代码查询

df = qd.quotes.get(symbols=["600519.SH", "000001.SZ"], to_dataframe=True)
print(df[["symbol", "last_price", "prev_close", "volume", "ext.name", "ext.change_pct"]])
   symbol  last_price  prev_close  volume ext.name  ext.change_pct
000001.SZ       10.52       10.78 1426893     平安银行       -0.024119
600519.SH     1215.00     1240.00   57472     贵州茅台       -0.020161

按标的池查询(全量行情)

支持的标的池:
标的池 ID说明
CN_StockA 股(沪深京)
CN_ETFETF
US_Stock美股
HK_Stock港股
df = qd.quotes.get(universes=["CN_Stock"], to_dataframe=True)
print(df)
         symbol region  ...  ext.amplitude  ext.turnover_rate
0     920985.BJ     CN  ...       0.043893           0.015161
1     002414.SZ     CN  ...       0.027106           0.015167
2     600589.SH     CN  ...       0.047852           0.076141
3     688543.SH     CN  ...       0.043046           0.052545
4     300988.SZ     CN  ...       0.044633           0.043186
...         ...    ...  ...            ...                ...
5496  002546.SZ     CN  ...       0.022026           0.014857
5497  920363.BJ     CN  ...       0.038917           0.027170
5498  688590.SH     CN  ...       0.033557           0.051160
5499  001317.SZ     CN  ...       0.053210           0.043987
5500  300731.SZ     CN  ...       0.080393           0.090136

[5501 rows x 18 columns]

获取日内分时

单只标的

支持周期:1m(默认)、5m15m30m60m
df = qd.klines.intraday("600519.SH", count=5, to_dataframe=True)
print(df[["symbol", "name", "trade_time", "close", "volume"]])
   symbol name          trade_time   close  volume
600519.SH 贵州茅台 2026-06-18 14:56:00 1223.50     273
600519.SH 贵州茅台 2026-06-18 14:57:00 1223.88     261
600519.SH 贵州茅台 2026-06-18 14:58:00 1223.26       2
600519.SH 贵州茅台 2026-06-18 14:59:00 1223.26       0
600519.SH 贵州茅台 2026-06-18 15:00:00 1215.00    1788

批量日内分时

dfs = qd.klines.intraday_batch(["600519.SH", "000001.SZ"], to_dataframe=True)
for sym, df in dfs.items():
    print(f"{sym}: {len(df)} 条分钟线")

获取标的信息

insts = qd.instruments.get(["600519.SH", "000001.SZ"])
for i in insts:
    print(f"{i['symbol']:>10s}  {i['name']:<6s}  交易所={i['exchange']}  类型={i['type']}  上市={i['ext'].get('listing_date','')}")
 600519.SH  贵州茅台    交易所=SH  类型=stock  上市=2001-08-27
 000001.SZ  平安银行    交易所=SZ  类型=stock  上市=1991-04-03

获取除权因子

df = qd.klines.ex_factors(["600519.SH"], to_dataframe=True)
print(df[["symbol", "trade_date", "ex_factor"]].tail(5))
   symbol trade_date  ex_factor
600519.SH 2023-12-20   1.011540
600519.SH 2024-06-19   1.020716
600519.SH 2024-12-20   1.015637
600519.SH 2025-06-26   1.019649
600519.SH 2025-12-19   1.017003

获取五档盘口

单只标的

depth = qd.depth.get("600519.SH")
print(f"标的: {depth['symbol']}  地区: {depth['region']}")
for i in range(5):
    bid = f"买{i+1}: {depth['bid_prices'][i]:>10.2f} x {depth['bid_volumes'][i]}"
    ask = f"卖{i+1}: {depth['ask_prices'][i]:>10.2f} x {depth['ask_volumes'][i]}"
    print(f"  {bid}  |  {ask}")
标的: 600519.SH  地区: CN
  买1:    1215.00 x 123  |  卖1:    1215.28 x 1
  买2:    1214.95 x 2  |  卖2:    1215.96 x 1
  买3:    1214.88 x 1  |  卖3:    1216.00 x 2
  买4:    1214.48 x 1  |  卖4:    1218.00 x 1
  买5:    1214.40 x 1  |  卖5:    1218.89 x 1

批量盘口

result = qd.depth.batch(["000001.SZ", "600000.SH"])
for sym, depth in result.items():
    print(f"--- {sym} ---")
    for i in range(5):
        bid = f"买{i+1}: {depth['bid_prices'][i]:>8.2f} x {depth['bid_volumes'][i]:<6}"
        ask = f"卖{i+1}: {depth['ask_prices'][i]:>8.2f} x {depth['ask_volumes'][i]}"
        print(f"  {bid} | {ask}")
--- 000001.SZ ---
  买1:    10.52 x 19374  | 卖1:    10.53 x 2
  买2:    10.51 x 16237  | 卖2:    10.54 x 430
  买3:    10.50 x 28122  | 卖3:    10.55 x 75
  买4:    10.49 x 4656   | 卖4:    10.56 x 2771
  买5:    10.48 x 3764   | 卖5:    10.57 x 2566
--- 600000.SH ---
  买1:     9.08 x 4661   | 卖1:     9.09 x 7087
  买2:     9.07 x 5576   | 卖2:     9.10 x 1052
  买3:     9.06 x 6301   | 卖3:     9.11 x 2108
  买4:     9.05 x 10340  | 卖4:     9.12 x 1537
  买5:     9.04 x 1074   | 卖5:     9.13 x 3112