Используете IEX API для получения информации об акциях в реальном времени (замена Yahoo Finance)?

Как и сказано в названии, я ищу источник, заменяющий биржевую информацию, теперь, когда Yahoo отключил API, который используют многие люди. Новый источник, который я искал, находится здесь: https://iextrading.com/developer/

Мой вопрос в том, как на самом деле получить данные в Excel ... Я думал о VBA, поскольку это то, что я использовал для получения данных из Yahoo. Однако я думаю, что то, что я хотел бы сделать, выходит далеко за рамки моих нынешних возможностей ... Я также пробовал использовать функцию Excel WEBSERVICE () со следующим URL-адресом, чтобы просто посмотреть цену: https://api.iextrading.com/1.0/stock/aapl/price, но это не сработало. Насколько я понимаю, IEX предоставил нам множество данных бесплатно, я просто не знаю, как получить к ним доступ. Мои аргументы в пользу VBA заключаются в том, что я могу использовать список ввода из книги для тикеров и иметь возможность использовать этот доступ к данным во многих книгах. Любая помощь горячо приветствуется. Кроме того, также приветствуются любые указания относительно того, где я могу начать изучать это самостоятельно. Спасибо.

Обновление: код, упомянутый в моем комментарии

Function StockPrice(ticker As String, item As String) As Double

Dim strURL As String, strCSV As Double, itemFound As Integer, tag As String

itemFound = 0
If item = "lastprice" Then
    tag = "price"
    itemFound = 1
ElseIf item = "pe" Then
    tag = "peRatio"
    itemFound = 1

End If

If itemFound = 1 Then

    strURL = "https://api.iextrading.com/1.0/stock/" & ticker & "/" & tag
    Set XMLHTTP = CreateObject("MSXML2.XMLHTTP")
    XMLHTTP.Open "GET", strURL, False
    XMLHTTP.send
    StockPrice = XMLHTTP.responseText
    Set XMLHTTP = Nothing

Else

    StockPrice = "Item Not Found"

End If

End Function

person Joe    schedule 16.11.2017    source источник
comment
Обновление: пробовал следующий код (в разделе вопросов, потому что он слишком длинный для комментария), и он работает для цены, но не для коэффициента P / E или любого другого параметра, кроме котировки. Есть идеи, почему?   -  person Joe    schedule 16.11.2017


Ответы (4)


Это может быть немного упрощенно, но это только начало:

Sub IEX()
Dim Price As Single

    Price = Application.WebService("https://api.iextrading.com/1.0/stock/aapl/price")

End Sub
person GSD    schedule 16.11.2017
comment
Я могу протестировать функциональность веб-сервиса только как стандартную функцию с помощью Excel онлайн, поскольку компьютер, на котором я сейчас работаю, работает под управлением Excel 2010. Если бы я пошел по этому пути, мне не показалось бы, что это слишком сложно преобразовать в функцию рабочей книги, которая Затем я мог бы использовать для ссылки на тикер в ячейке. Однако я бы предпочел отказаться от идеи веб-сервиса, только чтобы функциональность сохранялась в разных версиях Excel. Я ценю твой ответ! Тем временем я могу воспользоваться вашим предложением, поскольку оно, похоже, действительно идет по пути к моей цели. - person Joe; 16.11.2017

Думаю, в основном я решил проблему. Вот код для всех, кому интересно. Это работает как прямая замена для тех, кто использует API Yahoo Finance.

Function StockPrice(ticker As String, item As String)

Dim strURL As String, strCSV As Double, itemFound As Integer, tag As String

itemFound = 0
If item = "lastprice" Then
    tag = "latestPrice"
    itemFound = 1

ElseIf item = "pe" Then
    tag = "peRatio"
    itemFound = 1

ElseIf item = "company" Then
    tag = "companyName"
    itemFound = 1

ElseIf item = "sector" Then
    tag = "sector"
    itemFound = 1

ElseIf item = "open" Then
    tag = "open"
    itemFound = 1

ElseIf item = "yclose" Then
    tag = "previousClose"
    itemFound = 1

ElseIf item = "change" Then
    tag = "change"
    itemFound = 1

ElseIf item = "%change" Then
    tag = "changePercent"
    itemFound = 1

ElseIf item = "marketcap" Then
    tag = "marketCap"
    itemFound = 1

ElseIf item = "52high" Then
    tag = "week52High"
    itemFound = 1

ElseIf item = "52low" Then
    tag = "week52Low"
    itemFound = 1

End If

If itemFound = 1 Then

    strURL = "https://api.iextrading.com/1.0/stock/" & ticker & "/quote/" & tag
    Set XMLHTTP = CreateObject("MSXML2.XMLHTTP")
    XMLHTTP.Open "GET", strURL, False
    XMLHTTP.send
    StockPrice = XMLHTTP.responseText
    Set XMLHTTP = Nothing

Else

    StockPrice = "Item Not Found"

End If

End Function

IEX имеет гораздо больше функциональных возможностей, чем я здесь построил. Просто недостаточно опытен, чтобы строить вокруг него. Проверьте эти функции здесь: https://iextrading.com/developer/docs/

person Joe    schedule 16.11.2017
comment
Привет, спасибо за это ... это решило мою проблему. Я также нашел этот JSON, документирующий каждую функцию, ее параметры и ответы: cloud.iexapis.com/stable - person alfadog67; 19.04.2019

С тикером в одной ячейке (в данном примере ячейка E3) введите в другую ячейку следующее:

=WEBSERVICE("https://api.iextrading.com/1.0/stock/" & E3 & "/quote/delayedPrice")

Работает в Excel для Office 365.

person Jerry    schedule 05.01.2018
comment
Ваш ответ плохо сформулирован. Пожалуйста, прочтите руководство SO перед публикацией. - person sparkplug; 05.01.2018
comment
@sparkplug, я полностью понял формулировку этого поста. Голосование за, потому что это правильно. - person alfadog67; 19.04.2019

Если вам не нужна обратная совместимость с Yahoo и вы просто хотите получить простое ценовое предложение, эта функция VBA добавляет возможность котировки в список функций Excel.

Он не отточен, но должен служить простым примером того, как использовать мощный IEX API. Используйте редактор VBA, чтобы поместить это в модуль:

Public Function tickerPrice(ticker As String)

Dim htmlCmd As String
Dim curlCmd As String
Dim shellCmd As String
Dim sResult As String

htmlCmd = "https://api.iextrading.com/1.0/stock/" & ticker & "/quote/delayedPrice"
curlCmd = "curl \""" & htmlCmd & "\"""
shellCmd = "do shell script "" " & curlCmd & " "" "

sResult = MacScript(shellCmd)

tickerPrice = Val(sResult)

End Function

Не забудьте включить макросы при открытии книги, чтобы это работало. (Это было протестировано с Mac Excel 2011 с High Sierra в 2017 году.

person jbbenni    schedule 31.12.2017