Trabajo con la base de datos

Las funciones para trabajar con las bases de datos usan el popular y sencillo motor SQLite. La comodidad de este motor reside en que toda la base de datos se encuentra en un único archivo en el disco duro de la computadora del usuario.

Con la ayuda de estas funciones, resulta muy sencillo crear recuadros, añadir datos a estos, realizar modificaciones y generar muestras con solicitudes SQL simples:

  • obtener la historia comercial y las cotizaciones en cualquier formato,
  • guardar los resultados de la optimización y la simulación,
  • preparar e intercambiar datos con otros paquetes analíticos,
  • guardar los ajustes y estados de los programas MQL5.

Además, en las solicitudes se pueden utilizar funciones estadísticas y matemáticas.

Las funciones para trabajar con las bases de datos permiten sustituir las operaciones más repetidas en cuanto al procesamiento de grandes matrices de datos por solicitudes SQL, lo cual posibilita en muchos casos, en lugar de programar complejos ciclos y comparaciones, usar las llamadas de DatabaseExecute/DatabasePrepare. Para obtener fácilmente los resultados de la solicitud en una estructura ya preparada, use la función DatabaseReadBind, que permite leer directamente todos los campos de la entrada en una sola llamada.

Para acelerar las operaciones de lectura, registro y modificación de la base de datos, es posible abrir/crear en la memoria operativa con la bandera DATABASE_OPEN_MEMORY, pero, en este caso, la base estará disponible en un programa concreto y no se dividirá con ningún otro. Al trabajar con las bases de datos que se encuentran en el disco duro, es necesario envolver las inserciones/cambios masivos de datos en las transacciones con la ayuda de DatabaseTransactionBegin/DatabaseTransactionCommit/DatabaseTransactionRollback, lo cual ofrece una velocidad cientos de veces superior.

Para empezar a trabajar con estas funciones, basta con leer el artículo SQLite: trabajo nativo con bases de datos en SQL en MQL5.

Función

Acción

DatabaseOpen

Abre o crea una base de datos en el archivo indicado

DatabaseClose

Cierra una base de datos

DatabaseImport

Importa a un recuadro los datos de un archivo

DatabaseExport

Exporta un recuadro o el resultado de la ejecución de una solicitud SQL a un archivo CSV

DatabasePrint

Imprime el recuadro o resultado de la ejecución de una solicitud SQL en el diario de expertos

DatabaseTableExists

Comprueba la presencia de un recuadro en la base de datos

DatabaseExecute

Ejecuta una solicitud a la base de datos indicada

DatabasePrepare

Crea el manejador de una solicitud, que después puede ser ejecutada con la ayuda de DatabaseRead()

DatabaseReset

Resetea la solicitud a su estado inicial, igual que tras la llamada de DatabasePrepare()

DatabaseBind

Establece el valor de un parámetro en la solicitud

DatabaseBindArray

Establece una matriz como valor del parámetro.

DatabaseRead

Ejecuta el paso a la siguiente entrada en el resultado de la solicitud

DatabaseReadBind

Pasa a la siguiente entrada y lee los datos en la estructura de esta

DatabaseFinalize

Elimina la solicitud creada en DatabasePrepare()

DatabaseTransactionBegin

Comienza la ejecución de una transacción

DatabaseTransactionCommit

Finaliza la ejecución de una transacción

DatabaseTransactionRollback

Ejecuta el retroceso de una transacción

DatabaseColumnsCount

Obtiene el número de campos en una solicitud

DatabaseColumnName

Obtiene el nombre de un campo según el número

DatabaseColumnType

Obtiene el tipo de un campo según el número

DatabaseColumnSize

Obtiene el tamaño del campo en bytes

DatabaseColumnText

Obtiene de la entrada actual el valor del campo en forma de línea

DatabaseColumnInteger

Obtiene de la entrada actual un valor del tipo int

DatabaseColumnLong

Obtiene de la entrada actual un valor del tipo long

DatabaseColumnDouble

Obtiene de la entrada actual un valor del tipo double

DatabaseColumnBlob

Obtiene de la entrada actual el valor del campo en forma de matriz

Funciones estadísticas:

  • mode – moda
  • median – mediana (percentil 50)
  • percentile_25 – percentil 25
  • percentile_75 – percentil 75
  • percentile_90 – percentil 90
  • percentile_95 – percentil 95
  • percentile_99 – percentil 99
  • stddev o stddev_samp – desviación estándar de la muestra
  • stddev_pop – desviación estándar de la población
  • variance or var_samp – varianza de la muestra
  • var_pop – varianza de la población

Funciones matemáticas

  • acos(X) — arcocoseno en radianes
  • acosh(X) — arcocoseno hiperbólico
  • asin(X) — arcoseno en radianes
  • asinh(X) — arcoseno hiperbólico
  • atan(X) — arcotangente en radianes
  • atan2(X,Y) — arcotangente en radianes de la relación X/Y
  • atanh(X) — arcotangente hiperbólico
  • ceil(X) — redondeo hasta el número entero superior
  • ceiling(X) — redondeo hasta el número entero superior
  • cos(X) — coseno del ángulo en radianes
  • cosh(X) — coseno hiperbólico
  • degrees(X) — convierte los radianes en un ángulo
  • exp(X) — función exponencial
  • floor(X) — redondeo hasta el número entero inferior
  • ln(X) — logaritmo natural
  • log(B,X) — logaritmo de base indicada
  • log(X) — logaritmo decimal
  • log10(X) — logaritmo decimal
  • log2(X) — logaritmo de base 2
  • mod(X,Y) — remanente de la división
  • pi() — número Pi aproximado
  • pow(X,Y) — potencia de base indicada
  • power(X,Y) —  potencia de base indicada
  • radians(X) —  convierte un ángulo en radianes
  • sin(X) — seno de un ángulo en radianes
  • sinh(X) — seno hiperbólico
  • sqrt(X) — raíz cuadrada
  • tan(X) — tangente de un ángulo en radianes
  • tanh(X) — tangente hiperbólica
  • trunc(X) — recorta hasta el número entero más próximo a 0

Ejemplo:

select
  count(*) as book_count,
  cast(avg(parentas integeras mean,
  cast(median(parentas integeras median,
  mode(parentas mode,
  percentile_90(parentas p90,
  percentile_95(parentas p95,
  percentile_99(parentas p99
from moz_bookmarks;