94 votes

Comment obtenir une liste complète des symboles de téléscripteur de Yahoo Finance ?

J'ai cherché à l'infini une méthode pour obtenir une liste complète (et mise à jour quotidiennement) de tous les symboles de téléscripteur Yahoo disponibles par l'intermédiaire de http://finance.yahoo.com

Yahoo dispose d'informations sur les actions, les contrats à terme, etc. pour un grand nombre de bourses dans le monde, et j'aimerais disposer d'une liste combinée de tous les symboles de téléscripteur disponibles par leur intermédiaire. J'ai essayé YQL mais ils ont une restriction de la clause "where symbol = (or in)" donc je ne peux pas sélectionner * à partir des symboles.

En fait, il est facile d'obtenir des informations détaillées sur un ou plusieurs symboles à la fois, mais je n'arrive pas à trouver comment obtenir une liste de tous les tickers disponibles.

Quelqu'un peut-il m'aider, s'il vous plaît ?

45voto

John Points 291

J'ai réussi à faire quelque chose de similaire en utilisant cette URL :

http://query.yahooapis.com/v1/public/yql?q=select%20 *%20from%20yahoo.finance.industry%20where%20id%20in%20(select%20industry.id%20from%20yahoo.finance.sectors)&env=store%3A%2F%2Fdatatables.org%2Falltableswithkeys

Il télécharge une liste complète des symboles boursiers à l'aide de l'API Yahoo YQL, y compris le nom de l'action, le symbole boursier et l'ID du secteur. Ce qu'il ne semble pas avoir, ce sont les modificateurs de symboles boursiers. Par exemple, pour Rogers Communications Inc, il ne télécharge que RCI, et non RCI-A.TO, RCI-B.TO, etc. Je n'ai pas encore trouvé de source pour cette information - si quelqu'un connaît un moyen d'automatiser le téléchargement de cette information, j'aimerais l'entendre. De plus, ce serait bien de trouver un moyen de télécharger une sorte de relation entre le symbole boursier et la bourse sur laquelle il est négocié, puisque certains titres sont négociés sur plusieurs bourses, ou peut-être que je veux seulement regarder les titres sur le TSX ou autre.

45voto

Ian Ooi Points 604

J'ai eu un problème similaire. yahoo ne le propose pas, mais vous pouvez l'obtenir en regardant dans les déclarations document.write de la liste de nyse.com et en trouvant le fichier .js dans lequel ils stockent la liste des entreprises commençant par la lettre donnée comme un littéral de tableau js. vous pouvez également obtenir des fichiers csv bien rangés de nasdaq.com ici : http://www.nasdaq.com/screening/companies-by-name.aspx?letter=0&exchange=nasdaq&render=download (remplacez exchange=nasdaq par exchange=nyse pour les symboles nyse).

21voto

tr4nc3 Points 301

Listes d'actions du NASDAQ ftp://ftp.nasdaqtrader.com/symboldirectory

Les 2 fichiers nasdaqlisted.txt et otherlisted.txt sont séparés par un tuyau. Cela devrait vous donner une bonne liste de tous les stocks.

14voto

GSee Points 19079

Je peux peut-être vous aider en vous fournissant une liste des symboles de téléscripteur pour les actions (américaines et non américaines) et pour les ETF.

Yahoo propose un calendrier des bénéfices qui répertorie toutes les actions qui annoncent des bénéfices pour un jour donné. Cette liste inclut les actions non américaines.

Par exemple, voici celui d'aujourd'hui : http://biz.yahoo.com/research/earncal/20120710.html

la dernière partie de l'URL est la date (au format AAAAMMJJ) pour laquelle vous souhaitez obtenir le calendrier des gains. Vous pouvez parcourir plusieurs jours en boucle et extraire les symboles de toutes les actions qui ont déclaré des bénéfices ces jours-là.

Il n'y a aucune garantie que yahoo dispose de données pour toutes les actions qui déclarent des bénéfices, d'autant plus que certaines actions n'existent plus (faillite, acquisition, etc.), mais c'est probablement un bon point de départ.

Si vous êtes familier avec R vous pouvez utiliser l'option paquet qmao pour ce faire. (Voir ce poste ) si vous avez des difficultés à l'installer.

ec <- getEarningsCalendar(from="2011-01-01", to="2012-07-01") #this may take a while
s <- unique(ec$Symbol)
length(s)
#[1] 12223
head(s, 20) #look at the first 20 Symbols
# [1] "CVGW"    "ANGO"    "CAMP"    "LNDC"    "MOS"     "NEOG"    "SONC"   
# [8] "TISI"    "SHLM"    "FDO"     "FC"      "JPST.PK" "RECN"    "RELL"   
#[15] "RT"      "UNF"     "WOR"     "WSCI"    "ZEP"     "AEHR"   

Cela n'inclut pas les ETF, les contrats à terme, les options, les obligations, les devises ou les fonds communs de placement.

Vous pouvez obtenir une liste des ETF à partir de yahoo ici : http://finance.yahoo.com/etf/browser/mkt Cela ne montre que les 20 premiers. Vous avez besoin de l'URL du lien "Tout afficher" en en bas de cette page. Vous pouvez gratter la page pour savoir combien il y a d'ETF. ETFs, puis construire une URL.

L <- readLines("http://finance.yahoo.com/etf/browser/mkt")
# Sorry for the ugly regex
n <- gsub("^(\\w+)\\s?(.*)$", "\\1", 
          gsub("(.*)(Showing 1 - 20 of )(.*)", "\\3",  
               L[grep("Showing 1 - 20", L)]))
URL <- paste0("http://finance.yahoo.com/etf/browser/mkt?c=0&k=5&f=0&o=d&cs=1&ce=", n)
#http://finance.yahoo.com/etf/browser/mkt?c=0&k=5&f=0&o=d&cs=1&ce=1442

Maintenant, vous pouvez extraire les téléscripteurs du tableau de cette page.

library(XML)
tbl <- readHTMLTable(URL, stringsAsFactors=FALSE)
dat <- tbl[[tail(grep("Ticker", tbl), 1)]][-1, ]
colnames(dat) <- dat[1, ]
dat <- dat[-1, ]
etfs <- dat$Ticker # All ETF tickers from yahoo
length(etfs)
#[1] 1442
head(etfs)
#[1] "DGAZ" "TAGS" "GASX" "KOLD" "DWTI" "RTSA"

C'est à peu près toute l'aide que je peux offrir, mais vous pourriez faire quelque chose de similaire pour obtenir certains des futurs qu'ils offrent en grattant ces pages. (Il s'agit uniquement de contrats à terme américains)

http://finance.yahoo.com/indices?e=futures , http://finance.yahoo.com/futures?t=energy , http://finance.yahoo.com/futures?t=metals , http://finance.yahoo.com/futures?t=grains , http://finance.yahoo.com/futures?t=livestock , http://finance.yahoo.com/futures?t=softs , http://finance.yahoo.com/futures?t=indices ,

Et, pour les indices américains et non-américains, vous pouvez récupérer les pages suivantes

http://finance.yahoo.com/intlindices?e=americas , http://finance.yahoo.com/intlindices?e=asia , http://finance.yahoo.com/intlindices?e=europe , http://finance.yahoo.com/intlindices?e=africa , http://finance.yahoo.com/indices?e=dow_jones , http://finance.yahoo.com/indices?e=new_york , http://finance.yahoo.com/indices?e=nasdaq , http://finance.yahoo.com/indices?e=sp , http://finance.yahoo.com/indices?e=other , http://finance.yahoo.com/indices?e=treasury , http://finance.yahoo.com/indices?e=commodities

11voto

jm1102 Points 102

Il existe un joli wrapper C# pour l'API Yahoo.Finance à l'adresse suivante http://code.google.com/p/yahoo-finance-managed/ qui vous y conduira. Malheureusement, il n'existe pas de moyen direct de télécharger la liste des tickers, mais la méthode suivante permet de créer la liste en parcourant les groupes alphabétiques :

        AlphabeticIDIndexDownload dl1 = new AlphabeticIDIndexDownload();
        dl1.Settings.TopIndex = null;
        Response<AlphabeticIDIndexResult> resp1 = dl1.Download();

        writeStream.WriteLine("Id|Isin|Name|Exchange|Type|Industry");

        foreach (var alphabeticalIndex in resp1.Result.Items)
        {
            AlphabeticalTopIndex topIndex = (AlphabeticalTopIndex) alphabeticalIndex;
            dl1.Settings.TopIndex = topIndex;
            Response<AlphabeticIDIndexResult> resp2 = dl1.Download();

            foreach (var index in resp2.Result.Items)
            {
                IDSearchDownload dl2 = new IDSearchDownload();
                Response<IDSearchResult> resp3 = dl2.Download(index);

                int i = 0;
                foreach (var item in resp3.Result.Items)
                {
                    writeStream.WriteLine(item.ID + "|" + item.ISIN + "|" + item.Name + "|" + item.Exchange + "|" + item.Type + "|" + item.Industry);
                }

            }
        }

Il m'a donné une liste d'environ 75 000 titres en 4 minutes environ.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X