As funções de banco de dados usam o SQLite, um mecanismo popular e fácil de usar. Esse mecanismo é conveniente porque todo o banco de dados fica em um único arquivo no computador do usuário.

Usando essas funções, é fácil criar tabelas, adicionar dados a elas, fazer modificações e fazer seleções com consultas SQL simples:

  • receber histórico de negociação e cotações de qualquer formato,
  • salvar resultados de otimização e de teste,
  • preparar e intercambiar dados com outros pacotes de análise,
  • salvar configurações e status de programas MQL5.

Além disso, você pode usar em consultas funções estatísticas e matemáticas.

As funções para trabalhar com bancos de dados permitem substituir as operações mais repetitivas, quanto ao processamento de grandes matrizes de dados, por consultas SQL, o que permite, em muitos casos, usar chamadas em vez de programar loops e comparações complexas DatabaseExecute/DatabasePrepare. Para obter convenientemente os resultados de consulta em uma estrutura pronta, use a função DatabaseReadBind, que permite ler todos os campos de registro em uma chamada diretamente.

Para acelerar as operações de leitura, gravação e modificação, o banco de dados pode ser aberto/criado no banco de dados online com o sinalizador DATABASE_OPEN_MEMORY, sendo que esse banco de dados estará disponível apenas para esse programa específico e não será compartilhado com ninguém. Ao trabalhar com bancos de dados localizados no disco rígido, é necessário embrulhar grandes inserções/alterações de dados em uma transação usando DatabaseTransactionBegin/DatabaseTransactionCommit/DatabaseTransactionRollback, o que fornece aceleração centenas de vezes.

Para começar a trabalhar com estas funções, basta ler o artigo SQLite: trabalho nativo com bancos de dados SQL em MQL5.

Função

Ação

DatabaseOpen

Abre ou cria um banco de dados no arquivo especificado

DatabaseClose

Fecha um banco de dados

DatabaseImport

Importa para uma tabela dados de um arquivo

DatabaseExport

Exporta uma tabela ou resultado sobre a execução da consulta SQL para um arquivo CSV

DatabasePrint

Exibe uma tabela ou resultado sobre a execução da consulta SQL no log do EA

DatabaseTableExists

Verifica a existência de tabela no banco de dados

DatabaseExecute

Executa uma consulta no banco de dados especificado

DatabasePrepare

Cria um identificador de consulta, que pode ser executado usando DatabaseRead()

DatabaseReset

Redefine a consulta para seu status inicial, como após uma chamada de DatabasePrepare()

DatabaseBind

Define o valor do parâmetro na consulta

DatabaseBindArray

Define a matriz como um valor de parâmetro

DatabaseRead

Realiza o a transição para o próximo registro como resultado de uma consulta

DatabaseReadBind

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

DatabaseFinalize

Exclui uma consulta criada em DatabasePrepare()

DatabaseTransactionBegin

Inicia a execução da transação

DatabaseTransactionCommit

Conclui a execução da transação

DatabaseTransactionRollback

Executa a reversão de transações

DatabaseColumnsCount

Obtém o número de campos na consulta

DatabaseColumnName

Obtém o nome do campo pelo número

DatabaseColumnType

Obter tipo de campo por número

DatabaseColumnSize

Obtém o tamanho do campo em bytes

DatabaseColumnText

Obtém o valor do campo do registro atual como uma string

DatabaseColumnInteger

Obtém um valor int do registro atual

DatabaseColumnLong

Obtém um valor long do registro atual

DatabaseColumnDouble

Obtém um valor double do registro atual

DatabaseColumnBlob

Obtém o valor do campo do registro atual como um array

Funções estatísticas:

  • mode – moda
  • median – mediana (50º percentil)
  • percentile_25 – 25º percentil
  • percentile_75 – 75º percentil
  • percentile_90 – 90º percentil
  • percentile_95 – 95º percentil
  • percentile_99 – 99º percentil
  • stddev или stddev_samp – desvio padrão da amostra
  • stddev_pop – desvio padrão da população
  • variance or var_samp – variância da amostra
  • var_pop – variação da população

Funções matemáticas

Exemplo:

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;