返回列表 发布新帖

无法获取历史沪深300成分股数据

34 0
发表于 4 小时前 | 显示全部楼层 阅读模式

请问,如何获得某一天的沪深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数据源。

回复

您需要登录后才可以回帖 登录 | 立即注册

主题

1

回帖

0

积分

0

客服专线

400-080-8112

用思考的速度交易,用真诚的态度合作,我们是认真的!
  • 关注公众号
  • 添加微信客服
Copyright © 2001-2026 迅投QMT社区 版权所有 All Rights Reserved. 京ICP备2025122616号-3
关灯 快速发帖
扫一扫添加微信客服
QQ客服返回顶部
快速回复 返回顶部 返回列表