Данные в реальном времени от yfinance

#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"]
  

Очевидно, что эти решения применимы и к другим типам ценных бумаг. Обратите внимание, однако, что использование этого (или любого другого бесплатного) источника данных для алгоритмической торговли на реальные деньги в лучшем случае невозможно из-за ограничения запросов, высокой задержки, проблем со стабильностью и т.д.