Utilisation des bases de données

Les fonctions permettant l'utilisation des bases de données sont basées sur le moteur populaire et facile à utiliser SQLite. La fonctionnalité pratique de ce moteur est que la base de données entière se trouve dans un seul fichier sur le disque dur du PC de l'utilisateur.

Les fonctions permettent de créer facilement des tables, d'y ajouter des données, d'effectuer des modifications et d'échantillonner à l'aide de requêtes SQL simples :

  • recevoir l'historique des transactions et les cotations de tous les formats,
  • sauvegarde des résultats d'optimisation et de test,
  • préparer et échanger des données avec d'autres progiciels d'analyse,
  • stockage des paramètres et de l'état de l'application MQL5.

Les requêtes permettent d'utiliser les fonctions statistiques et mathématiques.

Les fonctions de travail avec les bases de données vous permettent de remplacer les opérations de gestion des tableaux de données volumineuses les plus répétitives par des requêtes SQL, de sorte qu'il est souvent possible d'utiliser des appels à DatabaseExecute /DatabasePrepare au lieu de programmer des boucles et des comparaisons complexes. Utilisez la fonction DatabaseReadBind pour obtenir facilement les résultats de la requête dans une structure prête à l'emploi. La fonction permet de lire tous les champs d'enregistrement à la fois dans un seul appel.

Pour accélérer la lecture, l'écriture et la modification, une base de données peut être ouverte/créée en RAM avec l'indicateur DATABASE_OPEN_MEMORY, bien qu'une telle base de données ne soit disponible que pour une application spécifique et ne soit pas partagée. Lorsque vous travaillez avec des bases de données situées sur le disque dur, les insertions/modifications de données en masse doivent être encapsulées dans des transactions à l'aide de DatabaseTransactionBegin/DatabaseTransactionCommit/DatabaseTransactionRollback. Cela accélère le processus des centaines de fois.

Pour commencer à travailler avec les fonctions, lisez l'article SQLite: Native handling of SQL databases in MQL5.

Fonction

Action

DatabaseOpen

Ouvre ou crée une base de données dans le fichier spécifié

DatabaseClose

Ferme une base de données

DatabaseImport

Imports data from a file into a table

DatabaseExport

Exports a table or an SQL request execution result to a CSV file

DatabasePrint

Prints a table or an SQL request execution result in the Experts journal

DatabaseTableExists

Vérifie la présence d'une table dans la base de données

DatabaseExecute

Exécute une requête dans la base de données spécifiée

DatabasePrepare

Crée le handle d'une requête, qui peut être ensuite exécutée avec DatabaseRead()

DatabaseReset

Réinitialise une requête, comme après avoir appelé DatabasePrepare()

DatabaseBind

Définit la valeur d'un paramètre dans une requête

DatabaseBindArray

Définit un tableau comme valeur de paramètre

DatabaseRead

Se déplace sur l'enregistrement suivant des résultats de la requête

DatabaseReadBind

Moves to the next record and reads data into the structure from it

DatabaseFinalize

Supprime une requête créée avec DatabasePrepare()

DatabaseTransactionBegin

Démarre l'exécution d'une transaction

DatabaseTransactionCommit

Termine l'exécution d'une transaction

DatabaseTransactionRollback

Annule une transaction

DatabaseColumnsCount

Retourne le nombre de colonnes dans une requête

DatabaseColumnName

Retourne le nom d'une colonne par son numéro

DatabaseColumnType

Retourne le type d'une colonne par son numéro

DatabaseColumnSize

Retourne la taille d'une colonne en octets

DatabaseColumnText

Retourne la valeur d'une colonne de type string de l'enregistrement courant

DatabaseColumnInteger

Retourne la valeur d'une colonne de type int de l'enregistrement courant

DatabaseColumnLong

Retourne la valeur d'une colonne de type long de l'enregistrement courant

DatabaseColumnDouble

Retourne la valeur d'une colonne de type double de l'enregistrement courant

DatabaseColumnBlob

Retourne le tableau de caractères d'une colonne de type BLOB de l'enregistrement courant

 

Fonctions statistiques :

  • mode — mode
  • médiane — médiane (50e percentile)
  • centile_25 — 25e percentile
  • percentile_75
  • percentile_90
  • percentile_95
  • percentile_99
  • stddev ou stddev_samp — exemple d'écart type
  • stddev_pop — écart type de la population
  • variance ou var_samp — variance de l'échantillon
  • var_pop — variance de la population

Fonctions mathématiques

  • acos(X) — arc-cosinus en radians
  • acosh(X) — arc-cosinus hyperbolique
  • asin(X) — arc-sinus en radians
  • asinh(X) — arc-sinus hyperbolique
  • atan(X) — arc-tangente en radians
  • atan2(X,Y) — arc-tangente en radians du rapport X/Y
  • atanh(X) — arc-tangente hyperbolique
  • ceil(X) — arrondi à l'entier supérieur
  • ceiling(X) — arrondi à l'entier supérieur
  • cos(X) — cosinus angulaire en radians
  • cosh(X) — cosinus hyperbolique
  • degrees(X) — convertir les radians en angle
  • exp(X) — exposant
  • floor(X) — arrondi à l'entier inférieur
  • ln(X) — logarithme naturel
  • log(B,X) — logarithme à la base indiquée
  • log(X) — logarithme décimal
  • log10(X) — logarithme décimal
  • log2(X) — logarithme en base 2
  • mod(X,Y) — reste de la division
  • pi() — Pi approximatif
  • pow(X,Y) — puissance par la base indiquée
  • power(X,Y) — puissance par la base indiquée
  • radians(X) — convertir l'angle en radians
  • sin(X) — angle sinusoïdal en radians
  • sinh(X) —sinus hyperbolique
  • sqrt(X) — racine carrée
  • tan(X) — angle tangent en radians
  • tanh(X) — tangente hyperbolique
  • trunc(X) — tronquer à l'entier le plus proche de 0

Exemple :

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;