【问题标题】:IEX Works with secret key but not with test keyIEX 适用于密钥,但不适用于测试密钥
【发布时间】:2020-03-18 21:53:36
【问题描述】:

您好,我对需要根据定义的时间段和股票代码获取股票价格的这段代码有疑问。 当我使用我的 IEX API KEY 时,程序实际上可以工作,但当我使用我的 TEST IEX API KEY 时,我收到以下错误消息

无法读取网址:https://cloud.iexapis.com/stable/stock/market/batch?symbols=AAPL&types=chart&range=1y&token=Tpk_157dbb6ac5914bb6b5e309b5eb1484f5

响应文本: b'Test 令牌只能在沙盒环境中使用。请使用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,如错误消息中所述,但描述链接没有说明任何内容:https://intercom.help/iexcloud/en/articles/2915433-testing-with-the-iex-cloud-sandbox 我不知道如何让它工作,有人可以帮忙吗?

【问题讨论】:

标签: python stock elixir-iex


【解决方案1】:

将您的IEX_API_VERSION 环境变量设置为iexcloud-sandbox

os.environ['IEX_API_VERSION'] = 'iexcloud-sandbox'

参考:https://github.com/addisonlynch/iexfinance/blob/7cf902e275f3f84b2892b87ff072fa1808926c15/docs/source/sandbox.rst

【讨论】:

    【解决方案2】:

    我遇到了和你一样的问题,这对我有用:

    import os
    os.environ['IEX_SANDBOX'] = 'enable'
    

    【讨论】:

    • 虽然此代码可能会解决问题,including an explanation 关于如何以及为什么解决问题将真正有助于提高您的帖子质量,并可能导致更多的赞成票。请记住,您正在为将来的读者回答问题,而不仅仅是现在提问的人。请edit您的回答添加解释并说明适用的限制和假设。
    【解决方案3】:

    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"
    

    【讨论】:

      猜你喜欢
      • 2016-02-25
      • 1970-01-01
      • 1970-01-01
      • 2014-05-31
      • 2015-12-09
      • 1970-01-01
      • 1970-01-01
      • 2015-12-31
      • 1970-01-01
      相关资源
      最近更新 更多