waditu / tushare

TuShare is a utility for crawling historical data of China stocks
BSD 3-Clause "New" or "Revised" License
12.87k stars 4.29k forks source link

R 语言环境下,使用stock_basic 和 daily_basic接口会出现串列情况 #853

Open mdf42005 opened 5 years ago

mdf42005 commented 5 years ago

使用环境,visual studio community 2017+R open 3.5.1.0 api <- pro_api(token = token) test <- api(api_name = 'stock_basic') test中,本应该有7列数据 "ts_code" "symbol" "name" "area" "industry" "market" "list_date" NA
但实际生成结果却是8列。最后一列没有变量名。由于该列的存在,导致如下情况出现 ts_code symbol name area industry market list_date NA 1 000001.SZ 000001 平安银行 深圳 银行 主板 19910403 000002.SZ 2 000002 万科A 深圳 全国地产 主板 19910129 000004.SZ 000004 3 国农科技 深圳 生物制药 主板 19910114 000005.SZ 000005 世纪星源 即“串列”。 同时出现警告: Warning message: In matrix(items, nrow = length(items)/length(columns), byrow = TRUE) : data length [24946] is not a sub-multiple or multiple of the number of rows [3563]

同样运行环境下,使用daily_basic 也会出现该问题。现象和警告与前文所述一样。不同之处在于在daily_basic 不一定每次都出现这种情况,大部分出现,个别的时候不出现。比如我使用循环采集股票的“每日指标”。循环十次,前三次是正常的,从第四次开始就出现了上诉现象。

辛苦了,谢谢。

jimmysoa commented 5 years ago

我们看看

harryprince commented 5 years ago

@jimmysoa R client 的source code 有开源吗?

harryprince commented 5 years ago

有一种方式可以比较好规避这类问题 在R语言中 通过 reticulate 直接调用 Python SDK:

  1. 安装 tushare 并初始化

    reticulate::conda_install(packages = "tushare",pip=T,envname="r-tensorflow")
    ts = import("tushare")
  2. 调用行情API

    
    pro = ts$pro_api()
    df = pro$daily(trade_date='20180810')
结果如下

ts_code trade_date open high low close pre_close change pct_chg vol amount 0 000001.SZ 20180718 8.75 8.85 8.69 8.70 8.72 -0.02 -0.23 525152.77 460697.377 1 000001.SZ 20180717 8.74 8.75 8.66 8.72 8.73 -0.01 -0.11 375356.33 326396.994 2 000001.SZ 20180716 8.85 8.90 8.69 8.73 8.88 -0.15 -1.69 689845.58 603427.713 3 000001.SZ 20180713 8.92 8.94 8.82 8.88 8.88 0.00 0.00 603378.21 535401.175 4 000001.SZ 20180712 8.60 8.97 8.58 8.88 8.64 0.24 2.78 1140492.31 1008658.828 5 000001.SZ 20180711 8.76 8.83 8.68 8.78 8.98 -0.20 -2.23 851296.70 744765.824 6 000001.SZ 20180710 9.02 9.02 8.89 8.98 9.03 -0.05 -0.55 896862.02 803038.965 7 000001.SZ 20180709 8.69 9.03 8.68 9.03 8.66 0.37 4.27 1409954.60 1255007.609 8 000001.SZ 20180706 8.61 8.78 8.45 8.66 8.60 0.06 0.70 988282.69 852071.526 9 000001.SZ 20180705 8.62 8.73 8.55 8.60 8.61 -0.01 -0.12 835768.77 722169.579

mdf42005 commented 5 years ago

收到,谢谢。你说的这个方法我没用过。但是后来我用Python读这个数据是没问题的。😀发自我的华为手机-------- 原始邮件 --------主题:Re: [waditu/tushare] R 语言环境下,使用stock_basic 和 daily_basic接口会出现串列情况 (#853)发件人:HarryZhu 收件人:waditu/tushare 抄送:mdf42005 ,Author 有一种方式可以比较好规避这类问题

通过 reticulate 直接调用 Python SDK:

reticulate::conda_install(packages = "tushare",pip=T,envname="r-tensorflow")

ts = import("tushare")

—You are receiving this because you authored the thread.Reply to this email directly, view it on GitHub, or mute the thread.