Comment obtenir une liste complète des symboles mnémoniques de Yahoo Finance? [fermé]

j'ai cherché sur Google sans cesse une méthode pour obtenir une liste complète (et mise à jour quotidiennement) de tous les symboles Yahoo ticker disponibles sur http://finance.yahoo.com

Yahoo a des informations pour les actions, les contrats à terme, etc. pour beaucoup de bourses dans le monde, et je voudrais une liste combinée de tous les symboles de téléscripteur disponibles à travers eux. J'ai essayé YQL mais ils ont une restriction de clause "where symbol = (or in)" donc je ne peux pas sélectionner * à partir des symboles.

donc fondamentalement, obtenir des informations détaillées pour un seul symbole ou plusieurs symboles à la fois est facile, mais je ne peux pas sembler trouver comment obtenir une liste de tous les tickers disponibles.

est-ce que quelqu'un peut aider, s'il vous plaît?

90
demandé sur Kara 2011-03-09 17:00:29

9 réponses

il y a un joli papier D'emballage pour le Yahoo.Les finances de l'API à http://code.google.com/p/yahoo-finance-managed/ que vous y arrivez. Malheureusement, il n'y a pas de moyen direct de télécharger la liste des téléscripteurs, mais ce qui suit crée la liste en itérant à travers 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.

12
répondu jm1102 2012-11-03 01:31:40

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 de symboles de stock En utilisant L'API Yahoo YQL, y compris le nom de stock, stock symbole, et numéro d'identification de l'industrie. Ce qu'il ne semble pas avoir toute sorte de symbole de modificateurs. 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 trouvé une source pour cette information mais si quelqu'un connaît un moyen d'automatiser le téléchargement, j'aimerais l'entendre. Aussi, il serait bien de trouver un moyen de télécharger une sorte de relation entre le symbole et l'échange c'est négocié sur, car certaines sont cotées sur plusieurs bourses, ou peut-être j' je veux voir des trucs sur la TSX ou quelque chose comme ça.

44
répondu John 2013-05-03 13:47:35

j'ai eu un problème similaire. yahoo ne l'offre pas, mais vous pouvez en obtenir un en regardant à travers le document.instructions d'écriture sur nyse.com la liste et trouver la .js fichier où ils se trouvent juste pour stocker la liste des entreprises commençant par la lettre donnée comme un tableau js littéral. vous pouvez également obtenir des fichiers csv bien rangés à partir de nasdaq.com ici.: http://www.nasdaq.com/screening/companies-by-name.aspx?letter=0&exchange=nasdaq&render=download (remplacer exchange=nasdaq par échange=NYSE pour les symboles nyse).

42
répondu Ian Ooi 2011-06-17 21:01:50

NASDAQ Stock lists ftp://ftp.nasdaqtrader.com/symboldirectory

les 2 fichiers nasdaqlisted.txt et otherlisted.txt sont | tuyaux séparés. Ça devrait vous donner une bonne liste de toutes les actions.

20
répondu tr4nc3 2012-11-05 03:49:19

je peux peut-être vous aider avec une liste de symboles de téléscripteur pour les actions (américaines et non américaines) et pour les ETFs.

Yahoo fournit un calendrier des gains qui liste Toutes les actions qui annoncent le bénéfice pour un jour donné. Cela comprend 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 qui vous voulez l' Calendrier Des Gains. Vous pouvez faire une boucle à travers plusieurs jours et gratter les symboles de toutes les actions qui ont déclaré des gains à ces jours.

il n'y a aucune garantie que yahoo dispose de données pour toutes les actions qui déclarent des gains, surtout depuis que certains stocks n'existent plus (faillite, acquisition, etc.), mais c'est probablement un bon point de départ.

si vous connaissez R , vous pouvez utiliser le paquet qmao pour faire ça. (Voir ce post ) si vous avez des difficultés à 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"   

ne sont pas visés les Fonds de roulement, Les contrats à terme, les options, les obligations, les devises et les fonds communs de placement.

vous pouvez obtenir une liste des ETFs de yahoo ici: http://finance.yahoo.com/etf/browser/mkt Ça montre seulement les 20 premiers. Vous avez besoin de L'URL du lien "Afficher tout" en bas de la page. Vous pouvez gratter la page pour découvrez comment de nombreux ETFs there are, then build a 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 titres du tableau sur 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 à obtenez certains des contrats à terme qu'ils offrent en raclant ces pages (Ces contrats ne sont que des 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 gratter ces pages

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

14
répondu GSee 2017-05-23 11:47:08

j'ai fait des recherches sur ce sujet pendant quelques jours, en suivant des pistes sans fin qui se sont rapprochées, mais pas tout à fait, de ce que je cherchais.

il me faut une simple liste de "symbole, secteur, Industrie". Je travaille en Java et je ne veux pas utiliser de code natif de la plateforme.

il semble que la plupart des autres données, comme les citations, etc. est facilement disponible.

enfin, a suivi une suggestion à examiner "finviz.com". On dirait que juste le billet. Essayez d'utiliser ce qui suit:

http://finviz.com/export.ashx?v=111&t=aapl,cat&o =ticker Cela revient comme les lignes, le style csv, avec une ligne d'en-tête, ordonnée par le symbole de palpeur. Vous pouvez continuer à ajouter des téléscripteurs. En code, vous pouvez lire le flux. Ou vous pouvez laisser le navigateur vous demande si vous souhaitez ouvrir ou enregistrer le fichier.

http://finviz.com/export.ashx?v=111&&o=ticker Même style csv, mais tire tout disponible symboles un peu (beaucoup, à travers les échanges mondiaux)

remplacer "exporter" par "screener" et les données apparaîtront dans le navigateur.

Il ya beaucoup plus d'options que vous pouvez utiliser, un pour chaque élément de screener sur le site.

jusqu'à présent, c'est le moyen programmatique le plus puissant et le plus pratique pour obtenir les quelques données que je n'aurais pas pu obtenir autrement. Et, il semble que ce site pourrait bien être une source unique pour la plupart de ce que vous peut - être besoin d'autres que des citations en temps réel ou quasi-réel.

8
répondu Higgs 2013-07-03 03:29:00

la liste complète des symboles/titres yahoo est disponible pour téléchargement (format excel) sur le site ci-dessous. http://www.myinvestorshub.com/yahoo_stock_list.php

liste mise à jour en janvier 2016: http://investexcel.net/all-yahoo-finance-stock-tickers/

5
répondu Pravin 2016-07-29 13:42:13

une solution de rechange que j'avais pour cela était d'itérer sur les secteurs(ce que vous pouviez faire à l'époque...Je n'ai pas testé récemment).

vous finissez par être bloqué quand vous le faites de cette façon, puisque YQL est étranglé par jour.

utilisez L'API CSV chaque fois que possible pour éviter cela.

1
répondu RobotHumans 2012-05-20 22:54:41

j'ai eu le MÊME PROBLÈME, MAIS je pense que j'ai une solution simple(le code est de mon application RoR)): Extraire des cartes d'identité de l'industrie de yahoo.Finance.secteurs et l'ajouter au PB:

    select = "select * from yahoo.finance.sectors"
    generate_query select
    @data.each do |data|
      data["industry"].each do |ind|
        unless ind.kind_of?(Array)
          unless ind["id"].nil?
            id = ind["id"].to_i
            if id > 0
              Industry.where(id: id).first_or_create(name: ind["name"]).update_attribute(:name, ind["name"])
            end
          end
        end
      end
    end

extraire tous les comanies avec leurs symboles avec l'ids de l'industrie:

    ids = Industry.all.map{|ind| "'#{ind.id.to_s}'" }.join(",")
    select = "select * from yahoo.finance.industry where id in"
    generate_query select, ids
    @data.each do |ts|
      unless ts.kind_of?(Array) || ts["company"].nil?
        if ts["company"].count == 2 && ts["company"].first[0] == "name"
          t = ts["company"]
          Ticket.find_or_create_by_symbol(symbol: t["symbol"], name: t["name"] ).update_attribute(:name, t["name"])
        else
          ts["company"].each do |t|
            Ticket.find_or_create_by_symbol(symbol: t["symbol"], name: t["name"] ).update_attribute(:name, t["name"])
          end
        end
      end
    end
  end

Connexion hellper:

def generate_query(select, ids = nil)
    if params[:form] || params[:action] == "sectors" || params[:controller] == "tickets"
      if params[:action] == "sectors" || params[:controller] == "tickets"
        if ids.nil?
          query= select
        else
          query= "#{select} (#{ids})"
        end
      else
        if params[:form][:ids]
          @conditions = params_parse params[:form][:ids]
          query = "#{select} (#{@conditions})"
        end
      end
      yql_execut(query)
    end
  end

  def yql_execut(query)
    # TODO: OAuth ACCESS (http://developer.yahoo.com/yql/guide/authorization.html)
    base_url = "http://query.yahooapis.com/v1/public/yql?&format=json&env=store%3A%2F%2Fdatatables.org%2Falltableswithkeys&q="
    dirty_data = JSON.parse(HTTParty.get(base_url +  URI.encode(query)).body)
    if dirty_data["query"]["results"] == nil
      @data, @count, @table_head = nil
    else
      @data = dirty_data["query"]["results"].to_a[0][1].to_a
      @count = dirty_data["query"]["count"]
      if @count == 1
        @table_head = @data.map{|h| h[0].capitalize}
      else
        @table_head = @data.to_a.first.to_a.map{|h| h[0].capitalize}
      end
    end
  end

désolé pour mess, mais c'est la première version de test pour mon projet et j'en ai eu besoin très rapidement. Il y a quelques aides variabels et d'autres choses pour mon application, désolé pour elle. Mais j'ai une question: Avez beaucoup de symboles que vous avez? J'ai 5500.

1
répondu quatermain 2012-11-30 13:41:17