Yahoo Financeからティッカーシンボルの完全なリストを取得するにはどうすればよいですか?[閉まっている]


100

http://finance.yahoo.comから入手できるすべてのYahooティッカーシンボルの完全な(および毎日更新された)リストを取得する方法について、私は限りなくグーグルしました。

Yahooには、世界中の多くの取引所の株式、先物などの情報があります。それらを介して利用できるすべてのティッカーシンボルを組み合わせたリストが欲しいのですが。YQLを試しましたが、「where symbol =(or in)」句の制限があるため、シンボルから*を選択できません。

したがって、基本的には、1つのシンボルまたは複数のシンボルの詳細情報を一度に取得するのは簡単ですが、利用可能なすべてのティッカーのリストを取得する方法を見つけられないようです。

誰か助けてもらえますか?


8
何か喜びはありましたか?私はこれを見つけました:eoddata.com/symbols.aspx
Codek

Codekに感謝します:-)いいえ、見つかりませんでした。タスクはYahooのシンボルリストを見つけることであり、他の人を見つけることではなかったため、残念ながらEoddatasを使用できません。ありがとうございました。素晴らしい週末をお
過ごしください

2
問題ありません。私はLSEシンボルだけが欲しかったので、上記が役に立った-交換内のシンボルは、たとえばyahoo / lse / google financeなどで一貫していると思います。すべての価格データが喜んで入手できる方法はばかげていますが、シンボルのリストではありません。
コーデック:

これで、98kシンボルを保持するquandlからのメタデータを使用できます。元のシンボルを元のyahooシンボルにデコードする必要があることに注意してください。INDEX_は^および_を取得します。quandl.com/data/YAHOO/metadata
KIC

3
あなたのためにそれを行うことができますPythonプログラム:github.com/Benny-/Yahoo-ticker-symbol-downloader
アンドレ・ペーニャ

回答:


13

http://code.google.com/p/yahoo-finance-managed/に Yahoo.Finance APIの優れたC#ラッパーがあり、そこにアクセスできます。残念ながら、ティッカーリストを直接ダウンロードする方法はありませんが、次はアルファベット順のグループを反復してリストを作成します。

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

            }
        }

約4分間で約75,000の証券のリストが表示されました。


24
C#を使用していない私たちのために、このコードを実行して、出力のコピーをペーストビンに配置できますか?
Jeroen 2013

1
アルファベット順の結果は完全ではないようです。多くのシンボルが欠落しています。
リャン2013

このコードを実行してみましたが、残念ながら結果は返されませんでした。何か案は?
ライオンハート、2014年

3
これはもううまくいかないと思います。上記のラッパーAPIは、変更されたように見え(finance.yahoo.com/qにリダイレクト)、XPathが提案するテーブルを含まないbiz.yahoo.com/iにリクエストを送信します。
richardr 2014年

45

同様の問題がありました。yahooはそれを提供していませんが、nyse.comのリストのdocument.writeステートメントを調べ、特定の文字で始まる会社のリストをjs配列として格納している.jsファイルを見つけることで取得できますリテラル。:あなたもnasdaq.comここから素敵な整頓CSVファイルを取得することができます http://www.nasdaq.com/screening/companies-by-name.aspx?letter=0&exchange=nasdaq&render=download(為替= NYSEとの交流= NASDAQを交換しますnyseシンボルの場合)。


2
イアン、ありがとう。Yahooのリストが必要ですが、米国以外でもティッカーがあるため、残念ながらNasdaqでは不十分です。
rassom

5
これは素晴らしいです、ありがとう。また、交換を「すべて」に置き換えて、3つすべてのインデックスのティッカーを取得することもできます。
Darin Peterson

リンクをクリックすると、そのようなリストのあるWebサイトが表示されますが、csvをダウンロードするオプションが表示されません
ヒポグルシド

45

私はこの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

Yahoo YQL APIを使用して、銘柄名、銘柄記号、業界IDを含む銘柄記号の完全なリストをダウンロードします。何もないように見えるのは、あらゆる種類の銘柄記号修飾子です。たとえば、Rogers Communications Incの場合、RCIのみがダウンロードされ、RCI-A.TO、RCI-B.TOなどはダウンロードされません。その情報のソースがまだ見つかりません-ダウンロードを自動化する方法を知っている人がいる場合は、聞きたいです。また、いくつかは複数の取引所で取引されているので、銘柄記号と取引されている取引所との間のある種の関係をダウンロードする方法を見つけるのは良いことです、あるいはTSXや何かで何かを見たいだけかもしれません。


9
またはJSONはよりあなたのものである場合:JSON
アンドリューLuhring

1
良いですね。未加工のYQL:idを選択* from yahoo.finance.industry where id in(select industrial.id from yahoo.finance.sectors)
David Gilbertson

1
私は、上記のクエリによって返されたデータは、最終的には、このURLのから到達可能なリンクから来ていると信じてbiz.yahoo.com/ic/ind_index.html:(これらの追加のURLも有用である可能性がbiz.yahoo.com/p/s_conameu.htmlビズ.yahoo.com / p / sum_conameu.html
richardr 2014年

13
これはもう動作していないようです:(
アンドレ・ペーニャ

1
テーブル「yahoo.finance.sectors」は削除されたと思います。しかし、データのソースはまだあります-Webページのみです。あなたがでYQLコンソールで「yahoo.finance.sectorsから選択*」を行った場合(実際、developer.yahoo.com/yql/console、復帰に埋め込まれたWebページへのリンクがある- biz.yahoo.com/ic /ind_index.html。)したがって、あなたがしなければならないことは、そのページを取得し、そこからデータを解析するためのコードを書くことです。セクターのリスト、それらのセクターの業界、および業界IDが表示されます(業界IDの最初の桁からセクターIDを作成できます)。
Steve Greene

24

NASDAQ株式はftp://ftp.nasdaqtrader.com/symboldirectoryをリストしています

nasdaqlisted.txtとotherlisted.txtの2つのファイルは| 分離されたパイプ。それはあなたにすべての株の良いリストを与えるでしょう。


私のような怠け者の場合:ftp.nasdaqtrader.com/SymbolDirectory ftp.nasdaqtrader.com/SymbolDirectory/nasdaqlisted.txt ftp.nasdaqtrader.com/SymbolDirectory/otherlisted.txt
1mike12

nasdaqtraded.txtが必要なものです。両方のリストを組み合わせたものです。
thistleknot

14

(米国および非米国)株式やETFのティッカーシンボルのリストをお手伝いできるかもしれません。

Yahooは、特定の日の収益を発表するすべての株式をリストする収益カレンダーを提供しています。これには米国以外の株式も含まれます。

たとえば、ここに今日のものがあります:http : //biz.yahoo.com/research/earncal/20120710.html

URLの最後の部分は、収益カレンダーが必要な日付(YYYYMMDD形式)です。数日ループして、その日に収益を報告したすべての銘柄のシンボルをこすることができます。

特に一部の株式が存在しないため(破産、買収など)、yahooが収益を報告するすべての株式のデータを持っている保証はありませんが、これはおそらくまともな出発点です。

に慣れているR場合は、qmaoパッケージを使用してこれを行うことができます 。(この投稿を参照)インストールに問題がある場合。

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"   

これには、ETF、先物、オプション、債券、外国為替、投資信託は含まれません。

あなたはここにヤフーからのETFのリストを取得することができます。http://finance.yahoo.com/etf/browser/mkt 唯一のショーは、最初の20あなたは、そのページの一番下にある「すべて表示」リンクのURLが必要であること。ページをスクレイピングして、ETFの数を調べ、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

これで、そのページのテーブルからティッカーを抽出できます

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"

それが私が提供できるすべての支援ですが、これらのページをこすることで、彼らが提供する先物の一部を取得するために同様のことを行うことができます(これらは米国の先物のみです)

http://finance.yahoo.com/indices?e=futureshttp://finance.yahoo.com/futures?t=energyhttp://finance.yahoo.com/futures?t=metalsのhttp: //finance.yahoo.com/futures?t=grainshttp://finance.yahoo.com/futures?t=livestockhttp://finance.yahoo.com/futures?t=softsのhttp:// finance.yahoo.com/futures?t=indices

また、米国および米国以外のインデックスについては、これらのページをこすることができます

http://finance.yahoo.com/intlindices?e=americashttp://finance.yahoo.com/intlindices?e=asiahttp://finance.yahoo.com/intlindices?e=europeのhttp: //finance.yahoo.com/intlindices?e=africahttp://finance.yahoo.com/indices?e=dow_joneshttp://finance.yahoo.com/indices?e=new_yorkのhttp:// finance.yahoo.com/indices?e=nasdaqhttp://finance.yahoo.com/indices?e=sphttp://finance.yahoo.com/indices?e=otherのhttp://財政。 yahoo.com/indices?e=treasuryhttp://finance.yahoo.com/indices?e=commodities


2
あなたが書いたように、私はこの方法ですべてのティッカーを取得しない可能性があり、私のプロジェクトではそれはすべて(完全なリスト)であるか、それは問題ではありません。しかし、完全な回答をありがとう、GSee。感謝します!素晴らしい一日をお過ごしください:-)
身代金

8

私はこれを数日間研究してきましたが、私が求めていたものに近づきましたが、完全ではありません。

私の必要性は、「シンボル、セクター、産業」の簡単なリストです。私はJavaで作業しており、プラットフォームのネイティブコードを使用したくありません。

見積もりなど、他のほとんどのデータはすぐに利用できるようです。

最後に、「finviz.com」を見るという提案に従いました。チケットのように見えます。以下を使用してみてください:

http://finviz.com/export.ashx?v=111&t=aapl,cat&o=ticker これは、ティッカーシンボル順に並べられた、ヘッダー行を含むcsvスタイルの行として返されます。ティッカーを追加し続けることができます。コードでは、ストリームを読み取ることができます。または、ファイルを開くか保存するかをブラウザに尋ねさせることができます。

http://finviz.com/export.ashx?v=111&&o=ticker 同じcsvスタイルですが、使用可能なすべてのシンボルをプルします(グローバル交換全体で)

「export」を「screener」に置き換えると、データがブラウザに表示されます。

使用できるオプションは他にもたくさんあり、サイトのすべてのスクリーナー要素に1つあります。

これまでのところ、これは、他の方法では簡単に取得できないと思われるいくつかのデータを取得するための最も強力で便利なプログラムによる方法です。また、このサイトは、リアルタイムまたはほぼリアルタイムの見積もり以外に、必要なほとんどの情報の単一のソースになる可能性があるようです。


4
ロードしたすべてのURLはfinviz.com/elite.ashxに
PUG

エリートトレーダーサービスに登録する必要がありましたが、それだけの価値があります。ありがとう。
vlmercado 2016

7

ヤフーシンボル/ティッカー/株式の完全なリストは、以下のWebサイトでダウンロード(Excel形式)できます。http://www.myinvestorshub.com/yahoo_stock_list.php

2016年1月に更新されたリスト:http : //investexcel.net/all-yahoo-finance-stock-tickers/


3
このリストはどのくらい最新のものですか?
Jeroen 2013

1
このリストは不完全なようです。たとえば、GOOGはリストに載っていません。
user592419 2014年

このリストは3000シンボルで切り捨てられます。それはアルファベット順になっているので、FDEFにいる米国にとっては。香港のように、シンボルが3000未満の他の市場の方がうまくいくようです。それは私がそれがどれほど完全であるか/最新のものであるかを知らないと言った。
幻想的な

2
不完全でメンテナンスされていないようです。
イェンスA.コッチ2014

リンクが機能しなくなった
toshiro92 '19 / 03/16

1

私がこれに対して行った回避策の1つは、セクターを反復処理することでした(当時は可能でしたが、最近はテストしていません)。

YQLは1日あたりスロットルされるため、そのようにすると最終的にブロックされてしまいます。

これを回避するには、可能な限りCSV APIを使用してください。


1

同じ問題がありましたが、簡単な解決策があると思います(コードはRoRアプリからのものです):yahoo.finance.sectorsから業界IDを抽出してdbに追加します。

    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

業界IDを持つシンボルを含むすべての共同体を抽出します。

    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

接続ヘルパー:

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

混乱して申し訳ありませんが、これは私のプロジェクトの最初のテストバージョンであり、非常に高速に必要でした。私のアプリにはいくつかのヘルパーバリアベルやその他のものがあります。しかし、私は質問があります:あなたは多くのシンボルを持っていますか?私は5500を持っています。


5500はおそらく米国の株式記号に過ぎません(Yahooファイナンスはより多くの-世界的に-受け入れられた回答でわかるように、彼は約75,000の記号を得ました!:) ...受け入れられた回答.NETの方法をRubyにまだ変換していません(私はRoRも使用しています)、それが機能するようになっている場合、つまりより多くのシンボルを見つける場合は、お知らせください。ありがとう!:-)
身代金2012年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.