【问题标题】:get stock data using python - not using quandl使用 python 获取股票数据 - 不使用 quandl
【发布时间】:2018-07-21 20:14:15
【问题描述】:

我使用 R 包 quantmod 没有问题,它使用 Yahoo 来获取股票数据,如下所示:

get_stock_prices <- function(target, return_format = "tibble", ...) {
    # Get stock prices
    print(target)
    stock_prices_xts <- getSymbols(Symbols = target, auto.assign = FALSE, ...)
    # Rename
    names(stock_prices_xts) <- c("Open", "High", "Low", "Close", "Volume", "Adjusted")
    # Return in xts format if tibble is not specified
    if (return_format == "tibble") {
        stock_prices <- stock_prices_xts %>%
            as_tibble() %>%
            rownames_to_column(var = "Date") %>%
            mutate(Date = ymd(Date))
    } else {
        stock_prices <- stock_prices_xts
    }
    write.csv(stock_prices, file = paste(target, "csv", sep = '.'))
}

我只知道 Python 中的 pandas_datareader 可以实现类似的功能。不幸的是,随着 yahoo 和 google API 的变化,这个包被破坏了。这段代码:

import pandas_datareader as pdr

panel_data = pdr.get_data_yahoo('MSFT')

结果:

Yahoo Actions has been immediately deprecated due to large breaks in the API without the
introduction of a stable replacement. Pull Requests to re-enable these data
connectors are welcome.

是否有当前工作的 Python 包来实现上述目标。我知道quandl,但这是一项付费服务​​。谢谢。

【问题讨论】:

  • 为什么要近距离投票?
  • 您可能会喜欢iexfinance module。它有多种方法可以在 pandas 数据框中使用显示股票价格数据。

标签: python r stockquotes


【解决方案1】:

Alpha Vantage 是另一个很好的免费资源,它以 RESTful JSON 和 CSV api 的形式提供实时股票报价。这是它的API documentation。

设置

设置起来相当简单。您需要做的就是从here 生成一个免费的 API 密钥,然后将其模块与 matplotlib 一起安装

pip install matplotlib
pip install alpha_vantage

示例

您可以在他们的文档页面上查看示例,但我也会在此处列出一些示例。

这是我在网上找到的一些代码:

from alpha_vantage.timeseries import TimeSeries
import matplotlib.pyplot as plt
import sys

def stockchart(symbol):
    ts = TimeSeries(key='your_key', output_format='pandas')
    data, meta_data = ts.get_intraday(symbol=symbol,interval='1min', outputsize='full')
    print data
    data['4. close'].plot()
    plt.title('Stock chart')
    plt.show()

symbol=raw_input("Enter symbol name:")
stockchart(symbol)

输出:

Source获取代码和图片。

编辑

更改了一些代码。请参考 cmets 进行更改。

【讨论】:

  • 谢谢。这很好用,但请更改列:data['4.关闭'].plot()
  • 我注意到其中缺少 Volume 列。也只是好奇我如何从(所选股票的)开始时以每日谷物获得例如微软的数据(MSFT)。看了这个包的文档,但找不到答案...
  • 我不能 100% 确定这一点,因为我没有经常使用 Alpha Vantage,但我认为您只能检索过去 20 年的数据。我肯定会尝试在一个单独的问题中提问,看看是否有其他人知道。
  • 根据Financial-Hacker,Alpha_Vantage 有许多不超过 5 年的历史。此外,您可以在 API 调用中添加“outputsize=full”参数以显示 20 年数据的所有信息。
  • 最后,日内时间序列不包含“交易量”列,但其他时间序列包含 TIME_SERIES_WEEKLY。应该在每个时间序列下的文档中说明。
【解决方案2】:

试试fix_yahoo_finance:

from pandas_datareader import data as pdr
import fix_yahoo_finance as yf
data = yf.download("MSFT", start="2017-01-01", end="2017-04-30")
print(data)

[*********************100%***********************]  1 of 1 downloaded
                 Open       High    ...     Adj Close    Volume
Date                                ...                        
2017-01-03  62.790001  62.840000    ...     60.664047  20694100
2017-01-04  62.480000  62.750000    ...     60.392612  21340000
2017-01-05  62.189999  62.660000    ...     60.392612  24876000
2017-01-06  62.299999  63.150002    ...     60.916084  19922900
2017-01-09  62.759998  63.080002    ...     60.722206  20256600
2017-01-10  62.730000  63.070000    ...     60.702820  18593000

【讨论】:

    【解决方案3】:

    Quandl 有免费和付费等级。你绝对可以从 Quandl 获得免费的股票数据,你可以通过他们的 api 轻松地做到这一点。 pip install quandl 或 conda install quandl。您需要做的就是注册一个免费帐户,并获得一个 API 密钥。然后是这样的。

    import quandl
    
    quandl.ApiConfig.api_key = "YOUR_API_KEY"
    
    df = quandl.get_table("WIKI/PRICES", ticker = ["MSFT"], 
                          qopts = {"columns": ["date", "ticker", "adj_open", "adj_close"]}, 
                          paginate=True)
    

    他们的网站上还有大量文档。和多个来源。

    签出:

    对于初学者。

    【讨论】:

    • 我知道谢谢,但只有极少数股票是免费的。对我来说毫无意义。
    • 您还可以获得一些月度库存数据。此外,对于投资或研究相对无用。
    猜你喜欢
    • 2017-10-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-04
    • 1970-01-01
    • 2021-06-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多