首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >如何把东方财富行情接口换成新浪行情接口

如何把东方财富行情接口换成新浪行情接口

作者头像
子晓聊技术
发布2026-04-23 16:52:38
发布2026-04-23 16:52:38
1540
举报
文章被收录于专栏:子晓AI量化子晓AI量化

最近一直有同学问akshare怎么行情数据接口ip被封了,有什么更好的替代呢。其实这个问题我之前回答过很多遍了。 比如换成miniqmt, 或者换成tushare。

毕竟现在东方财富封ip的规则比之前严格多了, 不是太推荐用东方财富的数据源。

但是一些同学既不想花钱买tushare(虽然几百块1年不算太贵),也不想开户miniqmt(低门槛入金10w就可以搞定), 尽管我知道还有其他付费的接口途径, 鉴于 需要免费的心理我就不继续推荐了。 虽然有些时候免费的其实是最贵的道理 ,耗费更多的时间精力。 对于我来说, 又多了一个聊聊技术的素材哈。

既然东方财富用不了,那就把接口无缝迁移到新浪、 腾讯等接口呗。办法总比困难多。

历史行情数据-新浪

接口: stock_zh_a_daily

P.S. 建议切换为 stock_zh_a_hist 接口使用(该接口数据质量高, 访问无限制)

目标地址: https://finance.sina.com.cn/realstock/company/sh600006/nc.shtml(示例)

描述: 新浪财经-沪深京 A 股的数据, 历史数据按日频率更新; 注意其中的 sh689009 为 CDR, 请 通过 ak.stock_zh_a_cdr_daily 接口获取

限量: 单次返回指定沪深京 A 股上市公司指定日期间的历史行情日频率数据, 多次获取容易封禁 IP

输入参数

名称

类型

描述

symbol

str

symbol='sh600000'; 股票代码可以在 ak.stock_zh_a_spot() 中获取

start_date

str

start_date='20201103'; 开始查询的日期

end_date

str

end_date='20201116'; 结束查询的日期

adjust

str

默认返回不复权的数据; qfq: 返回前复权后的数据; hfq: 返回后复权后的数据; hfq-facto

需要注意的是, 新浪的行情数据接口没有涨跌幅字段, 那我们用pandas的内置函数pct_change。

大家知道,涨跌幅计算的核心要点

  1. 计算公式: 涨跌幅 = (当日收盘价 - 前一日收盘价) / 前一日收盘价 × 100%

df.pct_change() DataFrame.pct_change(periods=1, fill_method=‘pad’, limit=None, freq=None, **kwargs) 表示当前元素与先前元素的相差百分比,当然指定periods=n,表示当前元素与先前n 个元素的相差百分比。

这里贴一下完整代码,参考下思路, 具体根据自己的实际情况改造。 备注:如果发现格式有多余的特殊字符,用普通浏览器打开复制应该没问题。 希望我的分享对大家有所帮助。

代码语言:javascript
复制
import akshare  as ak
import pandas as pd
def get_stock_zh_a_daily(stock_code, start_date, end_date, adjust=''):
    if stock_code.startswith('6'):
        stock_code = "sh" + stock_code
    else:
        stock_code = "sz" + stock_code
    df = ak.stock_zh_a_daily(
        symbol=stock_code,
        start_date=start_date,
        end_date=end_date,
        adjust=adjust
    )
    column_mapping = {
        'date': '日期',
        'open': '开盘',
        'close': '收盘',
        'high': '最高',
        'low': '最低',
        'volume': '成交量',
        'amount': '成交额',
        'change_rate': '涨跌幅',
        'turnover':'换手率',
        'outstanding_share':'流通股本'
    }
    # 选择你需要的列并重命名
    df.rename(columns=column_mapping, inplace=True)
    # 转换日期格式为 datetime 类型
    df['日期'] = pd.to_datetime(df['日期'])
    df['涨跌幅'] = df['收盘'].pct_change() * 100
    return df
if __name__ == '__main__':
    symbol = '600000'
    start_date = '20250101'
    end_date = '20251024'
    df = get_stock_zh_a_daily(symbol, start_date, end_date)
    print(df)

如果我的分享对你投资有所帮助,不吝啬给个点赞关注呗。 这个号主要分享AI量化技术相关, 当天的灵感相关记录,相对比较杂。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2025-10-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 子晓聊技术 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 历史行情数据-新浪
  • 大家知道,涨跌幅计算的核心要点
  • 这里贴一下完整代码,参考下思路, 具体根据自己的实际情况改造。 备注:如果发现格式有多余的特殊字符,用普通浏览器打开复制应该没问题。 希望我的分享对大家有所帮助。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档