如何通过yfinance获取实际股价?

How to get actual stock prices with yfinance?

import yfinance as yf

stock = yf.Ticker("ABEV3.SA")

data1= stock.info


print(data1)

有"bid"和"ask",但没有实际股价。

好的,所以你想获得当前(最新)值。
比较简单,一行获取stock 1天的历史。

symbol = "AAPL"
stock = yf.Ticker(symbol)
latest_price = stock.history(period='1d')['Close'][0]

# Completely optional but I recommend having some sort of round(er?).
# Dealing with 148.60000610351562 is a pain.
estimate = round(latest_price, 2) 

print (estimate)

你也应该把它放在一个函数中,使它更通用。

注意:我之前的回答推荐使用 AlphaAdvantage,它仍然是 table 上的一个选项,但它限制为每分钟 5 个请求。 我改变了我的答案,但你可以在这里得到它的 TL;DR:
使用 requestsjson,拉取数据,格式化,列表理解(?)

我知道有比这个更好的答案,并且可能与这个非常相似,这只是我个人更喜欢的方法。

yfinance有下载功能,可以下载指定时间段的股价数据。例如我将使用您想要数据的同一只股票。

import yfinance as yf
data = yf.download("ABEV3.SA", start="2020-03-01", end="2020-03-30")

上面一行下载了三月份的数据,因为指定的日期就是那个。

数据将是一个 pandas 数据帧,因此您可以直接使用它进行操作。

希望这对您有所帮助。

我使用这个过滤组合只得到最后一个报价。

import yfinance as yf

tickers = ['ABEV3.SA']
for ticker in tickers:
    ticker_yahoo = yf.Ticker(ticker)
    data = ticker_yahoo.history()
    last_quote = data['Close'].iloc[-1]
    print(ticker, last_quote)

试试这个:

import datetime
import yfinance as yf
now = datetime.datetime.now().strftime("%Y-%m-%d")
data = yf.Ticker("ABEV3.SA")
data = data.history(start="2010-01-01",  end=now)
print(df)

买价和卖价实际上是交易所的报价。买价是做市商准备购买股票的价格,卖价是做市商在出售前要求的价格。点差是买价和卖价之间的差值。

通常所说的股票价格是买入价和卖出价的平均值。平均值的计算方式取决于交易所。如果您的 Feed 不提供交易所提供的中间价,那么对于许多用途而言,采用出价和要价的平均值就足够了。

开盘价和收盘价也由交易所决定,可能不是第一笔或最后一笔交易,而是第一笔或最后 15 分钟交易的平均值,或者可能包括盘后价格。

LSE 如何指定代码数据的一些细节: LSE ticker data

而且,如果您想深入了解细节,请详细了解如何匹配订单和生成价格数据:

Idiots Guide to the London Stock Exchange's SETSmm

此方法returns我测试中的最新值。

def get_current_price(symbol):
    ticker = yf.Ticker(symbol)
    todays_data = ticker.history(period='1d')
    return todays_data['Close'][0]

print(get_current_price('TSLA'))

以下代码将获取交易品种列表的当前价格并将所有结果添加到字典中。

import yfinance as yf

symbols = ["TSLA", "NIO"]
result = {}
for symbol in symbols:
    data = yf.Ticker(symbol)
    today_data = data.history(period='1d')
    result[symbol] = round((today_data['Close'][0]),2)
print(result)

要获取最后收盘价,请使用:

import yfinance as yf

tickerSymbol = 'AMD'

tickerData = yf.Ticker(tickerSymbol)
todayData = tickerData.history(period='1d')
todayData['Close'][0] #use print() in case you're testing outside a interactive session

试试这个:

import yfinance as yf

stock = yf.Ticker("ABEV3.SA")
price = stock.info['regularMarketPrice']
print(price)