Quant Data SDK
Official Python & JavaScript SDK for Quant Data API.
A 股行情、财务、行业、因子数据的官方 Python / JavaScript SDK。
✨ Features
- 🚀 一行代码获取 A 股数据
- 🤖 AI 代码生成(自然语言 → 策略代码)
- 🖥️ 自带 CLI(
quant-data命令) - 📊 pandas 集成(
get_kline_df()等) - ⚡ 异步支持(
AsyncQuantDataClient) - 📦 JavaScript/TypeScript SDK
- 🔐 自动处理 API Key 认证
- 🔁 内置重试、超时、错误处理
- 📝 完整的类型提示(type hints)
- 📦 支持上下文管理器(
with语法) - 🆓 支持匿名调用(无需注册)
📦 Installation
Python
# 基础
pip install zizhenghua-quant
# 带 pandas(DataFrame 支持)
pip install "zizhenghua-quant[pandas]"
# 带异步(httpx)
pip install "zizhenghua-quant[async]"
# 全部
pip install "zizhenghua-quant[all]"
JavaScript / TypeScript
npm install zizhenghua-quant
🚀 Quick Start
1. 获取 API Key(可选)
匿名也能用,但限额较低。注册后可获得更高限额。
- 访问 https://zizhenghua.com 注册账号
- 登录后进入「账号设置」→「API Key 管理」
- 点击「+ 创建新 Key」,复制保存(只显示一次)
2. Python 调用
from quant_data_sdk import QuantDataClient
# 匿名(30 次/天 AI,10 次/分钟数据)
client = QuantDataClient()
# 或注册(100 次/天 AI,1000 次/天数据)
client = QuantDataClient(api_key="your_api_key_here")
# 获取贵州茅台实时行情
data = client.stock.get_realtime("600519")
print(data)
3. JavaScript 调用
import { QuantDataClient } from 'zizhenghua-quant';
const client = new QuantDataClient({
apiKey: 'your_api_key_here', // 可选
});
const data = await client.stock.getRealtime('600519');
console.log(data);
📖 使用示例
数据接口
from quant_data_sdk import QuantDataClient
client = QuantDataClient(api_key="your_key")
# 实时行情
data = client.stock.get_realtime("600519")
# K 线
kline = client.stock.get_kline("600519", "2024-01-01", "2024-12-31")
# 多条件选股
stocks = client.stock.filter_stocks(minTurnover=5, minRoe=15)
# 市场统计
stats = client.market.get_stats()
# 行业数据
sectors = client.sector.get_performance()
# 财务指标
fin = client.fin.get_latest("600519")
# 多因子排名
ranking = client.factor.get_ranking(topN=20)
pandas 集成
# K 线 → DataFrame
df = client.stock.get_kline_df("600519", "2024-01-01", "2024-12-31")
df["ma5"] = df["close"].rolling(5).mean()
df["ma20"] = df["close"].rolling(20).mean()
# 涨幅榜 → DataFrame
df = client.stock.get_ranking_df()
# 行业 → DataFrame
df = client.sector.get_performance_df()
异步
import asyncio
from quant_data_sdk import AsyncQuantDataClient
async def main():
async with AsyncQuantDataClient() as client:
results = await asyncio.gather(
client.stock.get_realtime("600519"),
client.stock.get_realtime("601318"),
client.stock.get_realtime("300750"),
)
for r in results:
print(r["name"], r["latestPrice"])
asyncio.run(main())
AI 代码生成
# 通用方法
result = client.ai.generate_code(
prompt="我想查看茅台23年到25年的布林带回测情况",
language="python"
)
code = client.ai.extract_code(result["raw"])
# 快捷方法
client.ai.generate_bollinger("600519", "2023-01-01", "2025-12-31")
client.ai.generate_ma_cross("600519", "2023-01-01", "2025-12-31", fast=5, slow=20)
client.ai.generate_rsi("600519", "2023-01-01", "2025-12-31", oversold=30, overbought=70)
client.ai.generate_macd("600519", "2023-01-01", "2025-12-31")
client.ai.generate_kdj("600519", "2023-01-01", "2025-12-31")
上下文管理器
with QuantDataClient(api_key="your_key") as client:
data = client.stock.get_realtime("600519")
print(data)
# 自动关闭
自定义 base URL
# 本地开发
client = QuantDataClient(
api_key="your_key",
base_url="http://127.0.0.1:8080/api"
)
🖥️ CLI
安装后自带 quant-data 命令行工具。
数据查询
# 实时行情
quant-data stock realtime 600519
# 批量
quant-data stock realtime 600519 601318 001359
# K 线
quant-data stock kline 600519 --start 2024-01-01 --end 2024-12-31
# 涨幅榜
quant-data stock ranking
# 选股
quant-data stock filter --min-turnover 5 --min-roe 15 --limit 20
# 市场统计
quant-data market stats
# 行业涨跌幅
quant-data sector performance
# 财务指标
quant-data fin latest 600519
# 多因子排名
quant-data factor ranking --top 5
导出文件
# 导出 K 线为 CSV
quant-data stock kline 600519 --start 2024-01-01 --end 2024-12-31 -o kline.csv
# 导出涨幅榜为 JSON
quant-data stock ranking -o ranking.json
# `-o` 可以放任意位置
quant-data -o ranking.json stock ranking
AI 生成
# 生成策略代码
quant-data ai generate "写一个双均线策略"
# 保存到文件
quant-data ai generate "写一个双均线策略" -o backtest.py
# Java 版本
quant-data ai generate "写一个双均线策略" --language java -o Backtest.java
用 API Key
quant-data --api-key your_key stock realtime 600519
📦 JavaScript/TypeScript SDK
除了 Python SDK,还提供 JS/TS SDK。
安装
npm install zizhenghua-quant
使用
import { QuantDataClient } from 'zizhenghua-quant';
const client = new QuantDataClient({
apiKey: 'your_api_key_here', // 可选,不传则匿名
});
// 实时行情
const data = await client.stock.getRealtime('600519');
// K 线
const kline = await client.stock.getKline('600519', '2024-01-01', '2024-12-31');
// 涨幅榜
const ranking = await client.stock.getRanking();
// 市场统计
const stats = await client.market.getStats();
// 行业
const sectors = await client.sector.getPerformance();
// 财务
const fin = await client.fin.getLatest('600519');
// 多因子
const factors = await client.factor.getRanking(20);
AI 代码生成
const result = await client.ai.generateCode({
prompt: '我想查看茅台23年到25年的布林带回测情况',
language: 'python',
});
const code = AIAPI.extractCode(result.raw, 'python');
console.log(code);
📊 限流
| 用户 | 数据接口 | AI 接口 |
|---|---|---|
| 匿名 | 10 次/分钟,10,000 行/分钟 | 30 次/天 |
| 注册 | 300 次/分钟,600,000 行/分钟,1000 次/天 | 100 次/天 |
超限时抛 RateLimitError,并提示注册。
❌ 错误处理
from quant_data_sdk import QuantDataClient
from quant_data_sdk.exceptions import (
AuthenticationError,
RateLimitError,
NotFoundError,
ValidationError,
)
client = QuantDataClient(api_key="your_key")
try:
data = client.stock.get_realtime("600519")
except AuthenticationError as e:
print(f"认证失败: {e}")
except RateLimitError as e:
print(f"限流: {e}")
except NotFoundError as e:
print(f"资源不存在: {e}")
except ValidationError as e:
print(f"参数错误: {e}")
📚 Documentation
❓ FAQ
1. 匿名能用吗?
能,但限额较低:
- 数据接口:10 次/分钟,10,000 行/分钟
- AI 接口:30 次/天
注册后可获得更高限额。
2. 怎么拿 API Key?
- 访问 https://zizhenghua.com 注册
- 登录后进入「账号设置」→「API Key 管理」
- 点击「+ 创建新 Key」,复制保存
3. 支持哪些股票?
A 股全市场(沪深京),包括指数、ETF。
4. 数据从哪来?
公开数据源,仅供学习研究。
5. 能商用吗?
SDK 是 MIT 协议,可以商用。数据接口有免费额度。
6. 报错 RateLimitError 怎么办?
- 等 1 分钟
- 或注册获取更高限额
- 或加 API Key
7. Python 和 JS SDK 有什么区别?
功能基本一致,语言不同:
- Python:支持 pandas / 异步 / CLI
- JS/TS:支持 TypeScript 类型
8. 支持哪些 Python 版本?
Python 3.8+。
9. 支持哪些 Node 版本?
Node 16+。
10. 怎么提 issue?
https://github.com/Zizhenghua/quant-data-sdk/issues
📈 Star History
🤝 Contributing
See CONTRIBUTING.md.
📄 License
⚠️ Disclaimer
数据仅供量化学习与策略回测研究之用,不构成任何投资建议。
AI 生成的代码不保证正确性,请自行检查后再使用。
Metadata
Release files for zizhenghua-quant 1.2.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| zizhenghua_quant-1.2.0.tar.gz | 21.9 kB | Without provenance | Details for zizhenghua_quant-1.2.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| zizhenghua_quant-1.2.0-py3-none-any.whl | Python 3 | none | any | Details for zizhenghua_quant-1.2.0-py3-none-any.whl |
Total release size: 46.9 kB
Release files / zizhenghua_quant-1.2.0.tar.gz
| Download URL | zizhenghua_quant-1.2.0.tar.gz |
|---|---|
| Size | 21.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
a6b563e29d5e5a162dbb86763f76b9b4ca2cb8872bc45edd22b22a1db0a01eed
|
|
BLAKE2b-256 checksum How to use checksums |
3b80d6c839f42402047fd9f93040227221fe67b947495811bd24dc81afe0ce84
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.14
|
Release files / zizhenghua_quant-1.2.0-py3-none-any.whl
| Download URL | zizhenghua_quant-1.2.0-py3-none-any.whl |
|---|---|
| Size | 25.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
7754cb5d59f4e20152a41eaec99e179b1da613c83ec83d3d11bc939d0f6c9b08
|
|
BLAKE2b-256 checksum How to use checksums |
491f3bbd59ba4ff88510e7763b35415c55f556e0d10825f49866884eb0adb170
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.14
|
Security for zizhenghua-quant 1.2.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.