Tout comme le titre l'indique, je recherche une source de remplacement pour les informations boursières maintenant que Yahoo a désactivé l'API que de nombreuses personnes utilisent. La nouvelle source que j'ai consultée se trouve ici: https://iextrading.com/developer/

Ma question est de savoir comment obtenir les données dans Excel ... Je réfléchissais à VBA puisque c'est ce que j'avais utilisé pour obtenir les données de Yahoo. Cependant, je pense que ce que j'aimerais faire est bien au-delà de mes capacités actuelles ... J'ai également essayé d'utiliser la fonction WEBSERVICE () d'Excel avec l'URL suivante pour simplement regarder un prix: https://api.iextrading.com/1.0/stock/aapl/price mais cela n'a pas fonctionné. D'après ce que j'ai compris, IEX a mis à notre disposition une pléthore de données gratuitement, je ne sais tout simplement pas comment y accéder. Mon raisonnement pour VBA est que je puisse utiliser une liste d'entrée d'un classeur pour les tickers, et que je puisse mettre cet accès aux données dans de nombreux classeurs. Toute aide est très appréciée. De plus, toute sorte de direction quant à l'endroit où je peux chercher pour commencer à apprendre cela par moi-même serait également la bienvenue. Merci.

Mise à jour: Code mentionné dans mon commentaire

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
2
Joe 16 nov. 2017 à 18:50

4 réponses

Meilleure réponse

Je pense que j'ai principalement résolu le problème. Voici le code pour toute personne intéressée. Cela fonctionne comme un remplacement direct pour ceux qui utilisent l'API de 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 a beaucoup plus de fonctionnalités que ce que j'ai construit ici. Pas assez d'expérience pour construire autour d'elle. Vérifiez ces fonctionnalités ici: https://iextrading.com/developer/docs/

2
Joe 16 nov. 2017 à 21:12

Si vous n'avez pas besoin de rétrocompatibilité avec Yahoo et que vous souhaitez simplement un simple devis, cette fonction VBA ajoute une fonction de devis à la liste des fonctions Excel.

Ce n'est pas poli, mais devrait servir d'exemple simple de la façon d'utiliser la puissante API IEX. Utilisez l'éditeur VBA pour mettre cela dans un module:

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

Assurez-vous d'activer les macros lors de l'ouverture du classeur, afin que cela puisse fonctionner. (Cela a été testé avec Mac Excel 2011, avec High Sierra, en 2017.

0
jbbenni 31 déc. 2017 à 01:23

Avec le symbole boursier dans une cellule (cellule E3 dans cet exemple), entrez ce qui suit dans une autre cellule:

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

Fonctionne dans Excel pour Office 365.

2
Eldelshell 5 janv. 2018 à 12:41

C'est peut-être un peu simpliste, mais c'est un début:

Sub IEX()
Dim Price As Single

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

End Sub
3
GSD 16 nov. 2017 à 16:21
47333894