返回列表 发布新帖

关于download_history_data数据错误问题

354 2
发表于 2025-7-7 17:10:15 | 显示全部楼层 阅读模式

例如 000026.SH

我使用download_history_data下载1m历史数据后,用 get_market_data_ex 查看,收盘价几千元,而这个股票实际才十几块,请问是下载的数据错了吗?是不是需要删了重新下载?

以下是代码:


from xtquant import xtdata
import time


def my_download(stock_list:list,period:str,start_date = '', end_date = ''):
    '''
    用于显示下载进度
    '''
    import string

    if [i for i in ["d","w","mon","q","y",] if i in period]:
        period = "1d"
    elif "m" in period:
        numb = period.translate(str.maketrans("", "", string.ascii_letters))
        if int(numb) < 5:
            period = "1m"
        else:
            period = "5m"
    elif "tick" == period:
        pass
    else:
        raise KeyboardInterrupt("周期传入错误")


    n = 1
    num = len(stock_list)
    for i in stock_list:
        print(f"当前正在下载 {period} {n}/{num}")

        xtdata.download_history_data(i,period,start_date, end_date)
        n += 1
    print("下载任务结束")

def do_subscribe_quote(stock_list:list, period:str):
  for i in stock_list:
    xtdata.subscribe_quote(i,period = period)
  time.sleep(1) # 等待订阅完成

if __name__ == "__main__":

  start_date = '20250626'# 格式"YYYYMMDD",开始下载的日期,date = ""时全量下载
  end_date = "" 
  period = "1m" 

  need_download = 1  # 取数据是空值时,将need_download赋值为1,确保正确下载了历史数据

  code_list = ["000026.SH"] # 股票列表

  ############ 仅获取历史行情 #####################
  count = -1 # 设置count参数,使gmd_ex返回全部数据
  data1 = xtdata.get_market_data_ex([],code_list,period = period, start_time = '', end_time = '')

#   ############ 仅获取最新行情 #####################
#   do_subscribe_quote(code_list,period)# 设置订阅参数,使gmd_ex取到最新行情
#   count = 1 # 设置count参数,使gmd_ex仅返回最新行情数据
#   data2 = xtdata.get_market_data_ex([],code_list,period = period, start_time = start_date, end_time = end_date, count = 1) # count 设置为1,使返回值只包含最新行情

#   ############ 获取历史行情+最新行情 #####################
#   do_subscribe_quote(code_list,period) # 设置订阅参数,使gmd_ex取到最新行情
#   count = -1 # 设置count参数,使gmd_ex返回全部数据
#   data3 = xtdata.get_market_data_ex([],code_list,period = period, start_time = start_date, end_time = end_date, count = -1) # count 设置为1,使返回值只包含最新行情


  print(data1)# 行情数据查看
#   print(data2[code_list[0]].tail())
#   print(data3[code_list[0]].tail())



{'000026.SH':                          time      open      high       low     close  volume  \
20200803093000  1596418200000  2234.010  2234.010  2234.010  2234.010  126852   
20200803093100  1596418260000  2233.437  2235.109  2232.344  2234.687  317125   
20200803093200  1596418320000  2232.764  2232.957  2226.241  2226.241  181679   
20200803093300  1596418380000  2228.664  2229.454  2227.139  2227.740  188514   
20200803093400  1596418440000  2227.988  2228.134  2223.660  2223.660  208940   
...                       ...       ...       ...       ...       ...     ...   
20250707145600  1751871360000  3803.066  3803.518  3802.039  3802.039   58421   
20250707145700  1751871420000  3802.790  3803.615  3802.224  3803.319   59097   
20250707145800  1751871480000  3804.056  3804.362  3804.056  3804.362    2344   
20250707145900  1751871540000  3804.362  3804.362  3804.362  3804.362       0   
20250707150000  1751871600000  3803.890  3804.204  3803.890  3804.204   70766   

                     amount  settelementPrice  openInterest  preClose  \
20200803093000  135070243.0               0.0             0  2240.037   
20200803093100  327998575.0               0.0             0  2234.010   
20200803093200  191493513.0               0.0             0  2234.687   
20200803093300  209831216.0               0.0             0  2226.241   
20200803093400  211746838.0               0.0             0  2227.740   
...                     ...               ...           ...       ...   
20250707145600   80430856.0               0.0             0  3802.899   
20250707145700   78849071.0               0.0             0  3802.038   
20250707145800    3859424.0               0.0             0  3803.320   
20250707145900          0.0               0.0             0  3804.362   
20250707150000  105531631.0               0.0             0  3804.361   
...
20250707145900            0  
20250707150000            0  

[287754 rows x 11 columns]}

评论2

Anonymous
发表于 2025-7-8 11:34:34 | 显示全部楼层
看起来你股票代码写错了吧?“000026.SH” 应该是 “000026.SZ”。 000026.SH 似乎命中了某个指数。
Anna向阳而生
发表于 2025-7-9 10:49:52 | 显示全部楼层
1、股票代码后缀出错,如果想下载000026,应该改为"000026.SZ"
2、在获取数据之前,你应该先调用下载函数。修改my_download函数,去掉自动转换逻辑,只允许特定周期,或者不转换(保证传入正确的周期)
3、如果一定要使用get_market_data_ex,要注意参数和返回值的处理。

回复

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

客服专线

400-080-8112

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