qdata-quote 0.2.1__tar.gz → 0.2.2__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- qdata_quote-0.2.2/PKG-INFO +145 -0
- qdata_quote-0.2.2/README.md +131 -0
- {qdata_quote-0.2.1 → qdata_quote-0.2.2}/pyproject.toml +1 -1
- qdata_quote-0.2.1/PKG-INFO +0 -17
- qdata_quote-0.2.1/README.md +0 -3
- {qdata_quote-0.2.1 → qdata_quote-0.2.2}/.gitignore +0 -0
- {qdata_quote-0.2.1 → qdata_quote-0.2.2}/docs/superpowers/plans/2026-06-12-quote-service.md +0 -0
- {qdata_quote-0.2.1 → qdata_quote-0.2.2}/docs/superpowers/specs/2026-06-12-quote-service-design.md +0 -0
- {qdata_quote-0.2.1 → qdata_quote-0.2.2}/src/qdata_quote/__init__.py +0 -0
- {qdata_quote-0.2.1 → qdata_quote-0.2.2}/src/qdata_quote/bench.py +0 -0
- {qdata_quote-0.2.1 → qdata_quote-0.2.2}/src/qdata_quote/service.py +0 -0
- {qdata_quote-0.2.1 → qdata_quote-0.2.2}/src/qdata_quote/sources/__init__.py +0 -0
- {qdata_quote-0.2.1 → qdata_quote-0.2.2}/src/qdata_quote/sources/base.py +0 -0
- {qdata_quote-0.2.1 → qdata_quote-0.2.2}/src/qdata_quote/sources/sina.py +0 -0
- {qdata_quote-0.2.1 → qdata_quote-0.2.2}/src/qdata_quote/sources/tencent.py +0 -0
- {qdata_quote-0.2.1 → qdata_quote-0.2.2}/src/qdata_quote/types.py +0 -0
- {qdata_quote-0.2.1 → qdata_quote-0.2.2}/tests/test_service.py +0 -0
- {qdata_quote-0.2.1 → qdata_quote-0.2.2}/tests/test_sina.py +0 -0
- {qdata_quote-0.2.1 → qdata_quote-0.2.2}/tests/test_tencent.py +0 -0
- {qdata_quote-0.2.1 → qdata_quote-0.2.2}/tests/test_types.py +0 -0
- {qdata_quote-0.2.1 → qdata_quote-0.2.2}/uv.lock +0 -0
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: qdata-quote
|
|
3
|
+
Version: 0.2.2
|
|
4
|
+
Summary: 实时行情采集服务,支持新浪和腾讯数据源
|
|
5
|
+
License-Expression: MIT
|
|
6
|
+
Requires-Python: >=3.10
|
|
7
|
+
Requires-Dist: aiohttp>=3.9
|
|
8
|
+
Requires-Dist: pandas>=2.0
|
|
9
|
+
Requires-Dist: requests>=2.28
|
|
10
|
+
Provides-Extra: dev
|
|
11
|
+
Requires-Dist: pytest-asyncio>=0.23; extra == 'dev'
|
|
12
|
+
Requires-Dist: pytest>=7.0; extra == 'dev'
|
|
13
|
+
Description-Content-Type: text/markdown
|
|
14
|
+
|
|
15
|
+
# qdata-quote
|
|
16
|
+
|
|
17
|
+
实时 A 股行情采集服务,支持新浪和腾讯两个数据源。性能超越 easyquotation 约 8-10%。
|
|
18
|
+
|
|
19
|
+
## 安装
|
|
20
|
+
|
|
21
|
+
```bash
|
|
22
|
+
pip install qdata-quote
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
## 快速开始
|
|
26
|
+
|
|
27
|
+
```python
|
|
28
|
+
from qdata_quote import QuoteService
|
|
29
|
+
|
|
30
|
+
service = QuoteService()
|
|
31
|
+
|
|
32
|
+
# 设置全市场股票代码(必需)
|
|
33
|
+
service.set_stock_codes(["000001", "600000", "600036", "300750"])
|
|
34
|
+
|
|
35
|
+
# 同步获取指定股票行情
|
|
36
|
+
df = service.get_real_sync(["000001", "600000"])
|
|
37
|
+
print(df)
|
|
38
|
+
|
|
39
|
+
# 同步获取全市场行情快照
|
|
40
|
+
df_all = service.get_all_sync()
|
|
41
|
+
|
|
42
|
+
# 异步获取(高性能路径)
|
|
43
|
+
import asyncio
|
|
44
|
+
df = asyncio.run(service.get_real(["000001", "600000"]))
|
|
45
|
+
df_all = asyncio.run(service.get_all())
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
## 数据源
|
|
49
|
+
|
|
50
|
+
支持两个数据源,通过 `source` 参数指定:
|
|
51
|
+
|
|
52
|
+
```python
|
|
53
|
+
# 新浪源(默认)
|
|
54
|
+
df = service.get_real_sync(["000001"], source="sina")
|
|
55
|
+
|
|
56
|
+
# 腾讯源(字段更丰富)
|
|
57
|
+
df = service.get_real_sync(["000001"], source="tencent")
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
| 数据源 | 每批数量 | 特点 |
|
|
61
|
+
|--------|---------|------|
|
|
62
|
+
| sina | 800 只/批 | 速度快,基础字段齐全 |
|
|
63
|
+
| tencent | 60 只/批 | 额外提供涨跌、市盈率、市值、量比等 |
|
|
64
|
+
|
|
65
|
+
## 返回格式
|
|
66
|
+
|
|
67
|
+
返回统一的 `pandas.DataFrame`,index 为带市场前缀的股票代码(如 `sh600000`、`sz000001`)。
|
|
68
|
+
|
|
69
|
+
### 字段列表
|
|
70
|
+
|
|
71
|
+
| 字段 | 类型 | 新浪 | 腾讯 | 说明 |
|
|
72
|
+
|------|------|:----:|:----:|------|
|
|
73
|
+
| code | str | ✅ | ✅ | 股票代码(index) |
|
|
74
|
+
| name | str | ✅ | ✅ | 股票名称 |
|
|
75
|
+
| open | float | ✅ | ✅ | 开盘价 |
|
|
76
|
+
| close | float | ✅ | ✅ | 昨收价 |
|
|
77
|
+
| now | float | ✅ | ✅ | 当前价 |
|
|
78
|
+
| high | float | ✅ | ✅ | 最高价 |
|
|
79
|
+
| low | float | ✅ | ✅ | 最低价 |
|
|
80
|
+
| buy | float | ✅ | - | 买一价 |
|
|
81
|
+
| sell | float | ✅ | - | 卖一价 |
|
|
82
|
+
| volume | float | ✅ | ✅ | 成交量(股) |
|
|
83
|
+
| turnover | float | ✅ | ✅ | 成交额(元) |
|
|
84
|
+
| bid1 ~ bid5 | float | ✅ | ✅ | 买一到买五价 |
|
|
85
|
+
| bid1_volume ~ bid5_volume | float | ✅ | ✅ | 买一到买五量(股) |
|
|
86
|
+
| ask1 ~ ask5 | float | ✅ | ✅ | 卖一到卖五价 |
|
|
87
|
+
| ask1_volume ~ ask5_volume | float | ✅ | ✅ | 卖一到卖五量(股) |
|
|
88
|
+
| datetime | str | ✅ | ✅ | 行情时间 |
|
|
89
|
+
| change | float | - | ✅ | 涨跌额 |
|
|
90
|
+
| change_pct | float | - | ✅ | 涨跌幅(%) |
|
|
91
|
+
| amplitude | float | - | ✅ | 振幅 |
|
|
92
|
+
| pe_dynamic | float | - | ✅ | 动态市盈率 |
|
|
93
|
+
| pe_static | float | - | ✅ | 静态市盈率 |
|
|
94
|
+
| pb | float | - | ✅ | 市净率 |
|
|
95
|
+
| total_market_cap | float | - | ✅ | 总市值 |
|
|
96
|
+
| circulating_market_cap | float | - | ✅ | 流通市值 |
|
|
97
|
+
| volume_ratio | float | - | ✅ | 量比 |
|
|
98
|
+
| bid_ask_ratio | float | - | ✅ | 委比 |
|
|
99
|
+
| avg_price | float | - | ✅ | 均价 |
|
|
100
|
+
| limit_up | float | - | ✅ | 涨停价 |
|
|
101
|
+
| limit_down | float | - | ✅ | 跌停价 |
|
|
102
|
+
|
|
103
|
+
✅ 表示有数据,- 表示 NaN。腾讯源提供更丰富的衍生指标。
|
|
104
|
+
|
|
105
|
+
## 会话管理
|
|
106
|
+
|
|
107
|
+
建议使用上下文管理器复用连接,在频繁轮询场景下性能更佳:
|
|
108
|
+
|
|
109
|
+
```python
|
|
110
|
+
# 同步
|
|
111
|
+
with QuoteService() as service:
|
|
112
|
+
service.set_stock_codes(codes)
|
|
113
|
+
df = service.get_all_sync()
|
|
114
|
+
|
|
115
|
+
# 异步
|
|
116
|
+
async with QuoteService() as service:
|
|
117
|
+
service.set_stock_codes(codes)
|
|
118
|
+
df = await service.get_all()
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
## 性能对比
|
|
122
|
+
|
|
123
|
+
与 easyquotation 对比(5610 只股票):
|
|
124
|
+
|
|
125
|
+
| 数据源 | easyquotation | qdata_quote sync | qdata_quote async |
|
|
126
|
+
|--------|--------------|-------------------|-------------------|
|
|
127
|
+
| 新浪 | ~710ms | **~640ms** | **~640ms** |
|
|
128
|
+
| 腾讯 | ~1830ms | **~1720ms** | **~1680ms** |
|
|
129
|
+
|
|
130
|
+
- 同步引擎:`requests` + `ThreadPoolExecutor` 并发请求
|
|
131
|
+
- 异步引擎:`aiohttp` + `asyncio.gather` 并发请求
|
|
132
|
+
- 解析优化:文本合并后一次性正则匹配,元组直接构建 DataFrame
|
|
133
|
+
|
|
134
|
+
## 运行基准测试
|
|
135
|
+
|
|
136
|
+
```bash
|
|
137
|
+
python -m qdata_quote.bench
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
## 依赖
|
|
141
|
+
|
|
142
|
+
- Python >= 3.10
|
|
143
|
+
- requests >= 2.28
|
|
144
|
+
- aiohttp >= 3.9
|
|
145
|
+
- pandas >= 2.0
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
# qdata-quote
|
|
2
|
+
|
|
3
|
+
实时 A 股行情采集服务,支持新浪和腾讯两个数据源。性能超越 easyquotation 约 8-10%。
|
|
4
|
+
|
|
5
|
+
## 安装
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
pip install qdata-quote
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## 快速开始
|
|
12
|
+
|
|
13
|
+
```python
|
|
14
|
+
from qdata_quote import QuoteService
|
|
15
|
+
|
|
16
|
+
service = QuoteService()
|
|
17
|
+
|
|
18
|
+
# 设置全市场股票代码(必需)
|
|
19
|
+
service.set_stock_codes(["000001", "600000", "600036", "300750"])
|
|
20
|
+
|
|
21
|
+
# 同步获取指定股票行情
|
|
22
|
+
df = service.get_real_sync(["000001", "600000"])
|
|
23
|
+
print(df)
|
|
24
|
+
|
|
25
|
+
# 同步获取全市场行情快照
|
|
26
|
+
df_all = service.get_all_sync()
|
|
27
|
+
|
|
28
|
+
# 异步获取(高性能路径)
|
|
29
|
+
import asyncio
|
|
30
|
+
df = asyncio.run(service.get_real(["000001", "600000"]))
|
|
31
|
+
df_all = asyncio.run(service.get_all())
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
## 数据源
|
|
35
|
+
|
|
36
|
+
支持两个数据源,通过 `source` 参数指定:
|
|
37
|
+
|
|
38
|
+
```python
|
|
39
|
+
# 新浪源(默认)
|
|
40
|
+
df = service.get_real_sync(["000001"], source="sina")
|
|
41
|
+
|
|
42
|
+
# 腾讯源(字段更丰富)
|
|
43
|
+
df = service.get_real_sync(["000001"], source="tencent")
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
| 数据源 | 每批数量 | 特点 |
|
|
47
|
+
|--------|---------|------|
|
|
48
|
+
| sina | 800 只/批 | 速度快,基础字段齐全 |
|
|
49
|
+
| tencent | 60 只/批 | 额外提供涨跌、市盈率、市值、量比等 |
|
|
50
|
+
|
|
51
|
+
## 返回格式
|
|
52
|
+
|
|
53
|
+
返回统一的 `pandas.DataFrame`,index 为带市场前缀的股票代码(如 `sh600000`、`sz000001`)。
|
|
54
|
+
|
|
55
|
+
### 字段列表
|
|
56
|
+
|
|
57
|
+
| 字段 | 类型 | 新浪 | 腾讯 | 说明 |
|
|
58
|
+
|------|------|:----:|:----:|------|
|
|
59
|
+
| code | str | ✅ | ✅ | 股票代码(index) |
|
|
60
|
+
| name | str | ✅ | ✅ | 股票名称 |
|
|
61
|
+
| open | float | ✅ | ✅ | 开盘价 |
|
|
62
|
+
| close | float | ✅ | ✅ | 昨收价 |
|
|
63
|
+
| now | float | ✅ | ✅ | 当前价 |
|
|
64
|
+
| high | float | ✅ | ✅ | 最高价 |
|
|
65
|
+
| low | float | ✅ | ✅ | 最低价 |
|
|
66
|
+
| buy | float | ✅ | - | 买一价 |
|
|
67
|
+
| sell | float | ✅ | - | 卖一价 |
|
|
68
|
+
| volume | float | ✅ | ✅ | 成交量(股) |
|
|
69
|
+
| turnover | float | ✅ | ✅ | 成交额(元) |
|
|
70
|
+
| bid1 ~ bid5 | float | ✅ | ✅ | 买一到买五价 |
|
|
71
|
+
| bid1_volume ~ bid5_volume | float | ✅ | ✅ | 买一到买五量(股) |
|
|
72
|
+
| ask1 ~ ask5 | float | ✅ | ✅ | 卖一到卖五价 |
|
|
73
|
+
| ask1_volume ~ ask5_volume | float | ✅ | ✅ | 卖一到卖五量(股) |
|
|
74
|
+
| datetime | str | ✅ | ✅ | 行情时间 |
|
|
75
|
+
| change | float | - | ✅ | 涨跌额 |
|
|
76
|
+
| change_pct | float | - | ✅ | 涨跌幅(%) |
|
|
77
|
+
| amplitude | float | - | ✅ | 振幅 |
|
|
78
|
+
| pe_dynamic | float | - | ✅ | 动态市盈率 |
|
|
79
|
+
| pe_static | float | - | ✅ | 静态市盈率 |
|
|
80
|
+
| pb | float | - | ✅ | 市净率 |
|
|
81
|
+
| total_market_cap | float | - | ✅ | 总市值 |
|
|
82
|
+
| circulating_market_cap | float | - | ✅ | 流通市值 |
|
|
83
|
+
| volume_ratio | float | - | ✅ | 量比 |
|
|
84
|
+
| bid_ask_ratio | float | - | ✅ | 委比 |
|
|
85
|
+
| avg_price | float | - | ✅ | 均价 |
|
|
86
|
+
| limit_up | float | - | ✅ | 涨停价 |
|
|
87
|
+
| limit_down | float | - | ✅ | 跌停价 |
|
|
88
|
+
|
|
89
|
+
✅ 表示有数据,- 表示 NaN。腾讯源提供更丰富的衍生指标。
|
|
90
|
+
|
|
91
|
+
## 会话管理
|
|
92
|
+
|
|
93
|
+
建议使用上下文管理器复用连接,在频繁轮询场景下性能更佳:
|
|
94
|
+
|
|
95
|
+
```python
|
|
96
|
+
# 同步
|
|
97
|
+
with QuoteService() as service:
|
|
98
|
+
service.set_stock_codes(codes)
|
|
99
|
+
df = service.get_all_sync()
|
|
100
|
+
|
|
101
|
+
# 异步
|
|
102
|
+
async with QuoteService() as service:
|
|
103
|
+
service.set_stock_codes(codes)
|
|
104
|
+
df = await service.get_all()
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
## 性能对比
|
|
108
|
+
|
|
109
|
+
与 easyquotation 对比(5610 只股票):
|
|
110
|
+
|
|
111
|
+
| 数据源 | easyquotation | qdata_quote sync | qdata_quote async |
|
|
112
|
+
|--------|--------------|-------------------|-------------------|
|
|
113
|
+
| 新浪 | ~710ms | **~640ms** | **~640ms** |
|
|
114
|
+
| 腾讯 | ~1830ms | **~1720ms** | **~1680ms** |
|
|
115
|
+
|
|
116
|
+
- 同步引擎:`requests` + `ThreadPoolExecutor` 并发请求
|
|
117
|
+
- 异步引擎:`aiohttp` + `asyncio.gather` 并发请求
|
|
118
|
+
- 解析优化:文本合并后一次性正则匹配,元组直接构建 DataFrame
|
|
119
|
+
|
|
120
|
+
## 运行基准测试
|
|
121
|
+
|
|
122
|
+
```bash
|
|
123
|
+
python -m qdata_quote.bench
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
## 依赖
|
|
127
|
+
|
|
128
|
+
- Python >= 3.10
|
|
129
|
+
- requests >= 2.28
|
|
130
|
+
- aiohttp >= 3.9
|
|
131
|
+
- pandas >= 2.0
|
qdata_quote-0.2.1/PKG-INFO
DELETED
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
Metadata-Version: 2.4
|
|
2
|
-
Name: qdata-quote
|
|
3
|
-
Version: 0.2.1
|
|
4
|
-
Summary: 实时行情采集服务,支持新浪和腾讯数据源
|
|
5
|
-
License-Expression: MIT
|
|
6
|
-
Requires-Python: >=3.10
|
|
7
|
-
Requires-Dist: aiohttp>=3.9
|
|
8
|
-
Requires-Dist: pandas>=2.0
|
|
9
|
-
Requires-Dist: requests>=2.28
|
|
10
|
-
Provides-Extra: dev
|
|
11
|
-
Requires-Dist: pytest-asyncio>=0.23; extra == 'dev'
|
|
12
|
-
Requires-Dist: pytest>=7.0; extra == 'dev'
|
|
13
|
-
Description-Content-Type: text/markdown
|
|
14
|
-
|
|
15
|
-
# qdata-quote
|
|
16
|
-
|
|
17
|
-
实时行情采集服务,支持新浪和腾讯数据源。
|
qdata_quote-0.2.1/README.md
DELETED
|
File without changes
|
|
File without changes
|
{qdata_quote-0.2.1 → qdata_quote-0.2.2}/docs/superpowers/specs/2026-06-12-quote-service-design.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|