返回列表 发布新帖

【done】前几天下载的期权数据为空,这两天调用接口时,init超时,更新token也无效;

930 1
发表于 2024-4-1 14:36:44 | 显示全部楼层 阅读模式
算是两个问题:

1. 下载的商品期权数据,在list sector里面可以查到,但是download history 打他得到的是空数据,仅有表头,以下是我的代码:

import os
import re
import pandas as pd
from datetime import datetime
from xtquant import xtdatacenter as xtdc
from xtquant import xtdata


# 设置临时文件目录,在workspace目录下tmp
WORK_SPACE = os.path.abspath(os.path.join(os.getcwd(), '..', '..', '..', '..'))
TEMP_DIR = os.path.join(WORK_SPACE, 'tmp', 'xt')
os.makedirs(TEMP_DIR, exist_ok=True)
xtdc.set_data_home_dir(TEMP_DIR)

# 初始化连接
def xtdc_init():
    # 设置迅投研令牌
    xtdc.set_token("xxx") # 实际运行代码之前,都会去官网拷贝最新的token,这里的‘xxx'仅是举例

    xtdc.init()

exchange_mappping = {
    "SH": '上交所',
    "SZ": '深交所',
    "BJ": '北交所',
    "SF": '上期所',
    "IF": '中金所',
    "INE": '能源中心',
    "DF": '大商所',
    "ZF": '郑商所',
    "GF": '广期所',
}

def get_listed_symbols():
    # 获取期权合约列表
    exchange_list = ['SF', 'IF', 'INE', 'DF', 'ZF', 'GF']
    listed_symbols = []
    for exchange in exchange_list:
        l = xtdata.get_stock_list_in_sector(exchange)
        if not l:
            print(f'{exchange_mappping[exchange]}的期权数据为空')
        listed_symbols.extend(l)
    # re to match patterns: [0-9]P[0-9] or [0-9]C[0-9] or [0-9]-C-[0-9] or [0-9]-P-[0-9]
    pattern = re.compile(r"\d[PC]-?\d|\d-[CP]-\d")
    listed_symbols = [symbol for symbol in listed_symbols if pattern.search(symbol)]
    return listed_symbols

def download_data(listed_symbols, output_dir):
    for symbol in listed_symbols:
        xtdata.download_history_data(symbol, '1m', '20050101', datetime.now().strftime('%Y%m%d'))
        temp_data = xtdata.get_market([], [symbol], '1m', '20050101', datetime.now().strftime('%Y%m%d'))
        temp_df = temp_data[symbol]
        temp_df.reset_index(drop=False, inplace=True)
        temp_df.rename(columns={'index': 'datetime'}, inplace=True)
        temp_df['datetime'] = pd.to_datetime(temp_df['datetime'])
        output_file_path = os.path.join(output_dir, f'{symbol}_1m.csv')
        temp_df.to_csv(output_file_path, index=False)

if __name__ == '__main__':
    output_dir = os.path.join(WORK_SPACE, 'data')
    os.makedirs(output_dir, exist_ok=True)
    xtdc_init()
    listed_symbols = get_listed_symbols()
    download_data(listed_symbols,
output_dir)





但是最近运行的代码结果老是报错说认证超时:

Traceback (most recent call last):  File "D:\...\xx.py", line 65, in <module>    listed_symbols = get_listed_symbols()  File "D:\...\xx.py", line 41, in get_listed_symbols    l = xtdata.get_stock_list_in_sector(exchange)  File "C:\Users\...\lib\site-packages\xtquant\xtdata.py", line 240, in get_stock_list_in_sector    return client.get_stock_list_in_sector(sector_name, 0)RuntimeError: { "ErrorID" : 200003, "ErrorMsg" : "timeout" }Process finished with exit code 1


评论1

Willows
发表于 2024-4-1 14:51:46 | 显示全部楼层
缩短下下载数据的时间试试,比如先下一年,看还有没有timeout

回复

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

客服专线

400-080-8112

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