IEX Работает с секретным ключом, но не с тестовым ключом

Привет, у меня проблема с этим фрагментом кода, который должен получать цены на акции на основе определенного периода времени и кода тикера. Программа действительно работает, когда я использую свой IEX API KEY, но не когда я использую свой TEST IEX API KEY, я получаю следующее сообщение об ошибке

Невозможно прочитать URL-адрес: .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, к которой мне нужно получить доступ, как описано в сообщении об ошибке, но ссылка на описание ничего не говорит об этом: https://intercom.help/iexcloud/ru/article/2915433-testing-with-the-iex-cloud-sandbox, и я не знаю, как заставить его работать, может ли кто-нибудь помочь?


person jhjorsal    schedule 22.11.2019    source источник
comment
Ошибка буквально объясняет вам, что вам нужно делать. Если вы хотите использовать тестовый ключ, вам необходимо выполнить вызовы API к sandbox.iexapis.com вместо cloud.iexapis.com   -  person Ofer Sadan    schedule 22.11.2019


Ответы (2)


Установите для переменной среды IEX_API_VERSION значение iexcloud-sandbox:

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

Ссылка: https://github.com/addisonlynch/iexfinance/blob/7cf902e275f3f84b2892b87ff072fa1808926c15/docs/source/sandbox.rst

person cameronhr    schedule 23.12.2019

У меня была та же проблема, что и у вас, и это сработало для меня:

import os
os.environ['IEX_SANDBOX'] = 'enable'
person Brice Taylor    schedule 17.04.2020
comment
Хотя этот код может решить вопрос, включая объяснение того, как и почему это решает проблему, действительно поможет улучшить качество. вашего сообщения, и, вероятно, приведет к большему количеству голосов. Помните, что вы отвечаете на вопрос для будущих читателей, а не только для человека, который задает его сейчас. Пожалуйста, отредактируйте свой ответ, чтобы добавить пояснения и указать, какие ограничения и предположения применяются. - person Brian; 17.04.2020