Importar datos de mercados bursátiles en una hoja de cálculo de Google Drive con la función GOOGLEFINANCE

Ayer veíamos cómo usar la función GOOGLETRANSLATE() en una hoja de cálculo de Google Drive. Hoy vamos con otra función curiosa que nos permite usar otro servicio de Google: la función GOOGLEFINANCE().

La función GOOGLEFINANCE() recibe cinco parámetros, aunque solo es obligatorio el primero que sería el código del valor que queremos consultar. Tras eso definiríamos el atributo que queremos mostrar, una fecha de inicio para recuperar los datos históricos, una fecha de fin o número de días y finalmente si queremos ver el intervalo diario o semanal. Todos estos valores deben ser cadenas de texto entre comillas o referencias a celdas con texto. Si invocamos la función mandando solo el código veríamos el precio de dicha valor en tiempo real (si el mercado en el que cotiza lo permite, pues no hay soporte para todos los mercados).

El parámetro opcional con el atributo que queremos mostrar permite varias opciones, según consultemos datos históricos, en tiempo real o de fondos de inversión. Si no se especifica parámetro el valor por defecto es “price“. Si se especifica un rango de fechas entonces este parámetro es obligatorio.

Si se especifican parámetros de fecha, la solicitud se considera histórica y solo se admiten atributos históricos . Cuando trabajamos con datos históricos los valores que podemos mandar como atributo son los siguientes:

  • open: Es el precio de apertura en la fecha o el rango definidos.
  • close: Es el precio al cierre en la fecha o el rango definidos.
  • high: Es el precio máximo durante la fecha o el rango definidos.
  • low: Es el precio mínimo durante la fecha o el rango definidos.
  • volume: Es el volumen de mercado en la fecha o el rango definidos.
  • all: Sacaría todos los anteriores.

Aquí un ejemplo donde consultamos la cotización de Microsoft en el índice NASDAQ durante el primer trimestre de 2019, usando la función con estos parámetros: =GOOGLEFINANCE(“MSFT”;”all”;”01/01/2019″;”01/04/2019″;”WEEKLY”)

El resultado que nos daría sería el siguiente:


=GOOGLEFINANCE(“MSFT”;”all”;”01/01/2019″;”01/04/2019″;”WEEKLY”)

Los resultados en tiempo real se muestran como un valor en una única celda, y no todos los datos están disponibles para todos los símbolos. Para valores en tiempo real los posibles atributos a visualizar son los siguientes:

  • price: Es la cotización en tiempo real, con un retraso de hasta 20 minutos. Si no se especifica un atributo este es el valor que se tomará por defecto.
  • priceopen: Es el precio a la hora de apertura del mercado.
  • high: Es el precio máximo del día, hasta la hora actual.
  • low: Es el precio mínimo del día, hasta la hora actual.
  • volume: Es el volumen de transacciones del día actual.
  • marketcap: Es la capitalización del valor en el mercado.
  • tradetime: Es la hora de la última transacción.
  • datedelay: Es el retraso de los datos respecto de los datos en tiempo real.
  • volumeavg: Es el volumen medio diario de transacciones.
  • pe: Sería la relación entre precio y beneficio.
  • eps: Es la ganancias por acción.
  • hight52: Es el precio máximo en las últimas 52 semanas.
  • low52: Es el precio mínimo en en las últimas 52 semanas.
  • change: Es la variación del precio desde el cierre del día de mercado anterior.
  • beta: Se trata de el valor beta.
  • changepct: Es la variación porcentual del precio desde el cierre del día de mercado anterior.
  • closeyest: Es el precio al cierre del día anterior.
  • shares: Es el número de acciones emitidas.
  • currency: Indica la divisa en la cual se expresa el precio del valor.

Y para fondos de inversión los valores que podríamos usar serían:

  • closeyest: Es el precio al cierre del día anterior.
  • date: Es la fecha de comunicación del valor neto del activo.
  • returnytd: Es el retorno obtenido durante el año hasta la fecha.
  • netassets: Son los activos netos.
  • change: Es la variación entre el último valor del activo comunicado y el valor inmediatamente anterior.
  • changepct: Es la variación porcentual del valor neto del activo.
  • yieldpct: Es el rendimiento de distribución.
  • returnday: Es el retorno total en un día.
  • return1: Es el retorno total en una semana.
  • return4: Es el retorno total en cuatro semanas.
  • return13: Es el retorno total en trece semanas.
  • return52: Es el retorno total en 52 semanas (anual).
  • return156: Es el retorno total en 156 semanas (3 años).
  • return260: Es el retorno total en 260 semanas (5 años).
  • incomedividend: Es el importe de la distribución de efectivo más reciente.
  • inconmedividenddate: Es la fecha de la distribución de efectivo más reciente.
  • capitalgain: Es el importe de la distribución de ganancias de capital más reciente.
  • morningstarrating: Es la valoración en “estrellas” de la firma Morningstar.
  • expenseratio: Es el coeficiente de gastos del fondo.

Además de valores bursátiles también podemos conseguir la tasa de cambio entre dos monedas. Para ello debemos usar como parámetro una cadena de texto con el nombre de ambas divisas, juntas. En el ejemplo de abajo puedes ver como pasar de euros a dólares:

=GOOGLEFINANCE(“EURUSD”)

Esto nos devolverá la diferencia de valor entre las dos monedas, por lo que si queremos convertir una cantidad de una moneda a otra nos bastará con multiplicar. Por ejemplo, para convertir 200 euros a dólares sería así:

=GOOGLEFINANCE(“EURUSD”)*200

Anuncios

Usar Google Translate en una fórmula de la hoja de cálculo de Google Drive.

Es posible que ya hayas visto y usado el complemento de traducción automática del procesador de textos de Google Drive. Que básicamente hace uso de su herramienta Google Translate para traducir todo el documento. Pero ¿sabías que también puedes usar Google Translate como una fórmula de la hoja de cálculo de Google Drive?

La función a invocar sería GOOGLETRANSLATE(), recibiendo tres parámetros: el texto a traducir (o la celda en la que está ese texto), el idioma de origen y el idioma al que queremos traducirlo. Por ejemplo, para traducir la celda A1 de inglés a castellano sería:

=GOOGLETRANSLATE(A1;"en";"es")

Aquí os dejo una captura de pantalla de una prueba:

Crear una gráfica de dispersión con LibreOffice Calc

Toda buena hoja de cálculo tiene una utilidad de creación de gráficas y LibreOffice no va a ser menos. La suite ofimática libre nos permite crear, con su programa Calc, gráficas para dar color y hacer más visuales nuestras representaciones de datos.

Dispersión datos

Lo primero es meter los datos en las dos columnas. Para nuestro ejemplo vamos a hacer una gráfica que muestra la relación entre la distancia recorrida y el tiempo invertido, que mostrará la evolución de la velocidad. La columna X muestra el tiempo invertido y la columna Y la distancia recorrida en dicho tiempo. En dicha gráfica podremos comprobar como el cansancio va haciendo que en cada intervalo se vaya recorriendo menos distancia.

Tras insertar los datos lo siguiente es irnos al menú Añadir->Objeto->Gráfica y en los distintos modelos que podemos elegir escogemos Dispersión:

Asistente gráfica 1

Tras eso escogemos el rango de datos seleccionando las dos columnas donde hemos metido los datos. En el siguiente paso, donde hay que confirmar las series, ya nos debería traer los valores por defecto de ambas columnas. En caso contrario tendrías que seleccionarlas también.

Asistente Gráfica 2

Finalmente le damos un título a la tabla y también a ambos ejes de la misma, para que sea evidente su función.

Asistente de la gráfica 4

Y tras completar todos los pasos ya tenemos nuestra gráfica de dispersión lista y podemos visualizarla.

Gráfica evolución

LibreOffice Calc: Fórmula para calcular la letra del DNI.

Calcular la letra del DNI es un ejercicio clásico de la programación (al menos en el estado español, claro) y aquí ya revisamos en su día cómo hacerlo con Javascript. Pero algunos no programáis sino que simplemente trabajáis con software ofimático. En ese caso ¿se puede validar un DNI en una hoja de cálculo de Libre Office Calc? Se puede, aquí os dejo una fórmula para Libre Office en castellano:

=MID(“TRWAGMYFPDXBNJZSQVHLCKE”;1+RESIDUO(DERECHA(A1;8);23);1)

Siendo en este caso A1 la celda donde está el NIF almacenado.

Y si, como yo, tenéis el Libre Office en gallego entonces tendréis que traducir el nombre de las funciones, tal que así:

=MEDIO(“TRWAGMYFPDXBNJZSQVHLCKE”;1+RESTO(DEREITA(A1;8);23);1)

Os dejo una captura de cómo quedaría el resultado:
capturacalc

Funciones lógicas en LibreOffice Calc

En fin, ya que ando empantanado preparando temario para dar clases de LibreOffice y, a la vez, recibiendo clases de Microsoft Office creo que os van a tocar varias entradas sobre el tema en este blog.

Hoy vamos a hablar sobre las funciones lógicas en LibreOffice Calc, la hoja de cálculo de LibreOffice. Si estáis acostumbrados a Microsoft Office… son prácticamente iguales.

¿Qué son las funciones lógicas? Son funciones que trabajan con valores booleanos, es decir: verdadero o falso. En las hojas de cálculo nos permiten crear condicionales más o menos complejos. Primero vamos con la teoría “gorda” y luego en un par de ejemplos os queda más claro. Como os podéis imaginar la potencia de estas funciones no es pasarles a mano un valor VERDADERO o FALSO sino una expresión que pueda devolver ese valor (generalmente mediante una comparación).

En LibreOffice Calc tenemos las siguientes: Y, FALSO, SI, SIERROR, SIND, NO, O, VERDADERO y XOR. Vamos a verlas una por una:

Funciones de Libre Office Calc
Funciones de Calc (en gallego)

Y: Su sintaxis sería Y(valorLógico1; valorLógico2… valorLógico30). Esta función devuelve VERDADERO si todos sus argumentos son verdaderos, en caso de que alguno no lo sea devolverá FALSO. Requiere como mínimo un valor y hasta un máximo de 30.

FALSO: Esta función no evalúa ni recibe ningún parámetro, simplemente devuelve un valor FALSO.

SI: Esta función requiere tres parámetros que son una prueba lógica, un valor a devolver si se cumple y un valor a devolver si no, aunque sólo es obligatoria la prueba lógica. Más abajo os explicaré como anidar varios. La sintaxis básica es SI(prueba lógica; valor si se cumple; valor si no).

SI.ERROR: Esta función recibe dos valores y devuelve el primero si es válido. Pero si este devuelve un error entonces devuelve el segundo. La sintaxis es SIERROR(valor; valor alternativo).

SI.ND: Similar a la anterior, en este caso devuelve el valor sacando que sea #ND, en ese caso devuelve el segundo valor.

NO: Devuelve lo contrario al valor que recibe. Es decir, si recibe un VERDADERO devuelve FALSO y viceversa (vamos, que “niega” o complementa lo que tiene dentro).

O: Similar a Y en sintaxis, que es O(valorLógico1; valorLógico2… valorLógico30). En este caso la función devuelve VERDADERO si alguno de sus valores es verdadero.

VERDADERO: Como en el caso de FALSO, no recibe ni evalúa nada y, en este caso, devuelve VERDADERO.

XOR: El más complejo de explicar, se trata de una puerta lógica OR exclusiva (de ahí XOR). Dicho así acojona, pero es más facil de lo que parece. La sintaxis es como en el caso de Y y O, vamos XOR(valorLógico1; valorLógico2… valorLógico30) y el caso es que devuelve VERDADERO si un número impar de los valores que se le han proporcionado son VERDADEROS.

Ahora tomemos un conjunto de datos aleatorios:

Manolo 30 años Madrid

Pedro 60 años Barcelona

Juanki 45 años Zaragoza

Toño 18 años Buenos Aires

Derrick 23 años La Habana

Juampi 36 años Cedeira

Macael 22 años Medellín

Ok, supongamos que los tienes esto en una tabla, empezando en A2, como la de la foto.

Tabla con datos del Ejemplo
La tabla de ejemplo

Ahora imagina que después hay un campo donde quieres meter un dato, en este caso vamos a decir que un porcentaje que tienen que pagar. Pero hay condiciones: Los que sean de Cedeira y tengan menos de 40 años (ambas) tendrán que pagar 100$; los que sean de La Habana o tengan 45 años o más (una de las dos) pagarán sólo 75$. El resto pagarán 120$. ¿Cual sería la fórmula? Bueno, pues sería la que puedes ver en la imagen (supongamos que me he situado para escribir la fórmula en la primera fila de datos, lo que sería justo a la derecha de Barcelona, con la idea de hacer la fórmula, calcular y arrastrar hacia abajo para que se aplique al resto):

Fórmula para solucionar el ejemplo

Como tengo el LibreOffice en gallego igual te despista así que te traduzco la fórmula:
=SI(Y(C2=”Cedeira”;B2<40);100;SI(O(C2=”La Habana”;B2>=45);75;120))

Explicación de la fórmula: Abrimos un SI y como prueba lógica le decimos que compruebe las dos primeras condiciones (ser de Cedeira y menor de 40) que por tener que cumplirse ambas van dentro de un Y. En caso de que sea correcto devuelve 100, en caso de de que no anidamos otro SI, que en este caso comienza comprobando que se de alguna (por eso usamos el O) de las otras condiciones, que son ser de La Habana o tener 45 años o más. En caso de que se cumpla devolverá 75 y en caso de que no, es decir que el registro no ha cumplido ni las condiciones del primer chequeo ni las del segundo, en ese caso devuelve 120. Ves, no era tan difícil, todo es ir pensando cómo hay que anidar las cuestiones. El resultado sería este:

Tabla del ejemplo con los resultados
Resultados

Y en el caso del XOR, como os decía antes, tenéis que pensar que sólo devuelve verdadero si el número de elementos que recibe que dan verdadero son impares. Pensad en aquellas tablas de lógica aristotélica del instituto: En un XOR VERDADERO+FALSO=VERDADERO, FALSO+FALSO=FALSO, FALSO+VERDADERO=VERDADERO, VERDADERO+VERDADERO=FALSO. Parece coñazo pero es simple.

En fin, os dejo con esto. En el futuro más funciones.