获取交易日历

获取各大交易所的交易日历数据,可用于判断某日是否为交易日、获取上一交易日等。

接口名称: trade_cal

基本用法

1import { TushareClient } from '@hestudy/tushare-sdk';
2
3const client = new TushareClient({ token: 'YOUR_TOKEN' });
4
5// 获取上交所的交易日历
6const calendar = await client.getTradeCalendar({
7  exchange: 'SSE',
8  start_date: '20230101',
9  end_date: '20231231',
10  is_open: '1' // 仅交易日
11});
12
13console.log(`2023年共有 ${calendar.length} 个交易日`);

参数说明

输入参数

1interface TradeCalParams {
2  exchange?: 'SSE' | 'SZSE' | 'CFFEX' | 'SHFE' | 'CZCE' | 'DCE' | 'INE';
3  start_date?: string;
4  end_date?: string;
5  is_open?: '0' | '1';
6}
参数名 类型 必需 说明 取值示例
exchange string 交易所代码 'SSE' (上交所), 'SZSE' (深交所), 'CFFEX' (中金所), 'SHFE' (上期所), 'CZCE' (郑商所), 'DCE' (大商所), 'INE' (上能源)
start_date string 开始日期 (YYYYMMDD) '20240101'
end_date string 结束日期 (YYYYMMDD) '20241231'
is_open string 是否交易日 '0' (休市), '1' (交易)

返回值说明

返回类型

1interface TradeCalItem {
2  exchange: string;
3  cal_date: string;
4  is_open: number;
5  pretrade_date?: string;
6}
7
8// 方法返回 Promise<TradeCalItem[]>
字段名 类型 说明 格式/取值
exchange string 交易所代码 'SSE', 'SZSE'
cal_date string 日历日期 YYYYMMDD (如 '20240101')
is_open number 是否交易日 0 (休市), 1 (交易)
pretrade_date string 上一交易日 YYYYMMDD (可能为空)

使用示例

示例1:查询特定交易所的交易日

1import { TushareClient } from '@hestudy/tushare-sdk';
2
3const client = new TushareClient({ token: 'YOUR_TOKEN' });
4
5// 查询上交所2024年10月的所有交易日
6const tradeDays = await client.getTradeCalendar({
7  exchange: 'SSE',
8  start_date: '20241001',
9  end_date: '20241031',
10  is_open: '1'
11});
12
13console.log(`2024年10月共有 ${tradeDays.length} 个交易日`);
14tradeDays.forEach(day => {
15  console.log(`交易日: ${day.cal_date}`);
16});

示例2:判断某日是否为交易日

1import { TushareClient } from '@hestudy/tushare-sdk';
2
3const client = new TushareClient({ token: 'YOUR_TOKEN' });
4
5// 判断2024年10月1日是否为交易日
6const calendar = await client.getTradeCalendar({
7  exchange: 'SSE',
8  start_date: '20241001',
9  end_date: '20241001'
10});
11
12if (calendar.length > 0) {
13  const day = calendar[0];
14  if (day.is_open === 1) {
15    console.log(`${day.cal_date} 是交易日`);
16  } else {
17    console.log(`${day.cal_date} 不是交易日`);
18    if (day.pretrade_date) {
19      console.log(`上一交易日: ${day.pretrade_date}`);
20    }
21  }
22}

示例3:获取下一个交易日

1import { TushareClient } from '@hestudy/tushare-sdk';
2
3const client = new TushareClient({ token: 'YOUR_TOKEN' });
4
5// 从当前日期开始,查询未来10天内的交易日
6const today = '20241010';
7const endDate = '20241020';
8
9const tradeDays = await client.getTradeCalendar({
10  exchange: 'SSE',
11  start_date: today,
12  end_date: endDate,
13  is_open: '1'
14});
15
16if (tradeDays.length > 0) {
17  // 获取下一个交易日 (跳过今天如果今天是交易日)
18  const nextTradeDay = tradeDays.find(day => day.cal_date > today);
19  if (nextTradeDay) {
20    console.log(`下一个交易日: ${nextTradeDay.cal_date}`);
21  }
22}

注意事项

  • 不传入任何参数时,将返回所有交易所的全部日历数据
  • 建议指定 exchange 参数以提高查询效率
  • is_open 参数可用于筛选交易日或休市日
  • 数据包含节假日、周末等非交易日
  • 数据每日更新

相关 API