财经数据下载接口踩坑记录

0 置顶 z000001 2年前 1341次点击

如果在浏览歪枣网时遇到问题,请更新或升级浏览器为Chrome(谷歌浏览器)到最新版本,歪枣网上功能测试是基于谷歌浏览器。

JAVA代码获取股票数据Demo     下载链接https://github.com/waizao/WZaoStockApiDemo 


这里分享些下载财经数据下载接口的一些经验,大家可以参考下

1、如何提升接口下载速度

        实际上歪枣网后台查库速度是非常快的,查库时间是有监控的,如果是查库变慢了,歪哥会进行优化。但是很多时间接口数据下载的耗时是和你发起的请求条件是密切相关的,总体来说,你们使用接口下载数据的时候一定要控制好条件,只获取你们真正想要的数据,其余多余的数据就不要反复获取了。也是受限于服务器带宽限制,如果大家想速度返回快,务必对数据进行增量请求,只要每次返回的数据量小了,访问速度就快了。
下面歪哥就梳理几个大家经常疏忽的地方
a)控制好请求记录条数。比如开始日期,如果你只要获取最近1个月的数据,开始日期(startDate)就写相应的日期就好了,千万不要为了省事,开始日期写很小,结果获取到的数据就成倍返回了。
b)控制好返回数据的字段个数。歪枣网提供的数据返回都是可裁剪的,也就是你需要用到什么字段的数据,在fields(字段参数)中就填写需要的字段即可。原则就是需要什么数据,fields条件中就填写该字段。
c)选择好导出数据类型。数据导出类型包括Txt字符串、Json字符串、Txt文件、Json文件、Csv文件、DataFrame格式。如果是导出文件的话就不多说了,把上面的a、b两点中提到的条件限制好就行了。

如果是调用接口选择的是导出Txt字符串或Json字符串,那么在相同条件下两种方式返回数据量是不一样的。Json字符串中应该会带有每个字段的属性名等信息,返回的数据量会比Txt字符串大1-2倍。如果是Python代码调用,建议返回数据类型使用 DataFrame格式
        所以如果是接口调用,可以根据实际实际情况选择导出数据类型。

如果是采集历史数据,数据量大,建议返回数据类型优先选用Txt字符串。返回的数据量小,速度更快。

如果是每日采集收盘后的增量数据,数据量小,建议返回数据类型优先选择Json字符串。比较直观、方便。



2、通过批量下载过程中,偶遇几次返回失败,该怎么处理?
增加重试机制。歪枣网目前版本发布频率较高,尤其是在周末,后台会有升级或者重启服务,可能会出现几分钟无法访问服务的现象。建议在批量下载的时候增加重试机制。
如果是代码里处理的话,建议如果获取不到数据的情况下就增大查询间隔。比如获取不到数据就5分钟或者10分钟后,再次进行第二次查询。如果能获取到数据了,在缩小查询间隔。

3、根据需求使用定制化参数

http://www.waizaowang.com/wiki/index.html#_%E4%BA%8C%E6%AC%A1%E5%BC%80%E5%8F%91

后面系统会增加一些参数,根据你们传入的参数实现定制化。可以在GET或POST请求中携带定制化参数,这些参数是可选的。
如果你们有需要定制化的场景,也可以跟我们反馈增加。
a) 控制返回数据格式参数  split
默认值为1,取值含义:  
1表示字段之间使用英文逗号分割,返回数据分隔符格式为:000001,平安银行
2表示字段之间使用英文引号和逗号分割,返回数据分隔符格式为:"000001","平安银行"
变更原因:多个字段数据之间是用英文逗号分割,但是有些字段内容本身就带有英文逗号,导致字段之间分割失效。
若使用csv等导出格式,建议split取值为2。

b)量化指标计算,指定返回值精度 scale
    1. 参数名:scale
      默认值为3,取值范围[1-10],取值含义:数值代表返回值的精度(保留几位小数位)。

    2. 参数名:round
      默认值为1,取值范围[0-7],取值含义:
      0 ROUND_UP模式,四舍五入
      1 ROUND_DOWN模式,截断
      2 ROUND_CEILING模式
      3 ROUND_FLOOR模式
      4 ROUND_HALF_UP模式
      5 ROUND_HALF_DOWN模式
      6 ROUND_HALF_EVEN模式
      7 ROUND_UNNECESSARY模式
      可参考说明 BigDecimal精确的数值计算


4、下载的CSV格式数据中,float数据用科学计算法表示不易理解

        其实接口返回的float类型数据是没有问题的,如果你是代码里调用,可以直接转为float类型的数据。一般只有当float数值较大的时候,才会使用科学计算法表示数值,其余数值较小的float数值,就是平常我们使用到的数值。但是如果你只是下载数据,自己查看的话,且遇到很大float字段的数值,若是大家选择下载的CSV格式,用Excel打开后,可以将float字段的数据单元格格式,比如设置为货币。显示出来的数值就容易理解了。
        下面例子中总市值是非常大的float类型数据,设置单元格格式后,就容易理解了。




共 15 条评论
z000016 2年前
0 

在代码解析数据的时候,要区分数据是double或float类型。如果用float去解析小数,会出现多余的数字。

z000001 [楼主] 2年前
0 
@z000016  数据中数字部分都是float或者int数据,统一定义用float应该都没问题。
还有数据表对应的bean,在<< JAVA代码获取股票数据Demo>>中都已定义好,如果你是用java写的,可以直接用工程中定义好的bean类。
z000023 2年前
0 

请问股票的日线数据和行情数据是完整的吗?


z000001 [楼主] 2年前
0 
@z000023

股票的日线数据和行情数据,数据是完整的,包含上市公司历年的数据。


z000023 2年前
0 

访问你的服务器接口和券商的相比大概有多少延迟?

z000001 [楼主] 2年前
0 
@z000023 这个时延没有做过对比。通过歪枣网Api获取数据主要受限还是服务器带宽,数据库查询数据耗时是比较小的。带宽增加了,大家下载的速度就提升了很多。当然,在目前带宽一定的情况下,大家尽量缩减每次下载的数据量,那么获取数据的速度也越快,延迟越小。


z000076 1年前
0 

你好,我想问问当日停牌的数据是怎样展示的?


z000001 [楼主] 1年前
0 
@z000076 停牌了,应该没有交易数据吧 
z000108 10个月前
0 

财经数据接口fields处输入日期date识别不了怎么办

z000108 10个月前
1 
@z000108找到了,日期是tdate ,交易日期
z000001 [楼主] 10个月前
0 
@z000108 nice,建议选择歪枣网左上角菜单栏【浏览模式】查询数据,更加方便。
z000118 9个月前
0 

我下载的分时数据,不仅只有最近几个月的,而且前面几个月的数据还是0。。。。

z000001 [楼主] 9个月前
0 
@z000118 贴下你的请求链接,或者具体说明下哪个股票哪个时间段的数据为0。
现在请求到的分时数据是正常的。
z000149 3个月前
0 

分线数据最早能获取到哪年

z000001 [楼主] 3个月前
0 
@z000149  应该是22年1月开始
添加一条新评论

登录后可以发表评论 去登录