Yahoo Finance'tan tam bir hisse senedi sembolü listesi nasıl alınır? [kapalı]


100

Http://finance.yahoo.com adresinden erişilebilen tüm Yahoo ticker sembollerinin eksiksiz (ve günlük olarak güncellenen) bir listesini alma yöntemi için hiç durmadan googledim.

Yahoo, dünya çapındaki birçok borsa için hisse senetleri, vadeli işlemler vb. Hakkında bilgiye sahiptir ve bunlar aracılığıyla kullanılabilen tüm hisse senedi sembollerinin birleşik bir listesini istiyorum. YQL denedim ama "where symbol = (veya in)" cümlesi kısıtlaması var, bu yüzden sembollerden * seçemiyorum.

Yani temelde, tek bir sembol veya birkaç sembol için ayrıntılı bilgi bir seferde almak kolaydır, ancak mevcut tüm şeritlerin bir listesini nasıl bulacağımı bulamıyorum.

Birisi yardım edebilir mi lütfen?


9
Hiç neşe duydun mu? Bunu buldum: eoddata.com/symbols.aspx
Codek

Teşekkürler Codek :-) Hayır, bulamadım ve görev Yahoos sembol listesini bulmaktı, başka kimse değil, bu yüzden maalesef Eoddatas'ı kullanamıyorum. Tekrar teşekkürler ve büyük bir haftasonu :-) var
rassom

2
tamam sorun yok. Sadece LSE sembollerini istedim, bu yüzden yukarıdakiler bana yardımcı oldu - borsadaki sembollerin, örneğin yahoo / lse / google finans vb. Genelinde tutarlı olduğuna inanıyorum - yahoo dışında sonunda .L ve google'da LON var. Tüm fiyat verilerinin isteyerek mevcut olması çok saçma, ancak anlamadığım sembollerin listesi değil!
Codek

Artık 98k sembolleri tutan quandl'den meta verileri kullanabilirsiniz. Quandl sembolünün kodunu orijinal yahoo sembolüne geri çözmeniz gerektiğini unutmayın. INDEX_, ^ alır ve _ alır. quandl.com/data/YAHOO/metadata
KIC

4
Bunu sizin için yapabilecek bir python programı: github.com/Benny-/Yahoo-ticker-symbol-downloader
André Pena

Yanıtlar:


13

Yahoo.Finance API için http://code.google.com/p/yahoo-finance-managed/ adresinde sizi oraya götürecek güzel bir C # sarmalayıcı var. Ne yazık ki, hisse senedi listesini indirmenin doğrudan bir yolu yoktur, ancak aşağıdakiler listeyi alfabetik gruplar arasında yineleyerek oluşturur:

        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);
                }

            }
        }

Bana yaklaşık 4 dakikada yaklaşık 75.000 menkul kıymetin bir listesini verdi.


24
C # kullanmayanlarımız için bu kodu çalıştırıp çıktının bir kopyasını pastebin'e koyabilir misiniz?
Jeroen

1
Görünüşe göre alfabetik sonuç tam değil. Birçok sembol gözden kaçtı.
liang

Bu kodu çalıştırmayı denedim ama maalesef sonuç vermedi. Herhangi bir fikir?
lionheart

3
Bunun artık çalıştığını sanmıyorum. Bahsedilen sarmalayıcı API, biz.yahoo.com/i'ye , değişmiş gibi görünen ( finans.yahoo.com/q adresine yönlendiren) ve artık XPath'in önerdiği tabloyu içermeyen bir istekte bulunur .
richardr

45

benzer bir sorun yaşadım. yahoo bunu sunmuyor, ancak nyse.com'un listesindeki document.write ifadelerine bakarak ve js dizisi olarak verilen harfle başlayan şirketlerin listesini depoladıkları .js dosyasını bularak bir tane elde edebilirsiniz. gerçek. nasdaq.com'dan güzel düzenli csv dosyaları da alabilirsiniz: http://www.nasdaq.com/screening/companies-by-name.aspx?letter=0&exchange=nasdaq&render=download (exchange = nasdaq yerine exchange = nyse nyse sembolleri için).


2
Teşekkürler Ian. Yahoo için listeye ihtiyacım var, ancak ABD dışında da işaretler var, bu yüzden Nasdaq maalesef yeterli değil.
rassom

5
Bu mükemmel, teşekkürler. Ayrıca, üç dizinin tümü için şeritleri almak için değişimi "tümü" ile değiştirebilirsiniz.
Darin Peterson

bağlantı bu tür bir listeye sahip bir web sitesine yönlendiriyor ancak csv indirme seçeneğini göremiyorum
hipoglucido

45

Bu URL'yi kullanarak benzer bir şey yapmayı başardım:

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

Stok adı, hisse senedi simgesi ve sektör kimliği dahil olmak üzere Yahoo YQL API'yi kullanarak hisse senedi simgelerinin tam listesini indirir. Göründüğü gibi görünmeyen şey, herhangi bir hisse senedi simgesi değiştiricidir. Örneğin Rogers Communications Inc için, RCI-A.TO, RCI-B.TO vb. Değil, yalnızca RCI indiriyor. Bu bilgiler için henüz bir kaynak bulamadım - eğer birisi bunu indirmeyi otomatikleştirmenin bir yolunu biliyorsa, ben duymak isterim. Ayrıca, hisse senedi sembolü ile işlem gördüğü borsa arasında bir tür ilişki indirmenin bir yolunu bulmak güzel olurdu, çünkü bazıları birden fazla borsada işlem görüyor veya belki de sadece TSX veya başka bir şeyle ilgilenmek istiyorum. .


9
YA json daha fazla şey ise: json
Andrew Lühring

1
Güzel. Ham YQL: yahoo.finance.industry'den * seçin, burada id (yahoo.finance.sectors'dan endüstri.id'i seçin)
David Gilbertson

1
Yukarıdaki sorgu tarafından döndürülen verilerin nihayetinde bu biz.yahoo.com/ic/ind_index.html URL'sinden erişilebilen bağlantılardan geldiğine inanıyorum (bu ek URL'ler de yararlı olabilir: biz.yahoo.com/p/s_conameu.html , biz .yahoo.com / p / sum_conameu.html )
richardr

13
Bu artık işe yaramıyor gibi görünüyor :(
André Pena

1
"Yahoo.finance.sectors" tablosunun kaldırıldığını düşünüyorum. Ancak veriler için hala bir kaynak var - yalnızca bir web sayfası. En YQL Konsolu 'yahoo.finance.sectors seçin *' yaparsanız (Nitekim developer.yahoo.com/yql/console , karşılığında gömülü web sayfasına link - biz.yahoo.com/ic /ind_index.html. ) Yani yapmanız gereken, o sayfayı almak için bir kod yazmak ve ardından verileri ayrıştırmak. Size sektörlerin listesini, bu sektörlerdeki sektörleri ve endüstri kimliğini verecektir (ve sektör kimliğinin ilk hanesinden bir sektör kimliği oluşturabilirsiniz).
Steve Greene

24

NASDAQ hisse senedi listeleri ftp://ftp.nasdaqtrader.com/symboldirectory

2 dosya nasdaqlisted.txt ve otherlisted.txt vardır | boru ayrıldı. Bu size tüm hisse senetlerinin iyi bir listesini vermelidir.


benim gibi tembeller için: ftp.nasdaqtrader.com/SymbolDirectory ftp.nasdaqtrader.com/SymbolDirectory/nasdaqlisted.txt ftp.nasdaqtrader.com/SymbolDirectory/otherlisted.txt
1mike12

nasdaqtraded.txt ihtiyacınız olan şey, bu iki listenin birleşimidir.
thistleknot

14

(ABD ve ABD dışı) hisse senetleri ve ETF'ler için hisse senedi sembollerinin bir listesine yardımcı olabilirim.

Yahoo, belirli bir gün için kazançları açıklayan tüm hisse senetlerini listeleyen bir Kazanç Takvimi sağlar. Buna ABD dışı hisse senetleri dahildir.

Örneğin, bugünün: http://biz.yahoo.com/research/earncal/20120710.html

URL'nin son kısmı, Kazanç Takvimini istediğiniz tarihtir (YYYYAAGG formatında). Birkaç gün boyunca döngü yapabilir ve o günlerde kazanç bildiren tüm hisse senetlerinin Sembollerini kazıyabilirsiniz.

Yahoo'nun kazanç bildiren tüm hisse senetleri için veriye sahip olduğunun garantisi yoktur, özellikle bazı hisse senetleri artık mevcut olmadığından (iflas, satın alma vb.), Ancak bu muhtemelen makul bir başlangıç ​​noktasıdır.

Aşina Riseniz, bunu yapmak için qmao paketini kullanabilirsiniz. Yüklemede sorun yaşıyorsanız ( bu gönderiye bakın ).

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"   

Bu, herhangi bir ETF, vadeli işlem, opsiyon, tahvil, forex veya yatırım fonunu içermeyecektir.

Yahoo'dan ETF'lerin bir listesini buradan alabilirsiniz: http://finance.yahoo.com/etf/browser/mkt Bu yalnızca ilk 20'yi gösterir. Sayfanın altındaki "Tümünü Göster" bağlantısının URL'sine ihtiyacınız var . Kaç ETF olduğunu öğrenmek için sayfayı kazıyabilir ve ardından bir URL oluşturabilirsiniz.

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

Şimdi, İşaretleri o sayfadaki tablodan çıkarabilirsiniz.

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"

Bu, sunabileceğim tüm yardımlarla ilgili, ancak bu sayfaları kazıyarak sundukları vadeli işlemlerden bazılarını elde etmek için benzer bir şey yapabilirsiniz (Bunlar yalnızca ABD vadeli işlemleri)

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 ,

ABD ve ABD dışı endeksler için bu sayfaları kazıyabilirsiniz

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: // finans.yahoo.com/indices?e=nasdaq , http://finance.yahoo.com/indices?e=sp , http://finance.yahoo.com/indices?e=other , http: // finans. yahoo.com/indices?e=treasury , http://finance.yahoo.com/indices?e=commodities


2
Sizin de yazdığınız gibi, tüm şeritleri bu şekilde alamayabilirim ve projem için ya hepsi (tam liste) ya da önemli değil. Ama kapsamlı cevabın için çok teşekkür ederim GSee. Takdir et! İyi günler :-)
rassom

8

Bunu birkaç gündür araştırıyorum, peşinde olduğum şeye yaklaşan, ancak tam olarak değil, sonsuz ipuçlarını takip ediyorum.

Benim ihtiyacım basit bir 'sembol, sektör, endüstri' listesi. Java'da çalışıyorum ve herhangi bir platform yerel kodunu kullanmak istemiyorum.

Görünüşe göre alıntılar vb. Gibi diğer verilerin çoğu hazır durumda.

Sonunda, 'finviz.com'a bakmak için bir öneriyi takip etti. Sadece bilet gibi görünüyor. Aşağıdakileri kullanmayı deneyin:

http://finviz.com/export.ashx ? Bilet eklemeye devam edebilirsiniz. Kodda akışı okuyabilirsiniz. Ya da tarayıcının dosyayı açıp açmayacağınızı sormasına izin verebilirsiniz.

http://finviz.com/export.ashx?v=111&&o=ticker Aynı csv stili, ancak mevcut tüm sembolleri çeker (küresel borsalarda çok fazla)

"Dışa aktar" ı "ayırıcı" ile değiştirin; veriler tarayıcıda görünecektir.

Sitedeki her görüntüleyici öğesi için kullanabileceğiniz daha birçok seçenek vardır.

Şimdiye kadar bu, başka türlü kolayca elde edemediğim birkaç veriyi elde etmenin en güçlü ve kullanışlı programatik yoluydu. Görünüşe göre bu site, gerçek zamanlı veya gerçek zamanlıya yakın teklifler dışında ihtiyacınız olabilecek şeylerin çoğu için tek bir kaynak olabilir.



Elite trader hizmetine abone olmak zorunda kaldım ama buna değer. Teşekkürler.
vlmercado

7

Yahoo sembollerinin / şeritlerin / hisse senetlerinin tam listesi aşağıdaki web sitesinde indirilebilir (excel formatı). http://www.myinvestorshub.com/yahoo_stock_list.php

Liste Ocak 2016'ya güncellendi: http://investexcel.net/all-yahoo-finance-stock-tickers/


3
Bu liste ne kadar güncel?
Jeroen

1
Bu liste eksik görünüyor, örneğin GOOG listede yok.
user592419

Bu liste 3000 sembolden kesiliyor. Alfabetik sıradadır, bu yüzden ABD için FDEF'e girer. 3000'den az sembole sahip diğer pazarlar, Hong Kong gibi daha iyi görünüyor. Bununla birlikte, ne kadar eksiksiz / güncel olduğu hakkında hiçbir fikrim yok.
fantabolous

2
Eksik ve bakılmamış görünüyor.
Jens A. Koch

Bağlantı artık çalışmıyor
toshiro92

1

Bunun için sahip olduğum bir çözüm, sektörler üzerinde yinelemekti (ki bunu yapabileceğiniz zaman ... Bunu son zamanlarda test etmedim).

YQL her gün yavaşladığından, sonunda bu şekilde yaptığınızda bloke olursunuz.

Bundan kaçınmak için mümkün olduğunda CSV API'yi kullanın.


1

Aynı sorunu yaşadım, ancak basit bir çözümüm olduğunu düşünüyorum (kod benim RoR uygulamamdan): yahoo.finance.sectors'dan endüstri kimliklerini çıkarın ve db'ye ekleyin:

    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

Sektör kimlikleriyle birlikte sembolleriyle birlikte tüm ortaklıkları çıkarın:

    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

Bağlantı cehennemi:

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

Karışıklık için üzgünüm ama bu projem için ilk test sürümü ve buna çok hızlı ihtiyacım vardı. Uygulamam için bazı yardımcı değişkenler ve başka şeyler var, bunun için üzgünüm. Ama sorum var: Birçok sembolünüz var mı? 5500'üm var.


5500 muhtemelen sadece ABD hisse senedi sembolleri olacaktır (Yahoo finans çok daha fazlasını kapsar - dünya çapında - kabul edilen cevapta görebileceğiniz gibi, 75.000 sembol var! :) ... Kabul edilen cevabı henüz Ruby'ye dönüştürmedim (Ben de RoR kullanıyorum), yani çalışmasını sağlarsanız, yani daha fazla sembol bulursanız, lütfen bana bildirin. Teşekkürler! :-)
rassom
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.