请问,如何获得某一天的沪深300成分股?
我的操作流程:
1.手工采用“操作”-“数据管理”-“补充数据”-“板块分类”补充数据,提示完成。
2.用如下代码测试:
#coding:gbk
'''
测试获取指定日期的沪深300成分股
'''
import datetime
def init(ContextInfo):
print("\n" + "="*60)
print("测试获取指定日期沪深300成分股")
print("="*60)
# 要测试的日期列表(可自行增减或修改)
test_dates = [
"20250317", # 最近交易日(假设)
"20250102", # 2025年第一个交易日
"20241231", # 2024年末
"20240102", # 2024年初
"20230601", # 2023年某日
]
for date_str in test_dates:
try:
# 将字符串日期转换为 datetime 对象
dt = datetime.datetime.strptime(date_str, "%Y%m%d")
# 转换为毫秒级时间戳(当日0点)
timestamp_ms = int(dt.timestamp() * 1000)
# 调用接口获取指定日期的成分股
stocks = ContextInfo.get_stock_list_in_sector("沪深300", timestamp_ms)
print(f"\n日期: {date_str} -> 时间戳: {timestamp_ms}")
print(f"成分股数量: {len(stocks)}")
if stocks:
print(f"前10只: {stocks[:10]}")
else:
print("警告:返回空列表")
except Exception as e:
print(f"日期 {date_str} 出错: {e}")
# 额外测试:不传时间戳(默认当前)
try:
stocks_now = ContextInfo.get_stock_list_in_sector("沪深300")
print(f"\n不传时间戳(默认当前): 数量 {len(stocks_now)}")
if stocks_now:
print(f"前10只: {stocks_now[:10]}")
except Exception as e:
print(f"获取当前成分股出错: {e}")
print("\n" + "="*60)
print("测试完成。如果所有指定日期都返回0,但当前能返回300只,")
print("则说明该接口不支持历史成分股查询,或数据源缺失历史数据。")
print("若当前也返回0,请检查板块名称及QMT数据源。")
3.返回:
【2026-03-17 10:34:47.620】 start back test mode
【2026-03-17 10:34:47.635】
============================================================
测试获取指定日期沪深300成分股
============================================================
日期: 20250317 -> 时间戳: 1742140800000
成分股数量: 0
警告:返回空列表
日期: 20250102 -> 时间戳: 1735747200000
成分股数量: 0
警告:返回空列表
日期: 20241231 -> 时间戳: 1735574400000
成分股数量: 0
警告:返回空列表
日期: 20240102 -> 时间戳: 1704124800000
成分股数量: 0
警告:返回空列表
日期: 20230601 -> 时间戳: 1685548800000
成分股数量: 0
警告:返回空列表
不传时间戳(默认当前): 数量 300
前10只: ['000001.SZ', '000002.SZ', '000063.SZ', '000100.SZ', '000157.SZ', '000166.SZ', '000301.SZ', '000333.SZ', '000338.SZ', '000408.SZ']
============================================================
测试完成。如果所有指定日期都返回0,但当前能返回300只,
则说明该接口不支持历史成分股查询,或数据源缺失历史数据。若当前也返回0,请检查板块名称及QMT数据源。
|