算是两个问题:
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
|