def remote_source_tencent(symbol: str, interval: str, start_datetime: pd.Timestamp, end_datetime: pd.Timestamp):
qtype = "day" if "d" in interval else interval
interval = "day" if "d" in interval else interval
codes = symbol.split(".",1)
txsymbol=("sh" if codes[1] == "ss" else codes[1]) + codes[0]
url = 'http://web.ifzq.gtimg.cn/appstock/app/fqkline/get?_var=kline_%sqfq¶m=%s,%s,%s,%s,%s,qfq&r=0.%s'
url = url % (interval, txsymbol, interval, start_datetime.date(), end_datetime.date(), 640, _random())
content = urlopen(url).read().decode()
content = content.split('=', maxsplit=1)[-1]
content = json.loads(content)
data = content['data'][txsymbol]
if interval in data:
data = data[qtype]
elif 'qfq' + qtype in data:
data = data['qfq'+qtype]
else:
raise ValueError('已知的key在dict中均不存在,请检查数据')
df = pd.DataFrame(data)
if len(data) <= 0:
return df
df.rename(columns={0:"date",1:"open",2:"close",3:"high",4:"low",5:"volume"},inplace=True)
df[['open','close','low','high']]=df[['open','close','low','high']].astype('float')
df[['volume']]=df[['volume']].astype('float').round(0).astype(int)
df['date']=df['date'].apply(lambda x: datetime.datetime.date(datetime.datetime.strptime(x,'%Y-%m-%d')))
df['volume']*=100
df.loc[:,'adjclose']=df["close"]
df.loc[:,'symbol']=symbol
df.set_index(['symbol','date'],inplace=True)
return df
用腾讯股票数据源更新qlib日K数据
最新推荐文章于 2024-05-02 00:30:49 发布
该代码段实现从腾讯接口获取指定股票的历史数据,支持日间和分钟级别数据,并进行必要的数据清洗和格式转换,最终得到可用于分析的DataFrame。处理步骤包括URL构造、数据解码、日期格式化及数值类型转换等。
摘要由CSDN通过智能技术生成