español - ¿Cómo obtener una lista completa de símbolos de cotización de Yahoo Finance?
yahoo finance google (10)
Bueno, después de excavar, yahoo no ofrece ninguna "lista" con todos los tickers. Sin embargo, este sitio brinda mucha información. Tal vez puedas encontrar lo que estás buscando aquí? http://www.gummy-stuff.org/Yahoo-data.htm
Editar: el sitio está inactivo debido a problemas de derechos de autor.
He buscado sin parar un método para obtener una lista completa (y actualizada diariamente) de todos los símbolos de cotización de Yahoo disponibles a través de http://finance.yahoo.com
Yahoo tiene información para acciones, futuros, etc. para una gran cantidad de intercambios en todo el mundo, y me gustaría tener una lista combinada de todos los símbolos disponibles a través de ellos. He intentado con YQL, pero tienen una restricción de cláusula "where symbol = (o in)", por lo que no puedo seleccionar * de los símbolos.
Básicamente, obtener información detallada para un solo símbolo o varios símbolos a la vez es fácil, pero parece que no puedo encontrar la forma de obtener una lista de todos los tickers disponibles.
¿Alguien puede ayudar, por favor?
Es posible que pueda ayudar con una lista de símbolos de cotización para acciones (estadounidenses y extranjeras) y para ETF.
Yahoo proporciona un calendario de ganancias que enumera todas las acciones que anuncian ganancias para un día determinado. Esto incluye acciones no estadounidenses.
Por ejemplo, aquí está el de hoy: http://biz.yahoo.com/research/earncal/20120710.html
la última parte de la URL es la fecha (en formato AAAAMMDD) para la que desea el Calendario de ganancias. Puede recorrer varios días y raspar los símbolos de todas las acciones que informaron ganancias en esos días.
No hay garantía de que Yahoo tenga datos para todas las acciones que reporten ganancias, especialmente debido a que algunas acciones ya no existen (bancarrota, adquisición, etc.), pero este es probablemente un punto de partida decente.
Si está familiarizado con R
, puede usar el paquete qmao para hacer esto. (Consulte esta publicación ) si tiene problemas para instalarlo.
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"
Esto no incluirá ningún ETF, futuros, opciones, bonos, divisas o fondos mutuos.
Puede obtener una lista de los ETF de yahoo aquí: http://finance.yahoo.com/etf/browser/mkt Eso solo muestra los primeros 20. Necesita la URL del enlace "Mostrar todo" en la parte inferior de esa página . Puede raspar la página para descubrir cuántos ETF hay y luego construir una 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
Ahora, puedes extraer los Tickers de la tabla en esa página
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"
Se trata de toda la ayuda que puedo ofrecer, pero podría hacer algo similar para obtener algunos de los futuros que ofrecen raspando estas páginas (estos son solo los futuros de EE. UU.)
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 ,
Y, para los índices de EE. UU. Y de otros países, podría raspar estas páginas
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
Hay un buen contenedor de C # para Yahoo.Finance API en http://code.google.com/p/yahoo-finance-managed/ que lo llevará hasta allí. Lamentablemente, no hay una forma directa de descargar el ticker list pero lo siguiente crea la lista iterando a través de los grupos alfabéticos:
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);
}
}
}
Me dio una lista de aproximadamente 75,000 seguridades en aproximadamente 4 minutos.
He estado investigando esto por unos días, siguiendo pistas interminables que se acercaron, pero no del todo, a lo que buscaba.
Mi necesidad es una simple lista de ''símbolo, sector, industria''. Estoy trabajando en Java y no quiero usar ningún código nativo de plataforma.
Parece que la mayoría de otros datos, como citas, etc., están disponibles.
Finalmente, siguió una sugerencia para mirar ''finviz.com''. Parece el boleto. Intenta usar lo siguiente:
http://finviz.com/export.ashx?v=111&t=aapl,cat&o=ticker Esto vuelve como líneas, estilo csv, con una fila de encabezado, ordenada por símbolo de clave. Puedes seguir agregando tickers. En el código, puedes leer la secuencia. O puede dejar que el navegador le pregunte si desea abrir o guardar el archivo.
http://finviz.com/export.ashx?v=111&&o=ticker Mismo estilo de csv, pero saca todos los símbolos disponibles (mucho, a través de intercambios globales)
Reemplace ''export'' con ''screener'' y los datos aparecerán en el navegador.
Hay muchas más opciones que puede usar, una por cada elemento de selección en el sitio.
Hasta ahora, esta es la forma programática más poderosa y conveniente para obtener los pocos datos que de otra manera no podría obtener fácilmente. Y, parece que este sitio podría ser una fuente única para la mayoría de lo que podría necesitar aparte de las cotizaciones en tiempo real o casi en tiempo real.
La lista completa de símbolos / tickers / stocks de yahoo está disponible para su descarga (formato excel) en el siguiente sitio web. http://www.myinvestorshub.com/yahoo_stock_list.php
Lista actualizada a enero de 2016: http://investexcel.net/all-yahoo-finance-stock-tickers/
Las listas de acciones de NASDAQ ftp://ftp.nasdaqtrader.com/symboldirectory
Los 2 archivos nasdaqlisted.txt y otherlisted.txt son | tubería separada Eso debería darte una buena lista de todas las acciones.
Logré hacer algo similar al usar esta URL:
http://query.yahooapis.com/v1/public/yql?q=select%20 *% 20from% 20yahoo.finance.industry% 20where% 20id% 20in% 20 (seleccione% 20industry.id% 20from% 20yahoo.finance .sectors) & env = store% 3A% 2F% 2Fdatatables.org% 2Falltableswithkeys
Descarga una lista completa de símbolos de stock utilizando la API YQL de Yahoo, incluido el nombre de stock, el símbolo de stock y la ID de la industria. Lo que parece no tener es ningún tipo de modificadores de símbolos de valores. Por ejemplo, para Rogers Communications Inc, solo descarga RCI, no RCI-A.TO, RCI-B.TO, etc. Todavía no he encontrado una fuente para esa información. Si alguien conoce una forma de automatizar la descarga, yo Me gustaría escucharlo. Además, sería bueno encontrar una forma de descargar algún tipo de relación entre el símbolo de acciones y el intercambio en el que se negocia, ya que algunos se negocian en intercambios múltiples, o tal vez solo quiero mirar cosas en el TSX o algo .
Tuve el mismo problema, pero creo que tengo una solución simple (el código proviene de mi aplicación RoR): Extraiga identificadores industriales de yahoo.finance.sectors y agréguelos a 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
Extraiga todas las comanies con sus símbolos con identificadores industriales:
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
Connection 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
Lo siento por el lío, pero esta es la primera versión de prueba para mi proyecto y la necesitaba muy rápido. Hay algunos ayudantes variabels y otras cosas para mi aplicación, lo siento. Pero tengo una pregunta: ¿Tienes muchos símbolos? Tengo 5500.
Tuve un problema similar. yahoo no lo ofrece, pero puede obtener uno mirando las declaraciones document.write en la lista de nyse.com y encontrando el archivo .js donde almacenan la lista de compañías comenzando con la letra dada como una matriz js literal. también puede obtener buenos archivos csv ordenados de nasdaq.com aquí: http://www.nasdaq.com/screening/companies-by-name.aspx?letter=0&exchange=nasdaq&render=download (reemplace exchange = nasdaq con exchange = nyse para nuevos símbolos).
Una solución alternativa que tuve para esto fue iterar sobre los sectores (que en el momento en que podría hacer ... no lo he probado recientemente).
Terminas bloqueado eventualmente cuando lo haces de esa manera, ya que YQL se acelera por día.
Use la API CSV siempre que sea posible para evitar esto.