106

http://finance.yahoo.comから入手できるすべてのYahooティッカーシンボルの完全な(そして毎日更新される)リストを取得する方法を無限にグーグルで検索しました。

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

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

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

4

9 に答える 9

46

私も同様の問題を抱えていました。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(exchange=nasdaqをexchange=nyseに置き換えますnyseシンボルの場合)。

于 2011-06-17T21:01:50.713 に答える
44

私はこの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などはダウンロードしません。その情報のソースはまだ見つかりません。ダウンロードを自動化する方法を誰かが知っている場合は、聞きたいです。また、複数の取引所で取引されているものもあるので、株式シンボルとそれが取引されている取引所との間の何らかの関係をダウンロードする方法を見つけるのは良いことです。 。

于 2013-05-03T13:29:18.337 に答える
26

NASDAQストックリスト ftp://ftp.nasdaqtrader.com/symboldirectory

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

于 2012-11-05T03:35:17.420 に答える
14

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

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

たとえば、今日は次のとおりです:http: //biz.yahoo.com/research/earncal/20120710.html

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

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

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

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、先物、オプション、債券、外国為替、投資信託は含まれません。

yahooからETFのリストをここで入手できます:http://finance.yahoo.com/etf/browser/mkt これは最初の20のみを表示します。そのページの下部にある「すべて表示」リンクのURLが必要です。 。ページをスクレイプしてET​​Fがいくつあるかを調べてから、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=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

また、米国および米国以外のインデックスの場合は、これらのページをスクレイプできます

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 _ _

于 2012-07-10T20:26:51.830 に答える
14

http://code.google.com/p/yahoo-finance-managed/にYahoo.FinanceAPI用の優れた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の証券のリストを与えました。

于 2012-11-03T01:31:40.323 に答える
9

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

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

于 2012-12-27T17:59:55.163 に答える
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つずつ、使用できるオプションは他にもたくさんあります。

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

于 2013-07-03T03:29:00.507 に答える
1

このために私が持っていた回避策の1つは、セクターを反復処理することでした(その時点で実行できました...最近はテストしていません)。

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

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

于 2012-05-20T22:54:41.613 に答える
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を持っています。

于 2012-11-30T13:41:17.470 に答える