#python #pandas #algorithmic-trading #trading #yfinance
#python #pandas #алгоритмическая торговля #торговля #yfinance
Вопрос:
Я пытаюсь получить реальные данные из yfinance с помощью следующего кода. Но я просто получаю те же результаты закрытия / максимума / минимума / открытия. Я начинаю думать, что это невозможно с yfinance. Есть ли какие-либо бесплатные и европейские альтернативы?
Заранее большое спасибо!!
#import libraries
import schedule
import time
import alpaca_trade_api as tradeapi
import yfinance as yf
import pandas as pd
# Ask what stocks you want to check
pd = pd.DataFrame()
n = int(input("Enter the size of the list "))
print("n")
numList = list(num for num in input("Enter the list numbers separated by space ").strip().split())[:n]
print("User List: ", numList)
# Get info for every stock chosen.
def get_data():
for ticker in numList:
ticker_yahoo = yf.Ticker(ticker)
data = ticker_yahoo.history(period = "1d", interval="1m")
data = (data.tail(1).iloc[0])
pd[ticker] = data
print(pd)
get_data()
Комментарии:
1. Добро пожаловать, вы погуглили это? Я искал «список библиотек Python Finance» и получил github.com/wilsonfreitas/awesome-quant
2. К сожалению, все источники данных в этом списке либо устарели и больше не работают, либо перешли на платные сервисы премиум-класса. Мне еще предстоит найти бесплатный (или даже просто по разумной цене) Европейский источник данных в реальном времени; также хотелось бы его увидеть.
3. Что ж, в процессе поиска нового метода я узнал о вебскрэппинге, который очень прост в выполнении, и вы можете получать данные в реальном времени так быстро, как этого хочет ваш Интернет.
4. С какой частотой yahoo Finance обновляет?
Ответ №1:
Быстрее сделать это с помощью Pandas Datareader с помощью get_quote_yahoo()
метода
import pandas_datareader as web
tickers = ["MSFT", "XOM", "KKR"]
current_price = web.get_quote_yahoo(tickers)["regularMarketPrice"]
Если вы настаиваете на использовании yfinance
, вы можете использовать следующий код, но помните, что это будет НАМНОГО МЕДЛЕННЕЕ, потому что 1) создание экземпляра Ticker
объекта и извлечение свойства info требует времени, и 2) использовать Tickers
class неудобно (в отличие от Ticker
), поэтому вам приходится использовать цикл for.
import yfinance as yf
tickers = ["MSFT", "XOM", "KKR"]
current_price = list()
for i in range(len(tickers)):
company = yf.Ticker(ticker[i])
current_price[i] = company.info["regularMarketPrice"]
Очевидно, что эти решения применимы и к другим типам ценных бумаг. Обратите внимание, однако, что использование этого (или любого другого бесплатного) источника данных для алгоритмической торговли на реальные деньги в лучшем случае невозможно из-за ограничения запросов, высокой задержки, проблем со стабильностью и т.д.