daxiapi-cli 2.4.2 → 2.5.0

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/README.md CHANGED
@@ -1,6 +1,8 @@
1
1
  # daxiapi-cli
2
2
 
3
- 大虾皮金融数据API命令行工具。需要注册 daxiapi.com 网站,并且获取API Token之后才能使用。
3
+ 大虾皮金融数据API命令行工具。需要注册 [daxiapi.com](https://daxiapi.com) 并获取 API Token 后才能使用。
4
+
5
+ > 💡 `daxiapi` 命令也可以使用简写 `dxp`
4
6
 
5
7
  ## 安装
6
8
 
@@ -8,8 +10,8 @@
8
10
  # 全局安装
9
11
  npm install -g daxiapi-cli
10
12
 
11
- # 或使用 pnpm
12
- pnpm add -g daxiapi-cli
13
+ # 或使用 npx(无需安装,始终使用最新版)
14
+ npx daxiapi-cli@latest market index
13
15
  ```
14
16
 
15
17
  ## 配置
@@ -17,164 +19,170 @@ pnpm add -g daxiapi-cli
17
19
  首次使用需要配置 API Token(在 daxiapi.com 用户中心申请):
18
20
 
19
21
  ```bash
20
- # 方式一:配置文件
22
+ # 方式一:配置文件(推荐)
21
23
  daxiapi config set token YOUR_API_TOKEN
22
24
 
23
25
  # 方式二:环境变量
24
26
  export DAXIAPI_TOKEN=YOUR_API_TOKEN
25
27
  ```
26
28
 
27
- ## 使用
28
-
29
- ### 配置管理
29
+ ### 配置管理命令
30
30
 
31
31
  ```bash
32
- # 设置Token
33
- daxiapi config set token YOUR_API_TOKEN
34
-
35
- # 设置API地址(可选)
36
- daxiapi config set baseUrl https://daxiapi.com
37
-
38
32
  # 查看所有配置
39
33
  daxiapi config get
40
34
 
41
- # 删除配置
35
+ # 设置配置项
36
+ daxiapi config set token YOUR_API_TOKEN
37
+ daxiapi config set baseUrl https://daxiapi.com
38
+
39
+ # 删除配置项
42
40
  daxiapi config delete token
43
41
  ```
44
42
 
43
+ ---
44
+
45
+ ## 命令一览
46
+
45
47
  ### 市场数据
46
48
 
47
49
  ```bash
48
- # 市场概览(主流指数)
49
- daxiapi market
50
+ # 主流指数行情(CS强度、多日涨跌幅)
51
+ daxiapi market index
52
+
53
+ # 市场三维结构综合判断(趋势+估值+情绪),推荐优先使用
54
+ daxiapi market compass
50
55
 
51
- # 市场温度
56
+ # 市场温度原始数据(估值温度、恐贪指数、趋势温度、动量温度)
52
57
  daxiapi market temp
53
58
 
54
- # 市场风格
59
+ # 大小盘风格轮动(中证2000 vs 沪深300 差值及历史百分位)
55
60
  daxiapi market style
56
61
 
57
- # 市场估值
62
+ # 主要指数估值(PE、PB、估值温度、历史百分位)
58
63
  daxiapi market value
59
64
  ```
60
65
 
66
+ ---
67
+
61
68
  ### 板块数据
62
69
 
63
70
  ```bash
64
- # 板块列表
65
- daxiapi sector
71
+ # 板块热力图(按 CS 强度排序,默认展示前5)
72
+ daxiapi sector heatmap
66
73
 
67
- # 指定排序和数量
68
- daxiapi sector --order zdf --limit 10
74
+ # 按涨跌幅排序,展示前10
75
+ daxiapi sector heatmap --order zdf --limit 10
69
76
 
70
- # 行业板块数据
77
+ # 行业板块列表(今日涨幅、CS强度、CS均线)
71
78
  daxiapi sector bk
72
79
 
73
- # 板块内个股排名
80
+ # 板块内个股排名(按 CS 强度排序)
74
81
  daxiapi sector stocks --code BK0457
75
82
 
76
- # 热门股票(各板块领涨股)
83
+ # 板块内个股排名(按涨跌幅排序)
84
+ daxiapi sector stocks --code BK0457 --order zdf
85
+
86
+ # 热门股票(当日涨幅>7% 且 IBS>50 的强势股,按板块分组)
77
87
  daxiapi sector top
78
88
 
79
- # 热门概念板块
89
+ # 热门概念板块(同花顺,默认)
80
90
  daxiapi sector gn
81
91
 
82
- # 使用同花顺数据源(默认)
83
- daxiapi sector gn --type ths
84
-
85
- # 使用东方财富数据源
92
+ # 热门概念板块(东方财富数据源)
86
93
  daxiapi sector gn --type dfcf
87
94
  ```
88
95
 
89
- ### 股票数据
96
+ **sector stocks 排序字段**:`cs`(CS强度)、`zdf`(涨跌幅)、`sm`(市值)、`cg`(成交额)、`cr`(换手率)、`sctr`(SCTR排名)
90
97
 
91
- ```bash
92
- # 搜索股票或板块
93
- daxiapi search 平安
94
- daxiapi search 锂电 --type bk
98
+ ---
95
99
 
96
- # 查询单个股票
100
+ ### 个股数据
101
+
102
+ ```bash
103
+ # 查询单只股票详情
97
104
  daxiapi stock info 000001
98
105
 
99
- # 查询多个股票
106
+ # 批量查询(最多20只,空格或逗号分隔)
100
107
  daxiapi stock info 000001 600031 300750
101
108
 
102
- # 概念股查询
109
+ # 查询概念板块成分股(同花顺板块ID)
103
110
  daxiapi stock gn 881273
104
111
 
105
- # 技术形态筛选股票
112
+ # 查询概念板块成分股(东方财富板块ID)
113
+ daxiapi stock gn BK0428 --type dfcf
114
+
115
+ # 技术形态选股
106
116
  daxiapi stock pattern vcp
107
117
  daxiapi stock pattern rps
108
118
  daxiapi stock pattern newHigh
119
+
120
+ # 个股主力资金流向(默认5天)
121
+ daxiapi stock capital-flow 600031
122
+
123
+ # 个股主力资金流向(指定天数,最多30天)
124
+ daxiapi stock capital-flow 600031 --days 10
109
125
  ```
110
126
 
111
- #### 支持的技术形态(pattern)
127
+ #### 技术形态类型(stock pattern)
112
128
 
113
129
  | 形态代码 | 说明 |
114
130
  |---------|------|
115
131
  | **价值指标类** | |
116
- | gxl | 股息率大于3%的股票 |
132
+ | `gxl` | 高股息率(股息率 > 3%) |
117
133
  | **强度指标类** | |
118
- | rps | RPS大于70的股票(欧奈尔RPS指标) |
119
- | sctr | SCTR大于70的股票(Stockcharts Rank相对强度排序) |
120
- | rpsTop3 | RPS行业前三 |
121
- | csTop3 | CS行业前三 |
122
- | sctrTop3 | SCTR行业前三 |
134
+ | `rps` | RPS > 70(欧奈尔相对强度) |
135
+ | `sctr` | SCTR > 70Stockcharts 综合排名) |
136
+ | `rpsTop3` | RPS 行业前三 |
137
+ | `csTop3` | CS 强度行业前三 |
138
+ | `sctrTop3` | SCTR 行业前三 |
123
139
  | **趋势形态类** | |
124
- | trendUp | K线趋势向上 |
125
- | high_60d | 大量创60日新高 |
126
- | newHigh | 新高附近 |
127
- | crossMa50 | 上穿MA50 |
128
- | crossoverBox | 价格行为交易法信号K,上穿箱体 |
129
- | cs_crossover_20 | CS穿过MA20 |
140
+ | `trendUp` | K线趋势向上 |
141
+ | `high_60d` | 近期创60日新高 |
142
+ | `newHigh` | 年度新高附近 |
143
+ | `crossMa50` | 上穿 MA50 |
144
+ | `crossoverBox` | 价格行为信号K(上穿箱体) |
145
+ | `cs_crossover_20` | CS 强度穿过 MA20 |
130
146
  | **成交量形态类** | |
131
- | fangliang | 放量上涨(前一天是VCP/3C形态,当天放量突破收盘在高点) |
132
- | fangliangtupo | 放量突破箱体 |
147
+ | `fangliang` | 放量上涨(前日VCP形态,当日放量突破) |
148
+ | `fangliangtupo` | 放量突破箱体 |
133
149
  | **涨跌幅排名类** | |
134
- | zdf1dTop3 | 1日涨幅行业前三 |
135
- | zdf5dTop3 | 5日涨幅行业前三 |
136
- | zdf10dTop3 | 10日涨幅行业前三 |
137
- | zdf20dTop3 | 20日涨幅行业前三 |
138
- | shizhiTop3 | 行业市值前三 |
150
+ | `zdf1dTop3` | 1日涨幅行业前三 |
151
+ | `zdf5dTop3` | 5日涨幅行业前三 |
152
+ | `zdf10dTop3` | 10日涨幅行业前三 |
153
+ | `zdf20dTop3` | 20日涨幅行业前三 |
154
+ | `shizhiTop3` | 市值行业前三 |
139
155
  | **经典技术形态类** | |
140
- | vcp | 股魔VCP形态(波动收缩形态) |
141
- | joc | 跨越小溪Joc |
142
- | sos | 强势上涨SOS |
143
- | sos_h1 | SOS之后出现高1入场点 |
144
- | spring | Spring弹簧形态(上涨波段回调后出现spring向上) |
145
- | w | SOS之后出现W底吸收 |
146
- | lps | LPS最后供应点(SOS之后的LPS) |
147
- | ibs | K线实体较大(当日放量上涨收盘超昨日高点,实体长度超当日幅度69%) |
148
- ```
156
+ | `vcp` | VCP 波动收缩形态(股票魔法师) |
157
+ | `joc` | Joc 越过小溪(威科夫) |
158
+ | `sos` | SOS 强势上涨(威科夫) |
159
+ | `sos_h1` | SOS 后出现高1入场点 |
160
+ | `spring` | Spring 弹簧形态(威科夫) |
161
+ | `w` | SOS 后出现 W 底吸收 |
162
+ | `lps` | LPS 最后供应点(威科夫) |
163
+ | `ibs` | K线实体较大(放量上涨,收盘超昨日高点) |
149
164
 
150
- ### K线数据
151
-
152
- ```bash
153
- # 获取K线数据
154
- daxiapi kline 000001
155
- ```
165
+ ---
156
166
 
157
167
  ### 涨跌停
158
168
 
159
169
  ```bash
160
- # 涨停池
170
+ # 涨停池(默认)
161
171
  daxiapi zdt
162
172
 
163
173
  # 跌停池
164
174
  daxiapi zdt --type dt
165
- ```
166
-
167
- ### 成交额
168
175
 
169
- ```bash
170
- # 获取A股市场成交额数据
171
- daxiapi turnover
176
+ # 炸板池
177
+ daxiapi zdt --type zb
172
178
  ```
173
179
 
180
+ ---
181
+
174
182
  ### 热榜数据
175
183
 
176
184
  ```bash
177
- # 热股榜(默认:1小时、大家都在看)
185
+ # 热股榜(默认:1小时维度,大家都在看)
178
186
  daxiapi hotrank stock
179
187
 
180
188
  # 热股榜 - 24小时维度
@@ -183,13 +191,13 @@ daxiapi hotrank stock --type day
183
191
  # 热股榜 - 快速飙升个股
184
192
  daxiapi hotrank stock --list-type skyrocket
185
193
 
186
- # 热股榜 - 趋势投资派关注个股
194
+ # 热股榜 - 趋势投资派关注
187
195
  daxiapi hotrank stock --list-type trend
188
196
 
189
- # 热股榜 - 价值派关注个股
197
+ # 热股榜 - 价值派关注
190
198
  daxiapi hotrank stock --list-type value
191
199
 
192
- # 热股榜 - 技术派关注个股
200
+ # 热股榜 - 技术派关注
193
201
  daxiapi hotrank stock --list-type tech
194
202
 
195
203
  # 概念板块热榜
@@ -199,48 +207,85 @@ daxiapi hotrank concept
199
207
  daxiapi hotrank board
200
208
  ```
201
209
 
202
- #### 热股榜榜单类型(list-type)
210
+ **热股榜说明**:`--type`(`hour`/`day`)仅对 `normal` 和 `skyrocket` 榜单有效;`trend`/`value`/`tech` 榜单固定使用日维度。
203
211
 
204
- | 榜单类型 | 说明 |
205
- |---------|------|
206
- | normal | 大家都在看(默认) |
207
- | skyrocket | 快速飙升个股 |
208
- | trend | 趋势投资派关注个股 |
209
- | value | 价值派关注个股 |
210
- | tech | 技术派关注个股 |
212
+ ---
213
+
214
+ ### 成交额
215
+
216
+ ```bash
217
+ # 全市场成交额及较昨日变化
218
+ daxiapi turnover
219
+ ```
220
+
221
+ ---
222
+
223
+ ### 红利指数
224
+
225
+ ```bash
226
+ # 红利低波指数打分(默认)
227
+ daxiapi dividend score
228
+
229
+ # 指定指数
230
+ daxiapi dividend score -c 2.H30269 # 红利低波
231
+ daxiapi dividend score -c 2.930955 # 红利低波100
232
+ daxiapi dividend score -c 1.000922 # 中证红利
233
+ daxiapi dividend score -c 2.932365 # 中证现金流
234
+ ```
235
+
236
+ ---
211
237
 
212
238
  ### 财报数据
213
239
 
214
240
  ```bash
215
241
  # 获取个股财务报表数据
216
242
  daxiapi report finance 300014
217
-
218
- # 查询其他股票
219
243
  daxiapi report finance 600036
220
- daxiapi report finance 000001
221
244
  ```
222
245
 
246
+ ---
247
+
223
248
  ### 新闻数据
224
249
 
225
250
  ```bash
226
- # 获取个股舆情(内部自动将 code 转为 secid)
251
+ # 个股舆情(内部自动将 code 转为 secid)
252
+ daxiapi news sentiment -c 600031
253
+
254
+ # 指定条数
227
255
  daxiapi news sentiment -c 600031 -p 20
228
256
 
229
- # 获取个股公告
230
- daxiapi news notice -c 600031 -p 20 -i 1
257
+ # 个股公告
258
+ daxiapi news notice -c 600031
259
+
260
+ # 个股公告(翻页)
261
+ daxiapi news notice -c 600031 -p 20 -i 2
231
262
 
232
- # 获取个股研报(支持时间区间)
233
- daxiapi news report -c 600031 -p 25 -i 1 -b 2026-01-01 -e 2026-04-08
263
+ # 个股研报(指定时间区间)
264
+ daxiapi news report -c 600031 -b 2026-01-01 -e 2026-04-09
234
265
  ```
235
266
 
236
- ### 工具
267
+ ---
268
+
269
+ ### 工具命令
237
270
 
238
271
  ```bash
239
- # 代码转换
240
- daxiapi secid 000001
272
+ # 搜索股票(支持名称、拼音缩写)
273
+ daxiapi search 平安
274
+ daxiapi search 宁德时代
275
+
276
+ # 搜索板块
277
+ daxiapi search 锂电 --type bk
278
+
279
+ # 代码格式转换(转为标准 secid 格式)
280
+ daxiapi secid 000001 # → 0.000001
281
+ daxiapi secid 600031 # → 1.600031
282
+
283
+ # K线数据
284
+ daxiapi kline 000001
285
+ daxiapi kline 1.600031
241
286
  ```
242
287
 
243
- > 💡 提示:`daxiapi` 命令也可以使用简写 `dxp`
288
+ ---
244
289
 
245
290
  ## 全局选项
246
291
 
@@ -248,14 +293,15 @@ daxiapi secid 000001
248
293
  # 查看帮助
249
294
  daxiapi --help
250
295
  daxiapi market --help
296
+ daxiapi stock --help
251
297
 
252
298
  # 查看版本
253
299
  daxiapi --version
254
300
  ```
255
301
 
256
- ## 错误处理
302
+ ---
257
303
 
258
- CLI 工具提供详细的错误提示和解决建议:
304
+ ## 错误处理
259
305
 
260
306
  ### 认证错误 (401)
261
307
 
@@ -264,12 +310,12 @@ CLI 工具提供详细的错误提示和解决建议:
264
310
 
265
311
  解决方法:
266
312
  1. 检查 Token 是否正确配置:
313
+ daxiapi config get token
314
+ 2. 重新配置:
267
315
  daxiapi config set token YOUR_TOKEN
268
-
269
- 2. 或设置环境变量:
316
+ 3. 或设置环境变量:
270
317
  export DAXIAPI_TOKEN=YOUR_TOKEN
271
-
272
- 3. Token 可在 daxiapi.com 用户中心获取
318
+ 4. Token 可在 daxiapi.com 用户中心获取
273
319
  ```
274
320
 
275
321
  ### 限流错误 (429)
@@ -278,15 +324,14 @@ CLI 工具提供详细的错误提示和解决建议:
278
324
  ❌ 错误: 请求频率超限
279
325
 
280
326
  解决方法:
281
- 1. 请稍后重试
282
- 2. 检查您的请求频率是否过高
283
- 3. 升级账户获取更高配额
327
+ 1. 等待 30-60 秒后重试
328
+ 2. 检查请求频率是否过高
284
329
  ```
285
330
 
286
331
  ## 限流规则
287
332
 
288
- - 每日上限:1000次
289
- - 每分钟上限:10次
333
+ - 每日上限:1000
334
+ - 每分钟上限:10
290
335
  - 超限返回 429 错误
291
336
 
292
337
  ## License
package/lib/api.js CHANGED
@@ -1,7 +1,7 @@
1
1
  const axios = require('axios');
2
2
  const config = require('./config');
3
3
  const request = require('./request');
4
- const {formatThsVolumeTime, isTradingNow} = require('./utils');
4
+ const {formatThsVolumeTime, isTradingNow, formatSecucode} = require('./utils');
5
5
  const {calculateScores} = require('./dividendUtils');
6
6
  const getFinanceReportDetail = require('./caibao');
7
7
 
@@ -117,6 +117,48 @@ async function queryStockData(token, q, type = 'stock') {
117
117
  return post(client, '/query_stock_data', {q, type});
118
118
  }
119
119
 
120
+
121
+
122
+ async function getCapitalFlow(code, days =10) {
123
+ if (!code || typeof code !== 'string') {
124
+ throw new Error('Invalid code: code must be a non-empty string');
125
+ }
126
+
127
+ const secucode = formatSecucode(code);
128
+ const response = await axios.get('https://datacenter-web.eastmoney.com/api/data/v1/get', {
129
+ params: {
130
+ callback: '',
131
+ reportName: 'PRT_STOCK_CAPITALFLOWS',
132
+ columns: 'ALL',
133
+ filter: `(SECUCODE="${secucode}")`,
134
+ pageNumber: 1,
135
+ pageSize: days,
136
+ sortTypes: -1,
137
+ sortColumns: 'TRADE_DATE',
138
+ source: 'WEB',
139
+ client: 'WEB'
140
+ }
141
+ });
142
+
143
+ const payload = response.data || {};
144
+ if (!payload.success || !payload.result || !payload.result.data) {
145
+ throw new Error('Failed to get capital flow data');
146
+ }
147
+
148
+ const data = payload.result.data;
149
+ return data.map(item => ({
150
+ date: item.TRADE_DATE,
151
+ 当日资金流入: item.CAPITAL_FLOWS,
152
+ '当日资金流入占比': item.CAPITAL_FLOWS_RATIO,
153
+ '5日资金流入金额': item.CAPITAL_FLOWS_5DAYS,
154
+ '5日资金流入占比': item.CAPITAL_FLOWS_5DAYSRATIO,
155
+ '板块资金流入': item.BOARD_CAPITAL_FLOWS,
156
+ '5日板块资金流入金额': item.BOARD_CAPITAL_5FLOWS,
157
+ '板块代码': item.BOARD_CODE,
158
+ '板块名称': item.BOARD_NAME,
159
+ }))
160
+ }
161
+
120
162
  async function getPatternStocks(token, pattern) {
121
163
  const client = createClient(token);
122
164
  return post(client, '/get_pattern_stocks', {pattern});
@@ -276,15 +318,13 @@ async function getTurnoverData(type = 'day') {
276
318
  if (isTrading) {
277
319
  return {
278
320
  是否正在盘中交易: isTrading ? '是' : '否',
279
- ...rs,
280
- minuteData
321
+ ...rs
281
322
  };
282
323
  }
283
324
  return {
284
325
  ...formattedData,
285
326
  是否正在盘中交易: isTrading ? '是' : '否',
286
- ...rs,
287
- minuteData
327
+ ...rs
288
328
  };
289
329
  }
290
330
 
@@ -443,6 +483,7 @@ async function getNewsReport(code, pageSize = 25, pageIndex = 1, beginTime = '20
443
483
  }
444
484
 
445
485
  module.exports = {
486
+ getCapitalFlow,
446
487
  getMarketData,
447
488
  getMarketTemp,
448
489
  getCompassData,
package/lib/utils.js CHANGED
@@ -78,10 +78,29 @@ const formatThsVolumeTime = e => {
78
78
  dataTimestamp: h
79
79
  };
80
80
  };
81
+
82
+ function formatSecucode(code) {
83
+ code = String(code);
84
+ if (code.includes('.')) {
85
+ const parts = code.split('.');
86
+ const stockCode = parts[0];
87
+ const suffix = parts[1].toUpperCase();
88
+ if (suffix === 'SH' || suffix === 'SZ') {
89
+ return `${stockCode}.${suffix}`;
90
+ }
91
+ return `${stockCode}.${suffix === '1' ? 'SH' : 'SZ'}`;
92
+ }
93
+ if (code[0] === '6' || code[0] === '5') {
94
+ return `${code}.SH`;
95
+ }
96
+ return `${code}.SZ`;
97
+ }
98
+
81
99
  module.exports = {
82
100
  isWeekday,
83
101
  isTradingTime,
84
102
  isTradingNow,
85
103
  formatThsVolumeTime,
86
- getSecid
104
+ getSecid,
105
+ formatSecucode
87
106
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "daxiapi-cli",
3
- "version": "2.4.2",
3
+ "version": "2.5.0",
4
4
  "description": "大虾皮金融数据API命令行工具",
5
5
  "bin": {
6
6
  "daxiapi": "./bin/index.js",