用腾讯股票数据源更新qlib日K数据

该代码段实现从腾讯接口获取指定股票的历史数据,支持日间和分钟级别数据,并进行必要的数据清洗和格式转换,最终得到可用于分析的DataFrame。处理步骤包括URL构造、数据解码、日期格式化及数值类型转换等。
摘要由CSDN通过智能技术生成

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&param=%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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值