Yahoo Finance에서 시세 기호의 전체 목록을 얻는 방법은 무엇입니까? [닫은]


100

http://finance.yahoo.com을 통해 사용할 수있는 모든 야후 시세 기호의 전체 (매일 업데이트) 목록을 얻는 방법에 대해 끝없이 검색했습니다.

Yahoo는 전 세계의 많은 거래소에 대한 주식, 선물 등에 대한 정보를 가지고 있으며이를 통해 사용할 수있는 모든 시세 기호의 통합 목록을 원합니다. YQL을 시도했지만 "where symbol = (또는 in)"절 제한이 있으므로 기호에서 *를 선택할 수 없습니다.

따라서 기본적으로 단일 기호 또는 여러 기호에 대한 자세한 정보를 한 번에 얻는 것은 쉽지만 사용 가능한 모든 티커 목록을 얻는 방법을 찾을 수없는 것 같습니다.

누구든지 도와 줄 수 있습니까?


8
기쁨을 얻었습니까? :이 찾았어요 eoddata.com/symbols.aspx
Codek

고마워요 Codek :-) 아니, 나는 그것을 찾지 못했고 다른 사람이 아닌 Yahoos 기호 목록을 찾는 것이 었으므로 불행히도 Eoddatas를 사용할 수 없습니다. 다시 한 번 감사 드리며 즐거운 주말
보내세요

2
괜찮아요. 나는 LSE 기호 만 원했기 때문에 위의 기호가 도움이되었습니다. 거래소 내의 기호는 예를 들어 yahoo / lse / google finance 등에서 일관 적이라고 생각합니다. yahoo는 끝에 .L이 있고 Google에는 LON이 있습니다. 모든 가격 데이터를 기꺼이 사용할 수 있다는 것은 말도 안되지만 기호 목록이 아니라는 것입니다.
Codek

이제 98k 기호를 포함하는 quandl의 메타 데이터를 사용할 수 있습니다. quandl 기호를 원래의 yahoo 기호로 다시 디코딩해야합니다. INDEX_는 ^를 얻고 _는. quandl.com/data/YAHOO/metadata
KIC

3
당신을 위해 할 수있는 파이썬 프로그램 : 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 #을 사용하지 않는 사람들을 위해 pastebin에 출력 사본을 넣을 수 있습니까?
Jeroen 2013

1
알파벳 결과가 완전하지 않은 것 같습니다. 많은 기호가 누락되었습니다.
liang

이 코드를 실행하려고 시도했지만 불행히도 결과가 반환되지 않았습니다. 어떤 아이디어?
lionheart

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 (exchange = nasdaq를 exchange = nyse로 교체) NYSE 기호의 경우).


2
고마워요 이안. 미국 이외의 지역에서도 시세가 있기 때문에 야후 목록이 필요하므로 안타깝게도 나스닥으로는 충분하지 않습니다.
rassom

5
훌륭합니다. 감사합니다. 또한 교환을 "all"로 대체하여 세 인덱스 모두에 대한 티커를 얻을 수 있습니다.
대린 피터슨

링크는 그러한 목록이있는 웹 사이트로 연결되지만 csv를 다운로드하는 옵션이 보이지 않습니다
hipoglucido

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-A.TO, RCI-B.TO 등이 아닌 RCI 만 다운로드합니다. 아직 해당 정보의 출처를 찾지 못했습니다. 다운로드를 자동화하는 방법을 아는 사람이 있다면 듣고 싶습니다. 또한 일부는 여러 거래소에서 거래되기 때문에 주식 기호와 거래되는 거래소 사이의 일종의 관계를 다운로드하는 방법을 찾는 것이 좋을 것입니다. 또는 TSX에서 물건 만보고 싶을 수도 있습니다. .


9
또는 JSON은 더 일 경우 : JSON
앤드류 Luhring

1
멋지네요. 원시 YQL : 이드 (가 yahoo.finance.sectors에서 industry.id 선택) yahoo.finance.industry에서 선택 *
데이비드 길버트 슨

1
위의 쿼리에서 반환 된 데이터는 궁극적으로이 URL biz.yahoo.com/ic/ind_index.html 에서 도달 할 수있는 링크에서 나온 것이라고 생각합니다 (이러한 추가 URL도 유용 할 수 있습니다 : biz.yahoo.com/p/s_conameu.html , biz .yahoo.com / p / sum_conameu.html )
richardr 2014 년

13
이것은 :( 더 이상 작동하지 않는 것
앙드레 페냐에게

1
"yahoo.finance.sectors"테이블이 제거 된 것 같습니다. 하지만 데이터 소스는 웹 페이지뿐입니다. (사실 YQL Console at developer.yahoo.com/yql/console 에서 'select * from yahoo.finance.sectors'를 수행 하면 반환에 포함 된 웹 페이지 -biz.yahoo.com/ic /ind_index.html. ) 그래서 여러분이해야 할 일은 그 페이지를 가져 오는 코드를 작성하고 그 페이지에서 데이터를 파싱하는 것입니다. 섹터 목록, 해당 섹터의 산업 및 산업 ID를 제공합니다 (산업 ID의 첫 번째 숫자에서 섹터 ID를 만들 수 있음).
Steve Greene

24

NASDAQ 주식 상장 ftp://ftp.nasdaqtrader.com/symboldirectory

2 개의 파일 nasdaqlisted.txt 및 otherlisted.txt는 | 파이프 분리. 그것은 당신에게 모든 주식의 좋은 목록을 제공 할 것입니다.


게으른 나 같은 경우 : ftp.nasdaqtrader.com/SymbolDirectory ftp.nasdaqtrader.com/SymbolDirectory/nasdaqlisted.txt ftp.nasdaqtrader.com/SymbolDirectory/otherlisted.txt
1mike12

nasdaqtraded.txt가 필요한 것입니다. 두 목록이 결합되어 있습니다.
thistleknot

14

(미국 및 비 미국) 주식 및 ETF에 대한 종목 기호 목록을 도와 드릴 수 있습니다.

야후는 주어진 날의 수입을 발표하는 모든 주식을 나열하는 수입 달력을 제공합니다. 여기에는 미국 이외의 주식이 포함됩니다.

예를 들어 오늘의 내용은 다음과 같습니다. http://biz.yahoo.com/research/earncal/20120710.html

URL의 마지막 부분은 수익 달력을 원하는 날짜 (YYYYMMDD 형식)입니다. 며칠을 반복하고 그날 수입을보고 한 모든 주식의 기호를 긁어 낼 수 있습니다.

특히 일부 주식 (파산, 인수 등)이 더 이상 존재하지 않기 때문에 yahoo가 수익을보고하는 모든 주식에 대한 데이터를 보유하고 있다는 보장은 없지만 이것이 적절한 출발점 일 것입니다.

에 익숙하다면 qmao 패키지R사용 하여이 작업을 수행 할 수 있습니다 . ( 이 게시물 참조 ) 설치에 문제가있는 경우.

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이 필요합니다. . 페이지를 긁어내어 얼마나 많은 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=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


2
당신이 썼 듯이, 나는 이런 식으로 모든 티커를 얻지 못할 수 있으며 내 프로젝트의 경우 모두 (전체 목록)이거나 중요하지 않습니다. 그러나 철저한 답변에 감사드립니다, GSee. 감사합니다! 좋은 하루 되세요 :-)
rassom

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 스타일이지만 사용 가능한 모든 기호를 가져옵니다 (전 세계 거래소에서 많이)

'내보내기'를 '스크리너'로 바꾸면 데이터가 브라우저에 표시됩니다.

사이트의 모든 스크리너 요소에 대해 하나씩 사용할 수있는 더 많은 옵션이 있습니다.

지금까지이 방법은 다른 방법으로는 쉽게 얻을 수없는 몇 가지 데이터를 얻을 수있는 가장 강력하고 편리한 프로그래밍 방식입니다. 그리고이 사이트는 실시간 또는 거의 실시간 견적 외에 필요한 대부분의 항목에 대한 단일 소스가 될 수 있습니다.


4
내가로드 한 모든 URL은 finviz.com/elite.ashx
PUG

엘리트 트레이더 서비스에 가입해야했지만 그만한 가치가 있습니다. 감사.
vlmercado

7

야후 심볼 / 티커 / 주식의 전체 목록은 아래 웹 사이트에서 다운로드 (엑셀 형식) 할 수 있습니다. http://www.myinvestorshub.com/yahoo_stock_list.php

2016 년 1 월로 업데이트 된 목록 : http://investexcel.net/all-yahoo-finance-stock-tickers/


3
이 목록은 얼마나 최신입니까?
Jeroen 2013

1
이 목록은 불완전한 것 같습니다. 예를 들어 GOOG가 목록에 없습니다.
user592419

이 목록은 3000 개 기호에서 잘립니다. 그것은 알파벳 순서이므로 미국의 경우 FDEF에 있습니다. 홍콩과 같이 기호가 3000 개 미만인 다른 시장은 더 나은 것으로 보입니다. 그것은 그것이 얼마나 완전하고 최신인지 전혀 모른다고 말했습니다.
fantabolous

2
불완전하고 관리되지 않은 것 같습니다.
Jens A. Koch

링크는 더 이상 작동하지 않습니다
toshiro92

1

이 문제에 대한 한 가지 해결 방법은 섹터를 반복하는 것이 었습니다 (당시에는 할 수있는 작업입니다. 최근에 테스트하지 않았습니다).

YQL이 하루에 조절되기 때문에 그렇게하면 결국 차단됩니다.

이를 방지하려면 가능하면 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을 사용하고 있습니다) 그래서 만약 당신이 그것을 작동하게한다면, 즉 더 많은 기호를 찾으면 저에게 알려주십시오. 감사! :-)
rassom
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.