IEX 使用密钥但不使用测试密钥
IEX Works with secret key but not with test key
您好,这段代码有问题,需要根据定义的时间段和股票代码获取股票价格。
当我使用我的 IEX API KEY 时,该程序确实有效,但当我使用我的 TEST IEX API KEY 时,我收到以下错误消息
回复文字:
b'测试令牌只能在沙盒环境中使用。请使用https://sandbox.iexapis.com'错误
'''
How to download stock data
'''
import pandas as pd
import pandas_datareader.data as web
import datetime as dt
from datetime import datetime
import os
os.environ["IEX_API_KEY"] = "Tpk_157dbb6ac5914bb6b5e309b5eb1484f5"
def get_stock_data():
tickers = ['AAPL'] #capitalize tickers
start = dt.datetime(2019,1,1) # can import 5 years max with iex
end = dt.datetime.today()
if not os.path.exists('stockdata'):
os.makedirs('stockdata')
for ticker in tickers:
print(ticker)
try :
df = web.DataReader(ticker, "iex", start, end)
print(df.head())
df.to_csv('stockdata/{}.to_csv'.format(ticker))
print(ticker, 'downloaded')
except Exception as e:
print(e, 'error')
get_stock_data()
我可能应该告诉 API 这是我需要访问的 iexcloud-sandbox,如错误消息中所述,但描述 link 没有说任何关于它的内容: https://intercom.help/iexcloud/en/articles/2915433-testing-with-the-iex-cloud-sandbox 我不知道如何让它工作,有人可以帮忙吗?
将您的 IEX_API_VERSION
环境变量设置为 iexcloud-sandbox
:
os.environ['IEX_API_VERSION'] = 'iexcloud-sandbox'
我遇到了和你一样的问题,这对我有用:
import os
os.environ['IEX_SANDBOX'] = 'enable'
DataReader 调用时,会检查此环境变量,如果您已将其设置为'enable',那么它将选择沙箱URL。
python os.getenv("IEX_SANDBOX")=="enable"
有效的原因。以下代码取自 pdr_DataReader/iex/daily.py/IEXDailyReader 本身。
if os.getenv("IEX_SANDBOX") == "enable":
self.sandbox = True
else:
self.sandbox = False
self.api_key = api_key
super(IEXDailyReader, self).__init__(
symbols=symbols,
start=start,
end=end,
retry_count=retry_count,
pause=pause,
session=session,
chunksize=chunksize,
)
@property
def default_start_date(self):
today = datetime.date.today()
return today - datetime.timedelta(days=365 * 15)
@property
def url(self):
"""API URL"""
if self.sandbox is True:
return "https://sandbox.iexapis.com/stable/stock/market/batch"
else:
return "https://cloud.iexapis.com/stable/stock/market/batch"
您好,这段代码有问题,需要根据定义的时间段和股票代码获取股票价格。 当我使用我的 IEX API KEY 时,该程序确实有效,但当我使用我的 TEST IEX API KEY 时,我收到以下错误消息
回复文字: b'测试令牌只能在沙盒环境中使用。请使用https://sandbox.iexapis.com'错误
'''
How to download stock data
'''
import pandas as pd
import pandas_datareader.data as web
import datetime as dt
from datetime import datetime
import os
os.environ["IEX_API_KEY"] = "Tpk_157dbb6ac5914bb6b5e309b5eb1484f5"
def get_stock_data():
tickers = ['AAPL'] #capitalize tickers
start = dt.datetime(2019,1,1) # can import 5 years max with iex
end = dt.datetime.today()
if not os.path.exists('stockdata'):
os.makedirs('stockdata')
for ticker in tickers:
print(ticker)
try :
df = web.DataReader(ticker, "iex", start, end)
print(df.head())
df.to_csv('stockdata/{}.to_csv'.format(ticker))
print(ticker, 'downloaded')
except Exception as e:
print(e, 'error')
get_stock_data()
我可能应该告诉 API 这是我需要访问的 iexcloud-sandbox,如错误消息中所述,但描述 link 没有说任何关于它的内容: https://intercom.help/iexcloud/en/articles/2915433-testing-with-the-iex-cloud-sandbox 我不知道如何让它工作,有人可以帮忙吗?
将您的 IEX_API_VERSION
环境变量设置为 iexcloud-sandbox
:
os.environ['IEX_API_VERSION'] = 'iexcloud-sandbox'
我遇到了和你一样的问题,这对我有用:
import os
os.environ['IEX_SANDBOX'] = 'enable'
DataReader 调用时,会检查此环境变量,如果您已将其设置为'enable',那么它将选择沙箱URL。
python os.getenv("IEX_SANDBOX")=="enable"
有效的原因。以下代码取自 pdr_DataReader/iex/daily.py/IEXDailyReader 本身。
if os.getenv("IEX_SANDBOX") == "enable":
self.sandbox = True
else:
self.sandbox = False
self.api_key = api_key
super(IEXDailyReader, self).__init__(
symbols=symbols,
start=start,
end=end,
retry_count=retry_count,
pause=pause,
session=session,
chunksize=chunksize,
)
@property
def default_start_date(self):
today = datetime.date.today()
return today - datetime.timedelta(days=365 * 15)
@property
def url(self):
"""API URL"""
if self.sandbox is True:
return "https://sandbox.iexapis.com/stable/stock/market/batch"
else:
return "https://cloud.iexapis.com/stable/stock/market/batch"