开源了个 A 股数据工具 finshare,自动切源能不能解决你们的线上坑? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
sunfinv

开源了个 A 股数据工具 finshare,自动切源能不能解决你们的线上坑?

  •  
  •   sunfinv 3 月 3 日 2313 次点击
    这是一个创建于 51 天前的主题,其中的信息可能已经有所发展或是发生改变。

    把我们内部一直在用的数据层开源了: https://github.com/finvfamily/finshare

    定位很克制:不做大而全,只解决一件事稳定拿到股票数据。 我自己踩过最烦的坑是:单一源偶发挂掉,回测/任务整段失败。

    现在这个库做的事:

    5 个源:东方财富、腾讯、新浪、通达信、BaoStock 自动 fallback (一个源失败自动切下一个) 统一输出格式( DataFrame ) 常用接口:K 线、实时快照、批量获取 示例( 6 位代码直接用):

    我真心想听实战反馈,尤其这几个问题:

    你们线上最常见的数据异常是“超时/空数据/字段漂移/复权不一致”中的哪一个? 自动切源应该默认“无感自动”,还是必须“可配置优先级 + 熔断 + 告警”? 如果只让你选一个最该补的能力:缓存、重试策略、还是数据校验报告? 欢迎直接怼设计,最好带你们真实场景。 如果有代表性的 case ,我可以按回复优先做一版 roadmap 。

    29 条回复    2026-03-05 10:54:33 +08:00
    iorilu
        1
    iorilu  
       3 月 3 日
    关注下

    以前也用过几个库, 有的是复权不对
    有的可能数据有空, 不一致等

    我其实关注就是, 能自动更新数据, 毕竟我不希望每天都要关心到底有没有更新,另外数据前复权准确就行

    你这个是只能拉盘后日线还是可以盘中获取实时也行?
    dobelee
        2
    dobelee  
       3 月 3 日 via iPhone
    能拉上面的美股吗?
    sunfinv
        3
    sunfinv  
    OP
       3 月 3 日
    @iorilu 是的,各个数据源历史数据统计口径不一样,专门做了处理,历史数据口径是一样的。snapshot 也做了处理哦,归一化就是个比较费时的事情,需要各个数据源来回对比。
    sunfinv
        4
    sunfinv  
    OP
       3 月 3 日
    @dobelee 暂时不支持的,我现在主要做国内指数的投资。指数也有 QDII 。间接投资。
    mendax2019
        5
    mendax2019  
       3 月 3 日
    一直好奇为什么没人做资源站,日频更新 parquet 行情文件就足够了
    zhouhuab
        6
    zhouhuab  
       3 月 3 日
    数据源很贵啊
    dobelee
        7
    dobelee  
       3 月 3 日
    @mendax2019 有的,只是要高价付费,普通人购买不划算,要么东平西凑打游击,要么订阅 API 。
    iorilu
        8
    iorilu  
       3 月 3 日
    @mendax2019 肯定有阿, 但真要花钱没几个愿意的, 因为费用不会低, 大多人都是测试玩玩的, 不是真靠这赚钱
    keakon
        9
    keakon  
       3 月 3 日
    支持指数和 ETF 么?
    看无需市场后缀估计是不支持指数,不然 000001 是上证指数
    andforce
        10
    andforce  
       3 月 3 日
    关注一下,回头让龙虾自己炒股
    Alias4ck
        11
    Alias4ck  
       3 月 4 日
    都 2026 年了 还在用 pip 另外米波量化的米波是 dota2 英雄?
    sunfinv
        12
    sunfinv  
    OP
       3 月 4 日
    @keakon 支持指数 ETF 、LOF
    sunfinv
        13
    sunfinv  
    OP
       3 月 4 日
    @Alias4ck 对对对 哈哈哈哈 路径依赖了属于
    sunfinv
        14
    sunfinv  
    OP
       3 月 4 日
    @andforce 可以的
    sunfinv
        15
    sunfinv  
    OP
       3 月 4 日
    @mendax2019 有的啊 baostock 就是啊,资源站稳定很重要,需要服务器资源。如果用自己电脑只需要网络 ok 就行了。还是有区别的
    justtokankan
        16
    justtokankan  
       3 月 4 日
    请求频率限制咋样? 加入同步 4000 只股票的行情数据,大概要多久?
    sunfinv
        17
    sunfinv  
    OP
       3 月 4 日
    @justtokankan 没这么做过,如果是实时行情,使用通达信的接口,一次 80 个,连接的话 20 秒一次。时间也挺久。这个只能说研究低频策略的用这个数据。而且还需要有目标代码,比如红利低波啊,只做 ETF 啊都可以
    1hit5
        18
    1hit5  
       3 月 4 日
    针对散户可以 api 直接调用吗。 类似 tushare
    sunfinv
        19
    sunfinv  
    OP
       3 月 4 日
    @1hit5 可以的,注意别高频请求,一般来说个人使用结合本库的数据容灾处理应该是够用的,本质 tushare 也是洗的公开数据源
    enrolls
        20
    enrolls  
       3 月 4 日
    日线数据没烦恼。tick 才是烦恼,一个 symbol 同一系统架构,不同节点,还能有不同的结果。

    @mendax2019 又没有付费群体,偷偷用不好么

    @sunfinv 有没有做元数据的?没有的话我要发了。有的话看看合并一下源,或者邮箱来聊。
    enrolls
        21
    enrolls  
       3 月 4 日
    @justtokankan @zhouhuab @iorilu 我的博客右边的 side project 里面的 demo, 能每天 roll 90days 的数据。一般 6 点开始 etl, 6 点半就有数据了。
    justtokankan
        22
    justtokankan  
       3 月 4 日
    @sunfinv #17 我做了一个动态代理,同步 4000+股票大概是 10 分钟左右,
    metaquant
        23
    metaquant  
       3 月 4 日
    示例代码没跑通:

    5 manager = get_data_manager()
    7 # 获取 K 线数据(只需传入股票代码,无需市场后缀)
    ----> 8 data = manager.get_kline('000001', start='2024-01-01', end='2024-01-31')
    9 print(data.head())

    AttributeError: 'DataSourceManager' object has no attribute 'get_kline'
    sunfinv
        24
    sunfinv  
    OP
       3 月 4 日
    @metaquant 你运行下 examples 下的代码,readme 我更新下
    sampeng
        25
    sampeng  
       3 月 4 日 via iPhone
    好东西,我的龙虾看盘是我自己 vibe 的,各种想办法保证数据能拿到。这下有 cli 工具就好了。我想问一下数据的一致性。比如一只股票的数据是总是一个数据源吗?我认为一致性比容错要强。可以失败标记但不能从另一个数据源弄个数据来填上。
    lixuda
        26
    lixuda  
       3 月 5 日
    @sampeng 除了有时候异常数据外, 每家的复权价格计算不一样,另外进位不一样。
    sampeng
        27
    sampeng  
       3 月 5 日 via iPhone
    @lixuda 对,所以我希望是要回退就整体回退
    sunfinv
        28
    sunfinv  
    OP
       3 月 5 日
    @sampeng 本质这些数据源的数据都是走交易所出来的,只不过各家对单位的定义可能存在差别,比如交易量有的是计算的手数,有的是股数,这个库主要是对各家的差别进行 了归一,那么即便你切换数据源数据其实也是一致的,所以在一方数据源拒绝你的请求时候可以使用其他数据源以保证自己功能的稳定性,不过一开始可以自己检验下,比如拿一个标的每个数据源去验证下你主要关注的数据
        29
    lixikei  
       3 月 5 日
    关注
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     4711 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 55ms UTC 04:03 PVG 12:03 LAX 21:03 JFK 00:03
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86