获取每日指标

获取全部股票每日重要的基本面指标,可用于选股分析、报表展示等。包括换手率、市盈率、市净率、市销率、股息率、总股本、流通股本、总市值、流通市值等。

接口名称: daily_basic 权限要求: 至少 2000 积分

基本用法

1import { TushareClient } from '@hestudy/tushare-sdk';
2
3const client = new TushareClient({ token: 'YOUR_TOKEN' });
4
5// 获取指定日期所有股票的每日指标
6const data = await client.getDailyBasic({
7  trade_date: '20180726'
8});
9
10console.log(`查询到 ${data.length} 只股票的每日指标`);

参数说明

输入参数

1interface DailyBasicParams {
2  ts_code?: string;
3  trade_date?: string;
4  start_date?: string;
5  end_date?: string;
6  fields?: string;
7}
参数名 类型 必需 说明 示例
ts_code string 股票代码 (与 trade_date 至少传一个) '000001.SZ'
trade_date string 交易日期 (YYYYMMDD) '20241010'
start_date string 开始日期 (YYYYMMDD) '20240101'
end_date string 结束日期 (YYYYMMDD) '20241231'
fields string 指定返回字段 (逗号分隔) 'ts_code,trade_date,pe,pb'

返回值说明

返回类型

1interface DailyBasicItem {
2  ts_code: string;
3  trade_date: string;
4  turnover_rate?: number;
5  turnover_rate_f?: number;
6  volume_ratio?: number;
7  pe?: number;
8  pe_ttm?: number;
9  pb?: number;
10  ps?: number;
11  ps_ttm?: number;
12  dv_ratio?: number;
13  dv_ttm?: number;
14  total_share?: number;
15  float_share?: number;
16  free_share?: number;
17  total_mv?: number;
18  circ_mv?: number;
19}
20
21// 方法返回 Promise<DailyBasicItem[]>
字段名 类型 说明 单位/公式
ts_code string 股票代码 -
trade_date string 交易日期 YYYYMMDD
turnover_rate number 换手率 % = 成交量/流通股本 × 100%
turnover_rate_f number 换手率(自由流通股) %
volume_ratio number 量比 当日成交量/过去5日平均成交量
pe number 市盈率 总市值/净利润 (亏损时为空)
pe_ttm number 市盈率(TTM) TTM = 最近12个月 (亏损时为空)
pb number 市净率 总市值/净资产
ps number 市销率 总市值/营业收入
ps_ttm number 市销率(TTM) -
dv_ratio number 股息率 % = 每股分红/股价 × 100%
dv_ttm number 股息率(TTM) %
total_share number 总股本 万股
float_share number 流通股本 万股
free_share number 自由流通股本 万股 (剔除限售股)
total_mv number 总市值 万元 = 总股本 × 收盘价
circ_mv number 流通市值 万元 = 流通股本 × 收盘价

使用示例

示例1:查询特定日期的所有股票指标

1import { TushareClient } from '@hestudy/tushare-sdk';
2
3const client = new TushareClient({ token: 'YOUR_TOKEN' });
4
5// 获取2024年10月10日所有股票的每日指标
6const data = await client.getDailyBasic({
7  trade_date: '20241010'
8});
9
10console.log(`查询到 ${data.length} 只股票的数据`);
11
12// 筛选低市盈率股票
13const lowPeStocks = data.filter(stock => stock.pe && stock.pe < 10);
14console.log(`市盈率低于10的股票有 ${lowPeStocks.length}`);

示例2:过滤市盈率范围的股票

1import { TushareClient } from '@hestudy/tushare-sdk';
2
3const client = new TushareClient({ token: 'YOUR_TOKEN' });
4
5// 获取指定日期的数据
6const data = await client.getDailyBasic({
7  trade_date: '20241010'
8});
9
10// 筛选市盈率在10-20之间的股票
11const filteredStocks = data.filter(stock => {
12  if (!stock.pe) return false;
13  return stock.pe >= 10 && stock.pe <= 20;
14});
15
16filteredStocks.forEach(stock => {
17  console.log(`${stock.ts_code}: 市盈率 ${stock.pe}, 市净率 ${stock.pb}`);
18});

示例3:批量查询并分析估值指标

1import { TushareClient } from '@hestudy/tushare-sdk';
2
3const client = new TushareClient({ token: 'YOUR_TOKEN' });
4
5// 获取指定股票的历史每日指标
6const stockData = await client.getDailyBasic({
7  ts_code: '000001.SZ',
8  start_date: '20240901',
9  end_date: '20241001'
10});
11
12// 计算平均市盈率
13const avgPe = stockData
14  .filter(d => d.pe !== undefined)
15  .reduce((sum, d) => sum + (d.pe || 0), 0) / stockData.length;
16
17console.log(`平均市盈率: ${avgPe.toFixed(2)}`);
18
19// 查找最高和最低市盈率
20const peValues = stockData.filter(d => d.pe).map(d => d.pe!);
21const maxPe = Math.max(...peValues);
22const minPe = Math.min(...peValues);
23
24console.log(`最高市盈率: ${maxPe.toFixed(2)}, 最低市盈率: ${minPe.toFixed(2)}`);

注意事项

  • 权限要求: 此API需要至少 2000 积分
  • ts_codetrade_date 参数至少传入一个
  • 查询指定日期时,建议使用 trade_date 参数
  • 查询指定股票的历史数据时,使用 ts_code + start_date + end_date
  • 部分字段可能为空,特别是:
    • pepe_ttm: 公司亏损时为空
    • 新股上市初期部分指标可能缺失
  • 数据每日更新
  • 单次查询建议不超过 1000 条记录

相关 API