Alpha Vantage - 隔离股票价格

Alpha Vantage - Isolate Stock Price

使用 Python 我可以访问大部分 Alpha Vantage API 并以元组或字典的形式获得结果。我要的只是某个时间点的股价。例如,使用 "global quote",我获得了所有数据,但无法解析或将元组/字典划分为单个项目。

有人做过吗?如果能看到代码,我将不胜感激。

APIreturns以下数据;它的类型为 dict,长度为 1。我需要的是普通浮点变量中的价格 (108.29)。

 (' data ', {u'Global Quote': {u'05. price': u'108.2900', u'08. previous close': u'107.2800', u'10. change percent': u'0.9415%', u'03. high': u'108.8800', u'07. latest trading day': u'2018-11-16', '}})

您提供的数据最后似乎有一个小问题(有一个尾随逗号和左引号)。假设实际数据没有这个问题,你可以将价格提取成一个float变量,如下:

data = (' data ', {u'Global Quote': {u'05. price': u'108.2900', u'08. previous close': u'107.2800', u'10. change percent': u'0.9415%', u'03. high': u'108.8800', u'07. latest trading day': u'2018-11-16'}})
price = float(data[1]['Global Quote']['05. price'])
print(price)

这会将价格显示为:

108.29

API 似乎正在返回一个元组,该元组由单词数据组成,然后是一个包含所有值的字典。所以首先使用 [1] 来访问字典。 Global Quote 条目本身就是一个字典。

谢谢 - 我没有考虑过这种可能性,即元组中的字典。我对 Linux 和 Python 都是新手,所以我想这是一个业余错误。不过,我真的很感谢您花时间做出回应。我希望在不久的将来还清这笔钱。

顺便说一句,我注意到 w/Python 如果我编码有误,我有时不会收到错误 - 完全正确。例如,如果我发出打印语句进行调试,但没有正确引用上述项目,则打印命令不会执行,但我不会收到错误代码。事实上,攻击性 print 语句之后的代码也可能不会执行;我可能会直接去 EOJ。那有意义吗?注意——我还没有编译;仍 运行 处于解释模式。

嘿,下面是我编写的一个函数,可以轻松地从 Alpha Vantage 中提取历史股票价格。您所要做的就是插入您的符号和代币。如果您想要特定日期的股票价格,则需要在结果数据框中过滤该日期。有关提取 Alpha Vantage 数据的更多功能,请随时查看我的 link:https://github.com/hklchung/StockPricePredictor/blob/master/2020/alphavantage_funcs.py.

def request_stock_price_hist(symbol, token, sample = False):
    if sample == False:
        q_string = 'https://www.alphavantage.co/query?function=TIME_SERIES_DAILY_ADJUSTED&symbol={}&outputsize=full&apikey={}'
    else:
        q_string = 'https://www.alphavantage.co/query?function=TIME_SERIES_DAILY_ADJUSTED&symbol={}&apikey={}'

    print("Retrieving stock price data from Alpha Vantage (This may take a while)...")
    r = requests.get(q_string.format(symbol, token))
    print("Data has been successfully downloaded...")
    date = []
    colnames = list(range(0, 7))
    df = pd.DataFrame(columns = colnames)
    print("Sorting the retrieved data into a dataframe...")
    for i in tqdm(r.json()['Time Series (Daily)'].keys()):
        date.append(i)
        row = pd.DataFrame.from_dict(r.json()['Time Series (Daily)'][i], orient='index').reset_index().T[1:]
        df = pd.concat([df, row], ignore_index=True)
    df.columns = ["open", "high", "low", "close", "adjusted close", "volume", "dividend amount", "split cf"]
    df['date'] = date
    return df

我发现获取价格数据的最佳方式是这样

from alpha_vantage.timeseries import TimeSeries
import pandas as pd
import time
import random
import numpy as np
import math
import datetime as dt
import requests
import os
import json

stock_ticker="TSLA"
apikey=""
ts = TimeSeries (key=apikey, output_format = "pandas")



    ### STOCK TIME SERIES > DAILY ADJUSTED ###
        # Date / Open / High / Low / Close / Adjusted Close / Volume / Dividend / Split
data_daily, meta_data = ts.get_daily_adjusted(symbol=stock_ticker, outputsize ='full')
        # data_daily['column name'][row number]
data_daily_lastOpenPrice = data_daily['1. open'][0]
data_daily_lastHighPrice = data_daily['2. high'][0]
data_daily_lastLowPrice = data_daily['3. low'][0]
data_daily_lastAdjustedClosingPrice = data_daily['5. adjusted close'][0]
data_daily_lastTradingVolume = data_daily['6. volume'][0]
data_daily_lastDividendAmount = data_daily['7. dividend amount'][0]