@ricequant2026/rqdata-cli 1.0.0 → 1.0.2
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.
- package/CHANGELOG.md +0 -196
- package/README.md +131 -267
- package/package.json +8 -8
- package/scripts/npm/build-packages.js +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -33,199 +33,3 @@
|
|
|
33
33
|
- 68 个命令的详细参考文档
|
|
34
34
|
- Go 构建指南
|
|
35
35
|
|
|
36
|
-
|
|
37
|
-
### Added
|
|
38
|
-
|
|
39
|
-
#### 核心功能
|
|
40
|
-
- ✨ 完整的 RQData HTTP API 支持
|
|
41
|
-
- 🚀 CURL 连接复用优化(QPS 提升 44.4%)
|
|
42
|
-
- ⚡ Daemon 模式支持(长连接服务)
|
|
43
|
-
- 📊 多种输出格式(NDJSON、JSON、CSV)
|
|
44
|
-
- 🔒 严格的 Schema 验证
|
|
45
|
-
- 🎯 字段过滤功能(`--fields` 参数)
|
|
46
|
-
|
|
47
|
-
#### 数据模块
|
|
48
|
-
- 📈 **Index(指数)** - 指数列表、行情、成分股、权重
|
|
49
|
-
- 📊 **Stock CN(A股)** - 行情、财务、分红、融资融券、北向资金、停牌
|
|
50
|
-
- 🇭🇰 **Stock HK(港股)** - 行情、财务、分红
|
|
51
|
-
- 📅 **Calendar(交易日历)** - 交易日列表、前后交易日查询
|
|
52
|
-
- 📉 **Macro(宏观)** - Shibor、CPI、PPI、GDP
|
|
53
|
-
|
|
54
|
-
#### 认证系统
|
|
55
|
-
- 🔑 环境变量认证(推荐)
|
|
56
|
-
- 🔐 交互式登录
|
|
57
|
-
- 💾 Token 缓存机制
|
|
58
|
-
- ⏰ 自动 Token 刷新
|
|
59
|
-
|
|
60
|
-
#### 性能优化
|
|
61
|
-
- 🔄 CURL 连接复用
|
|
62
|
-
- 🌐 TCP Keep-Alive
|
|
63
|
-
- 📡 HTTP 持久连接
|
|
64
|
-
- ⚡ Daemon 模式(批量查询性能提升 25%)
|
|
65
|
-
|
|
66
|
-
#### 测试覆盖
|
|
67
|
-
- ✅ 74 个功能测试(100% 通过率)
|
|
68
|
-
- 📊 5 个性能测试场景
|
|
69
|
-
- 🔬 三方性能对比(CLI vs Daemon vs Python)
|
|
70
|
-
- 🧪 全模块性能验证
|
|
71
|
-
|
|
72
|
-
### Performance
|
|
73
|
-
|
|
74
|
-
#### 性能基准
|
|
75
|
-
- **单次请求**: 0.140s(优化前 0.154s,提升 9.1%)
|
|
76
|
-
- **连续请求**: 0.150s/次(优化前 0.200s/次,提升 25%)
|
|
77
|
-
- **平均 QPS**: 7.22 req/s(优化前 5 req/s,提升 44.4%)
|
|
78
|
-
- **大数据吞吐**: 7,652 行/秒
|
|
79
|
-
|
|
80
|
-
#### 场景性能
|
|
81
|
-
- **1-3次查询**: CLI 直接模式最快(比 Python 快 68-78%)
|
|
82
|
-
- **3-10次查询**: CLI Daemon 模式最快(比 Python 快 60-78%)
|
|
83
|
-
- **20+次高频**: Python API 最快(比 CLI 快 12倍)
|
|
84
|
-
- **大数据量**: Python API 最快(比 CLI 快 2.5倍)
|
|
85
|
-
|
|
86
|
-
### Documentation
|
|
87
|
-
|
|
88
|
-
- 📖 完整的 README.md
|
|
89
|
-
- 📚 API 文档
|
|
90
|
-
- 🔧 开发指南
|
|
91
|
-
- 📊 性能测试报告
|
|
92
|
-
- 🤝 贡献指南
|
|
93
|
-
- 📝 更新日志
|
|
94
|
-
|
|
95
|
-
### Technical Details
|
|
96
|
-
|
|
97
|
-
#### 架构
|
|
98
|
-
- C++17 标准
|
|
99
|
-
- CMake 构建系统
|
|
100
|
-
- vcpkg 依赖管理
|
|
101
|
-
- 模块化设计
|
|
102
|
-
|
|
103
|
-
#### 依赖库
|
|
104
|
-
- libcurl - HTTP 客户端
|
|
105
|
-
- nlohmann-json - JSON 处理
|
|
106
|
-
- CLI11 - 命令行解析
|
|
107
|
-
- csv-parser - CSV 解析
|
|
108
|
-
- fmt - 格式化输出
|
|
109
|
-
|
|
110
|
-
#### 平台支持
|
|
111
|
-
- ✅ macOS (Apple Silicon & Intel)
|
|
112
|
-
- ✅ Linux (x86_64)
|
|
113
|
-
- 🚧 Windows (计划中)
|
|
114
|
-
|
|
115
|
-
### Testing
|
|
116
|
-
|
|
117
|
-
#### 功能测试
|
|
118
|
-
- Index 模块: 8/8 通过 ✅
|
|
119
|
-
- Stock CN 模块: 23/23 通过 ✅
|
|
120
|
-
- Stock HK 模块: 8/8 通过 ✅
|
|
121
|
-
- Calendar 模块: 5/5 通过 ✅
|
|
122
|
-
- Fund 模块: 9/9 通过 ✅
|
|
123
|
-
- Futures 模块: 8/8 通过 ✅
|
|
124
|
-
- Options 模块: 7/7 通过 ✅
|
|
125
|
-
- Macro 模块: 6/6 通过 ✅
|
|
126
|
-
- **总计**: 74/74 通过(100%)✅
|
|
127
|
-
|
|
128
|
-
#### 性能测试
|
|
129
|
-
- 单次请求性能测试 ✅
|
|
130
|
-
- 连续请求性能测试 ✅
|
|
131
|
-
- 大数据量性能测试 ✅
|
|
132
|
-
- 高频请求性能测试 ✅
|
|
133
|
-
- 三方对比测试 ✅
|
|
134
|
-
|
|
135
|
-
### Known Issues
|
|
136
|
-
|
|
137
|
-
- Stock HK 模块性能相对较慢(QPS 3.17)- 受 API 响应速度限制
|
|
138
|
-
- 高频场景(20+次/秒)性能不如 Python API - 受进程启动开销限制
|
|
139
|
-
|
|
140
|
-
### Recommendations
|
|
141
|
-
|
|
142
|
-
#### 使用建议
|
|
143
|
-
- **临时查询(1-3次)**: 使用 CLI 直接模式
|
|
144
|
-
- **批量脚本(3-20次)**: 使用 CLI Daemon 模式
|
|
145
|
-
- **高频查询(20+次)**: 使用 Python API
|
|
146
|
-
- **大数据量(10K+行)**: 使用 Python API
|
|
147
|
-
|
|
148
|
-
## [1.0.1] - 2026-03-10
|
|
149
|
-
|
|
150
|
-
### Fixed
|
|
151
|
-
|
|
152
|
-
#### 财务数据功能修复
|
|
153
|
-
- 🐛 **修复 `stock cn financial` 命令 HTTP 400 错误**
|
|
154
|
-
- 问题:`get_pit_financials_ex` API 要求 `fields` 必填,但 CLI 在构建请求时把 `fields` 从 payload 中剔除
|
|
155
|
-
- 修复:针对 `get_pit_financials_ex` 方法,保留 payload 中的 `fields` 参数传给 API
|
|
156
|
-
- 影响:现在可以正常获取三大表财务数据(资产负债表、利润表、现金流量表)
|
|
157
|
-
|
|
158
|
-
- 🐛 **修复 `stock cn financial-indicator` 命令 HTTP 400 错误**
|
|
159
|
-
- 问题:使用了错误的 method `get_factor`(参数格式不匹配)
|
|
160
|
-
- 修复:改用 `get_pit_financials_ex` + 衍生指标字段
|
|
161
|
-
- 影响:现在可以正常获取 ROE、毛利率、净利率等财务衍生指标
|
|
162
|
-
|
|
163
|
-
#### 认证问题修复
|
|
164
|
-
- 🐛 **修复 Token 过期导致的 HTTP 401 错误**
|
|
165
|
-
- 问题:缓存的 token 过期后,CLI 继续使用导致认证失败
|
|
166
|
-
- 解决方案:删除 `~/.rqdata/token.cache` 后,CLI 自动重新认证获取新 token
|
|
167
|
-
- 建议:如遇 401 错误,运行 `rm -f ~/.rqdata/token.cache` 清除过期缓存
|
|
168
|
-
|
|
169
|
-
### Added
|
|
170
|
-
|
|
171
|
-
#### 完整的 HALO 策略支持
|
|
172
|
-
- ✅ 现在可以用纯 CLI 完成 HALO 策略筛选
|
|
173
|
-
- ✅ 支持获取三大表财务数据
|
|
174
|
-
- ✅ 支持获取财务衍生指标(ROE、毛利率等)
|
|
175
|
-
- ✅ 支持批量查询 20 只股票的财务数据
|
|
176
|
-
|
|
177
|
-
### Documentation
|
|
178
|
-
|
|
179
|
-
- 📝 添加财务数据 API 使用说明
|
|
180
|
-
- 📝 添加衍生指标字段名参考
|
|
181
|
-
- 📝 添加 Token 过期问题排查指南
|
|
182
|
-
|
|
183
|
-
### Technical Details
|
|
184
|
-
|
|
185
|
-
#### 代码修改
|
|
186
|
-
- `src/commands/stock_cn.cpp` 第 71-84 行:修改 `execute_stock_cn_command` 函数,针对 `get_pit_financials_ex` 保留 `fields` 参数
|
|
187
|
-
- `src/commands/stock_cn.cpp` 第 426 行:`financial-indicator` 命令改用 `get_pit_financials_ex` 方法
|
|
188
|
-
|
|
189
|
-
#### 测试验证
|
|
190
|
-
- ✅ `stock cn financial` 命令测试通过
|
|
191
|
-
- ✅ `stock cn financial-indicator` 命令测试通过
|
|
192
|
-
- ✅ HALO 策略 20 只股票批量查询测试通过
|
|
193
|
-
|
|
194
|
-
### Notes
|
|
195
|
-
|
|
196
|
-
#### 衍生指标字段名
|
|
197
|
-
- 使用完整名称:`return_on_equity_weighted_average`(不是 `roe`)
|
|
198
|
-
- TTM 字段使用大写:`net_profitTTM`(不是 `net_profit_ttm`)
|
|
199
|
-
- Quarter 格式使用小写:`2024q3`(不是 `2024Q3`)
|
|
200
|
-
|
|
201
|
-
## [Unreleased]
|
|
202
|
-
|
|
203
|
-
### Planned Features
|
|
204
|
-
|
|
205
|
-
- 🚧 Windows 平台支持
|
|
206
|
-
- 🚧 批量 API 支持
|
|
207
|
-
- 🚧 并行请求支持
|
|
208
|
-
- 🚧 MCP Server 支持
|
|
209
|
-
- 🚧 更多输出格式(Parquet、Arrow)
|
|
210
|
-
|
|
211
|
-
### Future Optimizations
|
|
212
|
-
|
|
213
|
-
- 🔮 CSV 解析优化
|
|
214
|
-
- 🔮 二进制数据格式支持
|
|
215
|
-
- 🔮 内存池优化
|
|
216
|
-
- 🔮 并发连接池
|
|
217
|
-
|
|
218
|
-
---
|
|
219
|
-
|
|
220
|
-
## Version History
|
|
221
|
-
|
|
222
|
-
- **v1.0.1** (2026-03-10) - 财务数据修复
|
|
223
|
-
- **v1.0.0** (2026-03-10) - 初始版本发布
|
|
224
|
-
|
|
225
|
-
---
|
|
226
|
-
|
|
227
|
-
## Links
|
|
228
|
-
|
|
229
|
-
- [Repository](http://git.ricequant.com/projects/RQAI/repos/rqdata-cli)
|
|
230
|
-
- [Documentation](http://git.ricequant.com/projects/RQAI/repos/rqdata-cli/browse/docs)
|
|
231
|
-
- [Issues](https://jira.ricequant.com)(RiceQuant 内部 Jira)
|
package/README.md
CHANGED
|
@@ -1,125 +1,148 @@
|
|
|
1
1
|
# RQData CLI
|
|
2
2
|
|
|
3
|
-
>
|
|
3
|
+
> 面向投资研究与 AI Agent 的 RQData 命令行工具
|
|
4
4
|
|
|
5
5
|
[](LICENSE)
|
|
6
6
|
[](https://golang.org)
|
|
7
7
|
[]()
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
RQData CLI 使用 Go 实现,提供单文件可执行程序,并通过统一的 `--payload` 输入和 `ndjson/json/csv` 输出封装 RQData 常用接口。当前仓库覆盖股票、指数、基金、期货、期权、宏观和交易日历 7 大数据域,内置 66 个数据命令,适合终端查询、脚本编排和 Agent 调用。
|
|
10
10
|
|
|
11
|
-
##
|
|
11
|
+
## 文档导航
|
|
12
12
|
|
|
13
|
-
-
|
|
14
|
-
-
|
|
15
|
-
-
|
|
16
|
-
|
|
17
|
-
|
|
13
|
+
- [快速上手](docs/QUICKSTART.md)
|
|
14
|
+
- [命令参考](docs/rqdata_cli_commands.md)
|
|
15
|
+
- [Go 构建说明](BUILD_GO.md)
|
|
16
|
+
- [迁移说明](MIGRATION.md)
|
|
17
|
+
- [更新日志](CHANGELOG.md)
|
|
18
|
+
- [测试说明](tests/README.md)
|
|
18
19
|
|
|
19
|
-
##
|
|
20
|
+
## 特性
|
|
20
21
|
|
|
21
|
-
-
|
|
22
|
-
-
|
|
23
|
-
-
|
|
24
|
-
-
|
|
25
|
-
-
|
|
26
|
-
-
|
|
27
|
-
-
|
|
22
|
+
- 单文件二进制,支持直接分发和脚本调用
|
|
23
|
+
- 统一命令接口:`rqdata <group> <command> --payload '{...}'`
|
|
24
|
+
- 默认输出 NDJSON,适合流式处理和 AI Agent 消费
|
|
25
|
+
- 支持 `--format json|csv` 切换输出格式
|
|
26
|
+
- 支持 `--schema` 查看单命令 schema,`rqdata schema list` 查看命令清单
|
|
27
|
+
- 支持 `--fields` 限制输出字段
|
|
28
|
+
- 自动处理认证、token 缓存和 token 失效重试
|
|
29
|
+
- 同时提供 Go 源码构建和 npm 平台包分发
|
|
28
30
|
|
|
29
|
-
##
|
|
31
|
+
## 安装
|
|
30
32
|
|
|
31
|
-
### 通过 npm
|
|
33
|
+
### 通过 npm 安装
|
|
32
34
|
|
|
33
35
|
```bash
|
|
34
36
|
npm install -g @ricequant2026/rqdata-cli
|
|
35
|
-
```
|
|
36
|
-
|
|
37
|
-
安装完成后即可直接使用:
|
|
38
|
-
|
|
39
|
-
```bash
|
|
40
37
|
rqdata --version
|
|
41
38
|
rqdata --help
|
|
42
39
|
```
|
|
43
40
|
|
|
44
|
-
|
|
41
|
+
说明:
|
|
42
|
+
|
|
43
|
+
- npm 包会通过 `bin/rqdata.js` 自动选择当前平台对应的二进制包
|
|
44
|
+
- 使用 npm 需要 Node.js 18+
|
|
45
|
+
|
|
46
|
+
### 从源码构建
|
|
45
47
|
|
|
46
48
|
```bash
|
|
47
|
-
|
|
48
|
-
git clone http://git.ricequant.com/scm/RQAI/rqdata-cli.git
|
|
49
|
+
git clone https://github.com/ricequant/rqdata-cli.git
|
|
49
50
|
cd rqdata-cli
|
|
50
|
-
|
|
51
|
-
# 编译(需要 Go 1.21+)
|
|
52
51
|
VERSION=1.0.0 ./build.sh
|
|
53
|
-
|
|
54
|
-
# 安装到系统路径
|
|
55
|
-
sudo mv rqdata /usr/local/bin/
|
|
52
|
+
./rqdata --help
|
|
56
53
|
```
|
|
57
54
|
|
|
58
|
-
|
|
55
|
+
`build.sh` 会在当前平台生成 `./rqdata`,并使用本地 `.cache/go-build` 作为 Go 构建缓存目录。
|
|
56
|
+
|
|
57
|
+
### 直接交叉编译
|
|
59
58
|
|
|
60
59
|
```bash
|
|
61
|
-
|
|
62
|
-
|
|
60
|
+
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 \
|
|
61
|
+
go build -trimpath -ldflags="-s -w -X github.com/ricequant/rqdata-cli/cmd.Version=1.0.0" \
|
|
62
|
+
-o rqdata-linux main.go
|
|
63
|
+
```
|
|
63
64
|
|
|
64
|
-
|
|
65
|
-
CGO_ENABLED=0 GOOS=darwin GOARCH=amd64 go build -trimpath -ldflags="-s -w -X github.com/rqdata/rqdata-cli/cmd.Version=1.0.0" -o rqdata-macos-amd64 main.go
|
|
65
|
+
更多构建方式见 [BUILD_GO.md](BUILD_GO.md)。
|
|
66
66
|
|
|
67
|
-
|
|
68
|
-
CGO_ENABLED=0 GOOS=darwin GOARCH=arm64 go build -trimpath -ldflags="-s -w -X github.com/rqdata/rqdata-cli/cmd.Version=1.0.0" -o rqdata-macos-arm64 main.go
|
|
67
|
+
## 认证
|
|
69
68
|
|
|
70
|
-
|
|
71
|
-
CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build -trimpath -ldflags="-s -w -X github.com/rqdata/rqdata-cli/cmd.Version=1.0.0" -o rqdata.exe main.go
|
|
72
|
-
```
|
|
69
|
+
CLI 会按以下优先级加载凭证:
|
|
73
70
|
|
|
74
|
-
|
|
71
|
+
1. 环境变量: `RQDATAC_CONF` / `RQDATAC2_CONF`
|
|
72
|
+
2. 环境变量: `RQDATA_USERNAME` / `RQDATA_PASSWORD`
|
|
73
|
+
3. 系统 Keyring
|
|
74
|
+
4. `~/.rqdata/credentials`
|
|
75
|
+
5. 终端交互输入
|
|
75
76
|
|
|
76
|
-
|
|
77
|
+
如果您已经是 rqdata 的付费用户,您的系统环境中应该已经配置好了 `RQDATAC_CONF`, 无需更多设置。
|
|
78
|
+
|
|
79
|
+
使用交互式登录:
|
|
77
80
|
|
|
78
81
|
```bash
|
|
79
|
-
rqdata
|
|
80
|
-
rqdata
|
|
82
|
+
rqdata auth login
|
|
83
|
+
rqdata auth status
|
|
84
|
+
rqdata auth logout
|
|
81
85
|
```
|
|
82
86
|
|
|
83
|
-
|
|
87
|
+
认证成功后,token 会缓存到 `~/.rqdata/token.cache`。
|
|
84
88
|
|
|
85
|
-
|
|
89
|
+
## 使用方式
|
|
86
90
|
|
|
87
|
-
|
|
88
|
-
# 添加到 ~/.zshrc 或 ~/.bashrc
|
|
89
|
-
export RQDATA_USERNAME="your_phone_or_email"
|
|
90
|
-
export RQDATA_PASSWORD="your_password"
|
|
91
|
+
所有数据命令都遵循同一套调用约定:
|
|
91
92
|
|
|
92
|
-
|
|
93
|
-
|
|
93
|
+
```bash
|
|
94
|
+
rqdata <group> <subgroup?> <command> --payload '{...}'
|
|
94
95
|
```
|
|
95
96
|
|
|
96
|
-
|
|
97
|
+
常用参数:
|
|
98
|
+
|
|
99
|
+
- `--payload`:JSON 字符串,请求参数必填
|
|
100
|
+
- `--format`:输出格式,默认 `ndjson`,可选 `json`、`csv`
|
|
101
|
+
- `--fields`:限制返回字段
|
|
102
|
+
- `--schema`:打印当前命令的 schema
|
|
103
|
+
|
|
104
|
+
查看命令树:
|
|
97
105
|
|
|
98
106
|
```bash
|
|
99
|
-
rqdata
|
|
107
|
+
rqdata --help
|
|
108
|
+
rqdata schema list
|
|
100
109
|
```
|
|
101
110
|
|
|
102
|
-
|
|
111
|
+
查看单个命令的参数定义:
|
|
103
112
|
|
|
104
113
|
```bash
|
|
105
|
-
rqdata
|
|
114
|
+
rqdata stock cn price --schema
|
|
115
|
+
rqdata futures dominant-price --schema
|
|
106
116
|
```
|
|
107
117
|
|
|
108
|
-
|
|
118
|
+
## 命令覆盖
|
|
119
|
+
|
|
120
|
+
当前 `internal/configs/commands.json` 中定义了 66 个数据命令:
|
|
121
|
+
|
|
122
|
+
- `stock`:30 个命令,覆盖 A 股与港股基础信息、行情、财务、公告、股东、行业、北向资金等
|
|
123
|
+
- `index`:5 个命令,覆盖指数列表、行情、成分股与权重
|
|
124
|
+
- `fund`:7 个命令,覆盖基金净值、持仓、指标、经理与分红
|
|
125
|
+
- `futures`:5 个命令,覆盖合约列表、行情、主力合约与主力行情
|
|
126
|
+
- `options`:8 个命令,覆盖合约、行情、Greeks、指标与主力月份
|
|
127
|
+
- `macro`:8 个命令,覆盖准备金率、货币供应、CPI、PPI、GDP、PMI、利率和通用宏观查询
|
|
128
|
+
- `calendar`:3 个命令,覆盖交易日列表、前一交易日、后一交易日
|
|
109
129
|
|
|
110
|
-
|
|
130
|
+
完整参数说明见 [docs/rqdata_cli_commands.md](docs/rqdata_cli_commands.md)。
|
|
111
131
|
|
|
112
|
-
|
|
132
|
+
## 示例
|
|
133
|
+
|
|
134
|
+
### A 股行情
|
|
113
135
|
|
|
114
136
|
```bash
|
|
115
137
|
rqdata stock cn price --payload '{
|
|
116
|
-
"order_book_ids": ["
|
|
138
|
+
"order_book_ids": ["000001.XSHE", "600000.XSHG"],
|
|
117
139
|
"start_date": "2024-01-01",
|
|
118
|
-
"end_date": "2024-01-31"
|
|
140
|
+
"end_date": "2024-01-31",
|
|
141
|
+
"fields": ["open", "high", "low", "close", "volume"]
|
|
119
142
|
}'
|
|
120
143
|
```
|
|
121
144
|
|
|
122
|
-
###
|
|
145
|
+
### 指数成分股
|
|
123
146
|
|
|
124
147
|
```bash
|
|
125
148
|
rqdata index constituents --payload '{
|
|
@@ -128,248 +151,89 @@ rqdata index constituents --payload '{
|
|
|
128
151
|
}'
|
|
129
152
|
```
|
|
130
153
|
|
|
131
|
-
###
|
|
154
|
+
### 主力连续期货行情
|
|
132
155
|
|
|
133
156
|
```bash
|
|
134
|
-
rqdata
|
|
157
|
+
rqdata futures dominant-price --payload '{
|
|
158
|
+
"underlying_symbols": "IF",
|
|
135
159
|
"start_date": "2024-01-01",
|
|
136
|
-
"end_date": "2024-12-31"
|
|
137
|
-
|
|
160
|
+
"end_date": "2024-12-31",
|
|
161
|
+
"fields": ["open", "close", "volume", "open_interest"]
|
|
162
|
+
}' --format json
|
|
138
163
|
```
|
|
139
164
|
|
|
140
|
-
###
|
|
165
|
+
### 基金指标
|
|
141
166
|
|
|
142
167
|
```bash
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
```
|
|
149
|
-
|
|
150
|
-
> 📖 更多示例请查看 [快速上手指南](docs/QUICKSTART.md)
|
|
151
|
-
|
|
152
|
-
## 📚 支持的命令
|
|
153
|
-
|
|
154
|
-
### 🔐 认证管理
|
|
155
|
-
- `rqdata auth login` - 交互式登录
|
|
156
|
-
- `rqdata auth status` - 查看认证状态
|
|
157
|
-
|
|
158
|
-
### ⚡ Daemon 模式
|
|
159
|
-
- `rqdata daemon start` - 启动 daemon(批量查询性能提升 25%)
|
|
160
|
-
- `rqdata daemon stop` - 停止 daemon
|
|
161
|
-
- `rqdata daemon status` - 查看状态
|
|
162
|
-
|
|
163
|
-
### 📈 指数数据(4个命令)
|
|
164
|
-
- `rqdata index instruments` - 获取指数列表
|
|
165
|
-
- `rqdata index price` - 获取指数行情
|
|
166
|
-
- `rqdata index constituents` - 获取成分股列表
|
|
167
|
-
- `rqdata index weights` - 获取成分股权重
|
|
168
|
-
|
|
169
|
-
### 📊 A股数据(8个命令)
|
|
170
|
-
- `rqdata stock cn instruments` - 获取股票列表
|
|
171
|
-
- `rqdata stock cn price` - 获取股票行情
|
|
172
|
-
- `rqdata stock cn dividends` - 获取分红数据
|
|
173
|
-
- `rqdata stock cn financials` - 获取财务数据
|
|
174
|
-
- `rqdata stock cn shares` - 获取股本结构
|
|
175
|
-
- `rqdata stock cn margin` - 获取融资融券
|
|
176
|
-
- `rqdata stock cn suspended` - 获取停牌信息
|
|
177
|
-
- `rqdata stock cn northbound` - 获取北向资金
|
|
178
|
-
|
|
179
|
-
### 🇭🇰 港股数据(4个命令)
|
|
180
|
-
- `rqdata stock hk instruments` - 获取港股列表
|
|
181
|
-
- `rqdata stock hk price` - 获取港股行情
|
|
182
|
-
- `rqdata stock hk dividends` - 获取分红数据
|
|
183
|
-
- `rqdata stock hk financials` - 获取财务数据
|
|
184
|
-
|
|
185
|
-
### 📅 交易日历(3个命令)
|
|
186
|
-
- `rqdata calendar dates` - 获取交易日列表
|
|
187
|
-
- `rqdata calendar prev` - 获取前一交易日
|
|
188
|
-
- `rqdata calendar next` - 获取后一交易日
|
|
189
|
-
|
|
190
|
-
### 📉 宏观数据(4个命令)
|
|
191
|
-
- `rqdata macro shibor` - 获取 Shibor 利率
|
|
192
|
-
- `rqdata macro price-cpi` - 获取 CPI 数据
|
|
193
|
-
- `rqdata macro price-ppi` - 获取 PPI 数据
|
|
194
|
-
- `rqdata macro gdp` - 获取 GDP 数据
|
|
195
|
-
|
|
196
|
-
> 📖 **总计 26 个命令**,完整文档请查看 [快速上手指南](docs/QUICKSTART.md)
|
|
197
|
-
|
|
198
|
-
## 🎨 输出格式
|
|
199
|
-
|
|
200
|
-
```bash
|
|
201
|
-
# NDJSON(默认,适合流式处理)
|
|
202
|
-
rqdata stock cn price --payload '{...}'
|
|
203
|
-
|
|
204
|
-
# JSON(结构化数组)
|
|
205
|
-
rqdata stock cn price --payload '{...}' --format json
|
|
206
|
-
|
|
207
|
-
# CSV(原始格式)
|
|
208
|
-
rqdata stock cn price --payload '{...}' --format csv
|
|
168
|
+
rqdata fund indicators --payload '{
|
|
169
|
+
"order_book_ids": ["000001"],
|
|
170
|
+
"start_date": "2024-01-01",
|
|
171
|
+
"end_date": "2024-12-31"
|
|
172
|
+
}' --format json
|
|
209
173
|
```
|
|
210
174
|
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
### Schema 自动生成
|
|
214
|
-
|
|
215
|
-
使用 Python 脚本从 rqdatac 自动生成参数 schema:
|
|
175
|
+
### 宏观利率
|
|
216
176
|
|
|
217
177
|
```bash
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
rqdata stock cn price --schema
|
|
178
|
+
rqdata macro interest-rate --payload '{
|
|
179
|
+
"start_date": "2024-01-01",
|
|
180
|
+
"end_date": "2024-12-31"
|
|
181
|
+
}'
|
|
223
182
|
```
|
|
224
183
|
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
### 批量查询示例
|
|
184
|
+
### 交易日历
|
|
228
185
|
|
|
229
186
|
```bash
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
\"end_date\": \"2024-01-31\"
|
|
236
|
-
}" > "${stock}.ndjson"
|
|
237
|
-
done
|
|
187
|
+
rqdata calendar trading-dates --payload '{
|
|
188
|
+
"market": "cn",
|
|
189
|
+
"start_date": "2024-01-01",
|
|
190
|
+
"end_date": "2024-12-31"
|
|
191
|
+
}' --format json
|
|
238
192
|
```
|
|
239
193
|
|
|
240
|
-
##
|
|
241
|
-
|
|
242
|
-
### 技术栈
|
|
194
|
+
## 输出格式
|
|
243
195
|
|
|
244
|
-
|
|
245
|
-
- **依赖**:
|
|
246
|
-
- `github.com/spf13/cobra` - CLI 框架
|
|
247
|
-
- `github.com/zalando/go-keyring` - 系统 Keyring 集成
|
|
248
|
-
- `golang.org/x/term` - 终端交互
|
|
249
|
-
- **配置**:
|
|
250
|
-
- `internal/configs/commands.json` - 命令定义
|
|
251
|
-
- `internal/configs/schema.json` - 参数 Schema(自动生成)
|
|
196
|
+
### NDJSON
|
|
252
197
|
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
```
|
|
256
|
-
rqdata-cli/
|
|
257
|
-
├── main.go # 入口文件
|
|
258
|
-
├── cmd/ # 命令定义
|
|
259
|
-
├── internal/ # 内部包
|
|
260
|
-
│ ├── auth/ # 认证模块
|
|
261
|
-
│ ├── client/ # HTTP 客户端
|
|
262
|
-
│ ├── configs/ # 配置文件(commands.json, schema.json)
|
|
263
|
-
│ ├── executor/ # 命令执行器
|
|
264
|
-
│ ├── formatter/ # 输出格式化
|
|
265
|
-
│ └── loader/ # 配置加载器
|
|
266
|
-
├── scripts/ # 工具脚本
|
|
267
|
-
│ └── generate_schema_json.py # Schema 生成脚本
|
|
268
|
-
├── tests/ # 测试
|
|
269
|
-
└── docs/ # 文档
|
|
270
|
-
```
|
|
271
|
-
|
|
272
|
-
### 构建与测试
|
|
198
|
+
默认输出格式,每行一个 JSON 对象,适合管道和流式处理:
|
|
273
199
|
|
|
274
200
|
```bash
|
|
275
|
-
|
|
276
|
-
VERSION=dev ./build.sh
|
|
277
|
-
|
|
278
|
-
# 运行
|
|
279
|
-
./rqdata --help
|
|
280
|
-
|
|
281
|
-
# 测试
|
|
282
|
-
./rqdata auth status
|
|
283
|
-
./rqdata stock cn price --schema
|
|
201
|
+
rqdata stock cn price --payload '{...}'
|
|
284
202
|
```
|
|
285
203
|
|
|
286
|
-
|
|
204
|
+
### JSON
|
|
287
205
|
|
|
288
|
-
|
|
289
|
-
- [快速上手](docs/QUICKSTART.md)
|
|
290
|
-
- [命令列表](docs/rqdata_cli_commands.md)
|
|
291
|
-
- [更新日志](CHANGELOG.md)
|
|
292
|
-
|
|
293
|
-
## 🚢 npm 发布
|
|
294
|
-
|
|
295
|
-
项目现在采用“主包 + 平台包”的发布方式:
|
|
296
|
-
|
|
297
|
-
- `@ricequant2026/rqdata-cli`:主包,只包含 JS wrapper 和平台依赖声明
|
|
298
|
-
- `@ricequant2026/rqdata-cli-linux-x64`
|
|
299
|
-
- `@ricequant2026/rqdata-cli-darwin-x64`
|
|
300
|
-
- `@ricequant2026/rqdata-cli-darwin-arm64`
|
|
301
|
-
- `@ricequant2026/rqdata-cli-win32-x64`
|
|
302
|
-
|
|
303
|
-
发布时先发平台包,再发主包:
|
|
206
|
+
返回结构化 JSON:
|
|
304
207
|
|
|
305
208
|
```bash
|
|
306
|
-
|
|
307
|
-
npm run publish:all
|
|
209
|
+
rqdata stock cn price --payload '{...}' --format json
|
|
308
210
|
```
|
|
309
211
|
|
|
310
|
-
|
|
212
|
+
### CSV
|
|
311
213
|
|
|
312
|
-
|
|
214
|
+
返回原始 CSV 文本:
|
|
313
215
|
|
|
314
216
|
```bash
|
|
315
|
-
|
|
316
|
-
npm run publish:next
|
|
317
|
-
```
|
|
318
|
-
|
|
319
|
-
如果只想验证发布命令本身而不真正上传:
|
|
320
|
-
|
|
321
|
-
```bash
|
|
322
|
-
npm run publish:dry-run
|
|
217
|
+
rqdata stock cn price --payload '{...}' --format csv
|
|
323
218
|
```
|
|
324
219
|
|
|
325
|
-
|
|
220
|
+
## 仓库内附内容
|
|
326
221
|
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
222
|
+
- `examples/`:研究与筛选示例脚本
|
|
223
|
+
- `docs/`:贡献说明、测试计划、命令参考
|
|
224
|
+
- `scripts/generate_cli_docs.py`:根据 `commands.json` / `schema.json` 生成命令文档
|
|
225
|
+
- `scripts/generate_schema_json.py`:从 rqdatac 环境生成 schema
|
|
330
226
|
|
|
331
|
-
|
|
227
|
+
## 开发
|
|
332
228
|
|
|
333
229
|
```bash
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
230
|
+
./build.sh
|
|
231
|
+
./rqdata --help
|
|
232
|
+
python3 scripts/generate_cli_docs.py
|
|
337
233
|
```
|
|
338
234
|
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
### v2.0.0 (2026-03-27) - Go 重写版本
|
|
342
|
-
|
|
343
|
-
- ✨ 使用 Go 完全重写,单文件可执行
|
|
344
|
-
- 🔐 系统 Keyring 集成,安全存储凭证
|
|
345
|
-
- 📖 Schema 自动生成,支持中文参数描述
|
|
346
|
-
- 🚀 静态编译,跨平台分发
|
|
347
|
-
- 🔧 修复 HTML 转义问题(`array<string>` 显示正确)
|
|
348
|
-
- 📊 完整的数据覆盖(指数、A股、港股、期货、期权、基金、宏观)
|
|
349
|
-
|
|
350
|
-
### v1.0.0 (2026-03-10) - C++ 版本
|
|
351
|
-
|
|
352
|
-
- ✨ 初始 C++ 版本发布
|
|
353
|
-
- 🚀 CURL 连接复用优化
|
|
354
|
-
- 📊 完整的数据覆盖
|
|
355
|
-
|
|
356
|
-
详见 [CHANGELOG.md](CHANGELOG.md)
|
|
357
|
-
|
|
358
|
-
## 📄 许可证
|
|
359
|
-
|
|
360
|
-
MIT License - 详见 [LICENSE](LICENSE)
|
|
361
|
-
|
|
362
|
-
## 🙏 致谢
|
|
363
|
-
|
|
364
|
-
- [RQData](https://www.ricequant.com) - 提供数据 API
|
|
365
|
-
- [CLI11](https://github.com/CLIUtils/CLI11) - 命令行解析
|
|
366
|
-
- [nlohmann/json](https://github.com/nlohmann/json) - JSON 处理
|
|
367
|
-
|
|
368
|
-
## 📞 支持
|
|
369
|
-
|
|
370
|
-
- 🐛 Issues: [Jira](https://jira.ricequant.com)(RiceQuant 内部)
|
|
371
|
-
- 📚 文档: [项目文档](http://git.ricequant.com/projects/RQAI/repos/rqdata-cli/browse/docs)
|
|
235
|
+
集成测试相关说明见 [tests/README.md](tests/README.md)。
|
|
372
236
|
|
|
373
|
-
|
|
237
|
+
## License
|
|
374
238
|
|
|
375
|
-
|
|
239
|
+
MIT
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ricequant2026/rqdata-cli",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.2",
|
|
4
4
|
"description": "RQData CLI for AI agents and quantitative research",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"bin": {
|
|
@@ -14,10 +14,10 @@
|
|
|
14
14
|
"CHANGELOG.md"
|
|
15
15
|
],
|
|
16
16
|
"optionalDependencies": {
|
|
17
|
-
"@ricequant2026/rqdata-cli-linux-x64": "1.0.
|
|
18
|
-
"@ricequant2026/rqdata-cli-darwin-x64": "1.0.
|
|
19
|
-
"@ricequant2026/rqdata-cli-darwin-arm64": "1.0.
|
|
20
|
-
"@ricequant2026/rqdata-cli-win32-x64": "1.0.
|
|
17
|
+
"@ricequant2026/rqdata-cli-linux-x64": "1.0.2",
|
|
18
|
+
"@ricequant2026/rqdata-cli-darwin-x64": "1.0.2",
|
|
19
|
+
"@ricequant2026/rqdata-cli-darwin-arm64": "1.0.2",
|
|
20
|
+
"@ricequant2026/rqdata-cli-win32-x64": "1.0.2"
|
|
21
21
|
},
|
|
22
22
|
"scripts": {
|
|
23
23
|
"build:npm": "node scripts/npm/build-packages.js",
|
|
@@ -40,10 +40,10 @@
|
|
|
40
40
|
},
|
|
41
41
|
"repository": {
|
|
42
42
|
"type": "git",
|
|
43
|
-
"url": "https://github.com/
|
|
43
|
+
"url": "https://github.com/ricequant/rqdata-cli.git"
|
|
44
44
|
},
|
|
45
|
-
"homepage": "https://github.com/
|
|
45
|
+
"homepage": "https://github.com/ricequant/rqdata-cli",
|
|
46
46
|
"bugs": {
|
|
47
|
-
"url": "https://github.com/
|
|
47
|
+
"url": "https://github.com/ricequant/rqdata-cli/issues"
|
|
48
48
|
}
|
|
49
49
|
}
|
|
@@ -32,7 +32,7 @@ function buildTargets() {
|
|
|
32
32
|
|
|
33
33
|
for (const target of PLATFORM_TARGETS) {
|
|
34
34
|
const outputPath = path.join(DIST_DIR, target.output);
|
|
35
|
-
const ldflags = `-s -w -X github.com/
|
|
35
|
+
const ldflags = `-s -w -X github.com/ricequant/rqdata-cli/cmd.Version=${VERSION}`;
|
|
36
36
|
|
|
37
37
|
console.log(`Building ${target.key} -> ${target.output}`);
|
|
38
38
|
run('go', ['build', '-trimpath', '-ldflags', ldflags, '-o', outputPath, 'main.go'], {
|