Как получить полный список символов тикера от Yahoo Finance? [закрытый]



Я бесконечно искал способ получить полный (и ежедневно обновляемый) список всех символов тикера Yahoo, доступных через http://finance.yahoo.com



Yahoo имеет информацию для акций, фьючерсов и т. д. Для многих бирж по всему миру, и я хотел бы получить объединенный список всех символов тикера, доступных через них. Я пробовал YQL, но у них есть ограничение предложения "where symbol = (или in)", поэтому я не могу выбрать * из символов.



Так что в основном, получение подробной информации для одного символа или нескольких символов за один раз легко, но я просто не могу понять, как получить список всех доступных тикеров.



может кто-нибудь помочь, пожалуйста?

800   9  

9 ответов:

есть хорошая оболочка C# для Yahoo.Finance API at http://code.google.com/p/yahoo-finance-managed/ это приведет вас туда. К сожалению, нет прямого способа загрузить список тикеров, но следующее создает список, повторяя алфавитные группы:

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

            }
        }

Он дал мне список около 75 000 ценных бумаг примерно за 4 минуты.

мне удалось сделать что-то подобное, используя этот 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, в том числе название акции, фондовый символ и идентификатор отрасли. То, что он не кажется есть любые модификаторы биржевых символов. Е. Г. для Роджерса коммуникаций Инк, он только загружает РСИ, не РКИ-А., ИРС-Б. и т. д. Я еще не нашел источник для этой информации - если кто-нибудь знает способ автоматизировать загрузку, я бы хотел его услышать. Кроме того, было бы неплохо найти способ загрузить какую-то связь между биржевым символом и биржей, на которой он торгуется, поскольку некоторые из них торгуются на нескольких биржах, или, может быть, я только хочу посмотреть на вещи на TSX или что-то.

У меня была похожая проблема. yahoo не предлагает его, но вы можете получить его, просмотрев документ.написать заявления на nyse.com ' s список и находка.JS-файл, где они просто хранят список компаний, начиная с данной буквы, как литерал массива js. вы также можете получить хорошие аккуратные csv файлы из nasdaq.com здесь: http://www.nasdaq.com/screening/companies-by-name.aspx?letter=0&exchange=nasdaq&render=download (заменить exchange=nasdaq на exchange=nyse для символов nyse).

списки акций NASDAQ ftp://ftp.nasdaqtrader.com/symboldirectory

2 файла nasdaqlisted.txt и другие в списке.txt разделены / труба. Это должно дать вам хороший список всех акций.

Я могу помочь со списком символов тикера для (американских и неамериканских) акций и для ETFs.

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"   

это не будет включать в себя любые ETFs, фьючерсы, опционы, облигации, Форекс или взаимные фонды.

вы можете получить список торгуемых на бирже фондов от Yahoo здесь: http://finance.yahoo.com/etf/browser/mkt Что показывает только первые 20. Вам нужен URL-адрес ссылки "показать все внизу этой страницы. Вы можете очистить страницу, чтобы узнать, сколько ETFs есть, а затем построить 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,

и, для США и неамериканские индексы, вы можете очистить их

Я изучал это в течение нескольких дней, следуя бесконечным выводам, которые были близки, но не совсем, к тому, что я искал.

Мне нужен простой список "символ, сектор, промышленность". Я работаю на Java и не хочу использовать какой-либо собственный код платформы.

похоже, что большинство других данных, таких как цитаты, и т. д., легко доступны.

наконец, последовало предложение посмотреть на 'finviz.com - ... похоже, только билет. Попробуйте использовать следующее:

http://finviz.com/export.ashx?v=111&t=aapl, cat&o=тикер Это возвращается в виде строк, csv стиль, с заголовком строки, упорядоченные по символу тикера. Вы можете продолжать добавлять тикеры. В коде вы можете прочитать поток. Или вы можете позволить браузеру спросить вас, следует ли открыть или сохранить файл.

http://finviz.com/export.ashx?v=111&&o=ticker Тот же стиль csv, но тянет все доступные символы (много, по всему миру обмены)

замените "экспорт" на "screener", и данные будут отображаться в браузере.

есть еще много вариантов, которые вы можете использовать, по одному для каждого элемента досмотра на сайте.

до сих пор это самый мощный и удобный программный способ получить несколько фрагментов данных, которые я не мог иначе легко получить. И, похоже, этот сайт вполне может быть единственным источником для большинства из того, что вам может понадобиться, кроме реального или почти реального времени двойные кавычки.

полный список символов/тикеров/акций yahoo доступен для загрузки(формат excel) на веб-сайте ниже. http://www.myinvestorshub.com/yahoo_stock_list.php

список обновлен до января 2016 года: http://investexcel.net/all-yahoo-finance-stock-tickers/

один обходной путь, который я имел для этого, состоял в том, чтобы перебирать сектора(что в то время вы могли сделать...Я не проверял это в последнее время).

вы в конечном итоге блокируетесь, когда вы это делаете, хотя, поскольку YQL дросселируется в день.

используйте CSV API, когда это возможно, чтобы избежать этого.

у меня была такая же проблема, но я думаю, что у меня есть простое решение(код из моего приложения RoR): Извлечение идентификаторов отрасли из yahoo.финансы.секторов и добавить его в БД:

    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

извлеките все comanies с их символами с идентификаторами отрасли:

    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

подключение 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

извините за беспорядок, но это первая тестовая версия моего проекта и мне нужно было очень быстро. Есть некоторые помощники variabels и другие вещи для моего приложения, извините за это. Но у меня есть вопрос:у вас есть много символов? У меня 5500.

Comments

    Ничего не найдено.