Como la URL de descarga anterior de Yahoo Finance ya no funciona, ahora me queda algo como esto:

https://query1.finance.yahoo.com/v7/finance/download/AAPL?period1=1492524105&period2=1495116105&interval=1d&events=history&crumb=tO1hNZoUQeQ

¿Alguien sabe cómo el período1 (y el período2) se traducen en una fecha (y viceversa)

¡Cualquier ayuda apreciada!

¡Gracias!

0
Molasar 20 may. 2017 a las 06:51

4 respuestas

La mejor respuesta

Parece que son solo marcas de tiempo de Unix, o los segundos de la Época. Aquí hay un sitio web que puede encubrir la información para usted: http://www.unixtimestamp.com

0
Aaron 20 may. 2017 a las 04:59

Son marcas de tiempo unix, o segundos desde Epoch.

Cita tomada de http://www.unixtimestamp.com/

¿Cuál es la marca de tiempo de Unix?
La marca de tiempo de Unix es una forma de rastrear tiempo como un total acumulado de segundos. Este conteo comienza en el Unix Época el 1 de enero de 1970 en UTC. Por lo tanto, la marca de tiempo de Unix es simplemente el número de segundos entre una fecha particular y el Unix Época. También debe señalarse (gracias a los comentarios de visitantes a este sitio) que este punto en el tiempo técnicamente no cambiar sin importar dónde se encuentre en el mundo. Esto es muy útil para sistemas informáticos para rastrear y clasificar información fechada en aplicaciones dinámicas y distribuidas tanto en línea como en el lado del cliente

El siguiente código C # ayuda a convertir entre DateTime a Unix Timestamp

//credits to ScottCher
//reference http://stackoverflow.com/questions/249760/how-to-convert-a-unix-timestamp-to-datetime-and-vice-versa
private static DateTime UnixTimestampToDateTime(double unixTimeStamp)
{
    //Unix timestamp Is seconds past epoch
    return new DateTime(1970, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc).AddSeconds(unixTimeStamp).ToLocalTime();
}

//credits to Dmitry Fedorkov
//reference http://stackoverflow.com/questions/249760/how-to-convert-a-unix-timestamp-to-datetime-and-vice-versa
private static double DateTimeToUnixTimestamp(DateTime dateTime)
{
    //Unix timestamp Is seconds past epoch
    return (dateTime.ToUniversalTime() - new DateTime(1970, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc)).TotalSeconds;
}

NOTA : asegúrese de redondearlo a cero decimal antes de sustituirlo en el período 1 y el período 2

1
Dennis 22 may. 2017 a las 03:15

Esto está orientado a recrear (un poco) la funcionalidad anterior. Estoy ejecutando Fedora con Chrome.

(1) Calcule la cadena de su agente de usuario para su navegador web (busqué en Google algo así como "cuál es mi cadena de agente de usuario" y rápidamente encontré una página que la imprimiría para el navegador que está usando). Será algo así como "Mozilla / 5.0 (X11; Linux x86_64) ..."

(2) Instale un paquete que exportará un archivo "cookies.txt" para Chrome (también buscó en Google algo como "Chrome export cookies.txt" y rápidamente encontró una extensión de Chrome que exportaría cookies.txt para una página que está viendo )

(3) Vaya a la página de descargas históricas para obtener un símbolo de interés en Yahoo finance. Guarde la "miga" en el enlace de descarga (como lo hizo anteriormente) y las cookies.txt para esa página.

(4) Ahora puede usar wget para obtener datos. El comando será algo como:

Wget --load-cookies [EL ARCHIVO DE COOKIES QUE GUARDÓ] -U "[LA CADENA DE AGENTE DE USUARIO QUE ENCONTRÓ]" -O [SALIDA DESEADA CSV] https://query1.finance.yahoo.com/v7/finance/download/ [EL SÍMBOLO PARA EL QUE QUIERES DATOS HISTÓRICOS]? period1 = [ HORA DE INICIO DE UNIX] \ & period2 = [HORA DE FINALIZACIÓN DE UNIX] \ & interval = 1d \ & events = history \ & crumb = [THE CRUMB YOU SAVED]

Period1 = ... es la marca de tiempo UNIX (segundos desde 1970-Jan-1 00:00:00 GMT) de la fecha de inicio y period2 = ... es la marca de tiempo UNIX de la fecha de finalización.

Pude descargar programáticamente varios símbolos de esta manera. El orden de las columnas del archivo CSV resultante había cambiado desde la antigua API ichart y la cantidad de errores que encontré en los datos históricos era notablemente mayor que la tasa de error ya bastante alta en los datos.

No adivine cuánto tiempo funcionará esto o si es estable durante un largo período de tiempo. YMMV.

1
Anonymous Dude 20 may. 2017 a las 05:05

El período1 y el período2 son solo marcas de tiempo (marcas de tiempo POSIX). Creo que puede usar en cualquier momento de la fecha que desea usar. Por ejemplo, para 2014-05-20, puede usar en cualquier momento de 00:00:00 a 23:59:59. (Actualización: Yahoo acaba de hacer un cambio aquí. Debe usar un horario posterior al cierre del mercado; de lo contrario, los datos se perderán el último día. Creo que las 18:00:00 funciona bien).

He reunido un código rápido de Python3 para usar esa nueva API. Consulte GitHub para obtener el código fuente yahoo_quote_download.

0
c0redumb 11 jun. 2017 a las 17:13