12 votos

Cómo arreglar Finance::Quote para obtener cotizaciones en GnuCash

Hace un tiempo hice el salto de la aplicación de Money de Jumsoft a GnuCash. Apeló a todas mis tendencias de TOC. No sé cómo usar Perl, o cosas por el estilo, pero con instrucciones detalladas logro hacer las cosas... cuando las puedo encontrar.

Configuré Finance::Quote para extraer cotizaciones después de configurar GnuCash. Incluso logré que extrajera cotizaciones de fondos coreanos. Y todo había estado funcionando bien, hasta esta noche. Solo recibo un mensaje emergente que dice "Hubo un error desconocido al recuperar las cotizaciones de precios". Ahí es donde necesito ayuda. ¿Qué puedo hacer?

Investigué y encontré que parece tener algo que ver con Yahoo Finance terminando su soporte para API. También aprendí que Finance::Quote puede extraer datos de muchas fuentes, así que realmente no entiendo por qué una API faltante lo rompería. También vi que alguien está tratando de usar AEX para extraer las cotizaciones en lugar de GnuCash específicamente. Encontré Finance::Quote en cpan (también escuché por primera vez de cpan), pero no entiendo lo que estoy viendo. Pero eso es todo aparte del punto. No sé cómo arreglar esto.

Se agradecería cualquier ayuda. Estoy en Windows 10, GnuCash versión 2.6.17, y tengo instalado Strawberry Perl 5.18.2.2-32bit.

editar Gracias a todos los que respondieron. Parece estar funcionando más o menos. La moneda y los fondos coreanos aún no se han actualizado, pero ustedes han llevado a este caballo al agua. Haré mi mejor esfuerzo para beberlo ahora.

7voto

vic Puntos 56

La API de Yahoo Finance ya no está disponible, por lo que Finance :: Quote necesita apuntar a algo diferente. Las versiones recientes de Finance :: Quote pueden utilizar AlphaVantage como reemplazo de la API de Yahoo Finance, pero los usuarios individuales necesitan adquirir e ingresar una clave API de AlphaVantage. Una documentación bastante decente sobre cómo hacer esto está disponible en el wiki de GnuCash.

Una vez que haya seguido las instrucciones en el wiki y configurado la clave API, todavía necesita decirle a cada seguridad individual que use AlphaVantage en lugar de Yahoo Finance:

  1. Abrir el Editor de Seguridad (Tools menú -> Security Editor)
  2. Haga doble clic en la seguridad
  3. Luego, bajo Información de Origen de Cotización...
    1. Marque Obtener Cotizaciones en Línea
    2. Marque el botón de radio Desconocido:
    3. Cambie el elemento de menú asociado a Desconocido: a alphavantage.

Como advertencia, he estado teniendo problemas intermitentes con AlphaVantage. Desde el wiki de GnuCash:

Sé paciente. Alphavantage no tiene los recursos que tenía Yahoo! y es común que las solicitudes de cotización se agoten, lo que GnuCash presentará como "error desconocido".

Ciertamente he estado experimentando esos errores, aunque no siempre.

0 votos

Por supuesto, gnucash no te permite actualizar masivamente tus fuentes para cambiarlas todas de Yahoo a Alphavantage. Un malvado añadido a esta solución (porque no es sostenible) es entrar en tu paquete perl Finance/Quote y engañar a Finance::Quote para que use Alphavantage cuando se solicita Yahoo.

2 votos

Después de seguir estas instrucciones y las del wiki de GnuCash, no veo alphavantage como una opción en el menú Desconocido. ¿Qué podría haber hecho mal?

0 votos

alphaavantage no aparecía para mí. Actualicé nuevamente F:Q usando el comando CPAN Finance::Quote de perl. Reinicié GnuCash y apareció.

4voto

Andrew Lamb Puntos 1

La API de Yahoo Finance ya no está disponible, lo que afectó al módulo de Perl Finance:Quote. Los desarrolladores de Finance:Quote han sido rápidos en solucionar los problemas y han producido varias versiones nuevas en la última semana o dos. En resumen, necesitas actualizar Finance:Quote, luego obtener una clave gratuita de AlphaVantage y decirle a Gnucash que utilice AlphaVantage como su fuente de cotizaciones en línea editando tus valores en el Editor de Precios.

2 votos

Para ampliar sobre esto, puedes obtener una clave aquí alphavantage.co/support/#api-key y luego necesitas ponerla en la variable de entorno ALPHAVANTAGE_API_KEY al ejecutar GnuCash.

1 votos

Gracias Andy y Konstantin Pereiaslov. Eché un vistazo a donde me indicaste y estoy atascado nuevamente. Obtuve una clave de AlphaVantage. Actualicé Finance::Quote fuera de GnuCash. Luego miré el editor de precios. No sé dónde ni cómo "decirle a Gnucash que use AlphaVantage como su fuente" o cómo "poner [la clave] en la variable de entorno ALPHAVANTAGE_API_KEY al ejecutar GnuCash". ¿Puedo obtener algunos detalles más?

0 votos

La lista de correo electrónico de Gnucash-users de este mes está llena de información. También, este enlace es útil: wiki.gnucash.org/wiki/…. y finalmente la respuesta de @Brian también entra en un poco más de detalle, lo cual es útil.

2voto

pedrovgp Puntos 129

Bueno, tuve el mismo problema, intenté resolverlo con Quotes::Finance, cpan, pero nunca lo logré realmente. Así que hice un pequeño script en python para obtener los precios de alphavantage de todas las acciones registradas y añadir los precios a la base de datos de gnucash. Funciona con el backend sqlite3 de gnucash, pero probablemente puedas adaptarlo fácilmente a otros backends sql:

https://gist.github.com/pedrovgp/e5b68c3de385f48b86e6309350184482

La trampa es que registrar los precios requiere que conozcas de antemano el guid de la moneda de la acción (id en la base de datos, en la tabla de commodities). Puedes averiguarlo o permitir que el script asuma la moneda del último precio registrado.

1voto

smartmeta Puntos 121

Como complemento a la respuesta de @Brian, una vez que hayas configurado AlphaVantage, si estás utilizando la base de datos, puedes editar en masa la fuente de tus valores. Cierra GnuCash, abre el archivo sql de GnuCash en tu editor de base de datos favorito y ejecuta la siguiente consulta:

UPDATE commodities SET quote_source="alphavantage" WHERE quote_source="yahoo";

o

UPDATE commodities SET quote_source="alphavantage" WHERE namespace="FUND";

Varía la cláusula WHERE según sea necesario para capturar todos los valores relevantes. Necesitas la cláusula WHERE para no sobrescribir valores que no son valores.

Finanhelp.com

FinanHelp es una comunidad para personas con conocimientos de economía y finanzas, o quiere aprender. Puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X