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]
使用 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]