Как я могу загрузить данные о ценах на акции с помощью Python? - PullRequest
0 голосов
/ 11 июня 2018

Я установил pandas-daatreader, но API Google и Yahoo для загрузки исторических данных о ценах на акции устарели.

import pandas_datareader.data as web
start_date = '2018-01-01'
end_date = '2018-06-08'
panel_data = web.DataReader('SPY', 'yahoo', start_date, end_date)

ImmediateDeprecationError: 
Yahoo Daily 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.

See https://github.com/pydata/pandas-datareader/issues

Не могли бы вы посоветовать мне, как получить доступ к историческим ценам на акции с помощью Python?На самом деле я был бы заинтересован в том, чтобы вернуть цены как можно раньше, поскольку я занимаюсь исследованиями.

Спасибо.

Ответы [ 3 ]

0 голосов
/ 26 июня 2019

Вы также можете использовать Quandl, но вы должны зарегистрироваться и получить свой собственный ключ API.Не уверен, что любой из бесплатных финансовых API, который хорошо работал с веб-читателем Pandas, по-прежнему работает надежно и хорошо ...

# pip install datareader
import pandas as pd
pd.core.common.is_list_like = pd.api.types.is_list_like
# quandl api explore
import quandl
from datetime import datetime, timedelta
import matplotlib.pyplot as plt
# api instructions
quandl.ApiConfig.api_key = "YOUR_API_KEY"
end = datetime.now()
start = end - timedelta(days=365)
# frankfurt stock exchange
mydata2 = quandl.get('FSE/VOW3_X', start_date = start, end_date = end)
f = mydata2.reset_index()
# timeseries
plt.figure(1)
f = pd.Series(f.Close.values,f.Date)
f.plot()
plt.show()
0 голосов
/ 08 августа 2019

Yahoo Finance - один из бесплатных источников для получения биржевых данных.Вы можете получить данные либо с помощью pandas datareader, либо с помощью библиотеки yfinance.Метод получения данных из библиотеки yfinance показан ниже.

# Import the yfinance. If you get module not found error the run !pip install yfiannce from your Jupyter notebook
import yfinance as yf
# Get the data of the stock AAPL
data = yf.download('AAPL','2016-01-01','2019-08-01')
# Import the plotting library
import matplotlib.pyplot as plt
%matplotlib inline
# Plot the close price of the AAPL
data['Adj Close'].plot()
plt.show()

Quandl Wiki - это один из бесплатных источников, доступных на quandl для получения данных для 3000+ акций США.Это данные, поддерживаемые сообществом.Недавно его перестали обслуживать, но, тем не менее, это хороший бесплатный источник для тестирования ваших стратегий.Чтобы получить данные, вам нужно получить бесплатный ключ API от quandl и заменить в приведенном ниже коде свой ключ API.

# Import the quandl package
import quandl
# Get the data from quandl
data = quandl.get("WIKI/KO", start_date="2016-01-01", end_date="2018-01-01", api_key=<Your_API_Key>)
# Plot the close pr
import matplotlib.pyplot as plt
data.Close.plot()
# Show the plot
plt.show()

Примечание: для Quandl требуется NumPy (v1.8 или выше) и pandas(v0.14 или выше) для работы.Чтобы получить ключ API, зарегистрируйтесь на бесплатную учетную запись Quandl.Затем вы можете найти свой ключ API на странице настроек учетной записи Quandl.

Получить данные для нескольких акций

# Define the ticker list
import pandas as pd
tickers_list = [‘AAPL’, ‘WMT’, ‘IBM’, ‘MU’, ‘BA’, ‘AXP’]
# Import pandas
data = pd.DataFrame(columns=tickers_list)
# Fetch the data
import yfinance as yf
for ticker in tickers_list:
 data[ticker] = yf.download(ticker, ‘2015–1–1’, ‘2019–1–1’)[‘Adj Close’]
# Print first 5 rows of the data
data.head()

# Plot all the close prices
((data.pct_change()+1).cumprod()).plot(figsize=(10, 7))
# Show the legend
plt.legend()
# Define the label for the title of the figure
plt.title(“Adjusted Close Price”, fontsize=16)
# Define the labels for x-axis and y-axis
plt.ylabel(‘Price’, fontsize=14)
plt.xlabel(‘Year’, fontsize=14)
# Plot the grid lines
plt.grid(which=”major”, color=’k’, linestyle=’-.’, linewidth=0.5)
plt.show()

Если вы просматриваете минутный уровень или фундаментальные данные, тогда это страница может быть полезна.

0 голосов
/ 27 июля 2018

Смотри ниже.Код написан на Python 2.7, но должен работать в 3.5 при замене функции печати.Убедитесь, что при копировании правильное расстояние в редакторе: вкладка имеет 4 пробела и т. Д.

# pip install datareader
import pandas as pd
pd.core.common.is_list_like = pd.api.types.is_list_like
import pandas_datareader.data as web
import matplotlib.pyplot as plt
import numpy as np

from datetime import datetime, timedelta

#stock of interest
stock=['MSFT','SAP','V','JPM']

# period of analysis
end = datetime.now()
start = end - timedelta(days=500)

for i in range(len(stock)):
    f = web.DataReader(stock[i], 'morningstar', start, end)

    # nice looking timeseries (DataFrame to panda Series)
    f = f.reset_index()
    f = pd.Series(f.Close.values,f.Date)

    print "Start: Year, Month, Day, Time"
    print str(start)
    f.plot(label=stock[i]);
    plt.legend()
    plt.ylabel('price in [USD]')

plt.show();
...