- DatabaseOpen
- DatabaseClose
- DatabaseImport
- DatabaseExport
- DatabasePrint
- DatabaseTableExists
- DatabaseExecute
- DatabasePrepare
- DatabaseReset
- DatabaseBind
- DatabaseBindArray
- DatabaseRead
- DatabaseReadBind
- DatabaseFinalize
- DatabaseTransactionBegin
- DatabaseTransactionCommit
- DatabaseTransactionRollback
- DatabaseColumnsCount
- DatabaseColumnName
- DatabaseColumnType
- DatabaseColumnSize
- DatabaseColumnText
- DatabaseColumnInteger
- DatabaseColumnLong
- DatabaseColumnDouble
- DatabaseColumnBlob
Работа с базами данных
Функции для работы с базами данных используют популярный и простой в работе движок SQLite. Удобством данного движка является то, что вся база данных находится в единственном файле на жестком диске на компьютере пользователя.
С помощью этих функций легко создавать таблицы, добавлять в них данные, производить модификации и делать выборки простыми SQL-запросами:
- получение торговой истории и котировок из любых форматов,
- сохранение результатов оптимизации и тестирования,
- подготовка и обмен данными с другими пакетами анализа,
- хранение настроек и состояния MQL5-программ.
При этом в запросах можно использовать статистические и математические функции.
Функции для работы с базами позволяют заменить наиболее повторяющиеся операции по обработке больших массивов данных на SQL-запросы, что позволит во многих случаях вместо программирования сложных циклов и сравнений использовать вызовы DatabaseExecute/DatabasePrepare. Для удобного получения результатов запроса в готовую структуру используйте функцию DatabaseReadBind, которая позволит прочитать сразу все поля записи за один вызов.
Для ускорения операций чтения, записи и модификации базу данных можно открывать/создавать в оперативной памяти с флагом DATABASE_OPEN_MEMORY, но при этом такая база будет доступна только данной конкретной программе и ни с кем не разделяется. При работе с базами данных, которые находятся на жестком диске, необходимо обертывать массовые вставки/изменения данных в транзакции с помощью DatabaseTransactionBegin/DatabaseTransactionCommit/DatabaseTransactionRollback, что дает ускорение в сотни раз.
Для того чтобы начать работать с данными функциями, достаточно прочитать статью SQLite: нативная работа с базами данных на SQL в MQL5.
Функция |
Действие |
---|---|
Открывает или создаёт базу данных в указанном файле |
|
Закрывает базу данных |
|
Импортирует в таблицу данные из файла |
|
Экспортирует таблицу или результат выполнения SQL-запроса в CSV-файл |
|
Печатает таблицу или результат выполнения SQL-запроса в журнал экспертов |
|
Проверяет наличие таблицы в базе данных |
|
Исполняет запрос к указанной базе данных |
|
Создает хендл запроса, который затем может быть исполнен с помощью DatabaseRead() |
|
Сбрасывает запрос в начальное состояние, как после вызова DatabasePrepare() |
|
Устанавливает значение параметра в запросе |
|
Устанавливает массив в качестве значения параметра |
|
Выполняет переход к следующей записи в результате запроса |
|
Выполняет переход к следующей записи и читает из неё данные в структуру |
|
Удаляет запрос, созданный в DatabasePrepare() |
|
Начинает выполнение транзакции |
|
Завершает выполнение транзакции |
|
Выполняет откат транзакций |
|
Получает количество полей в запросе |
|
Получает имя поля по номеру |
|
Получает тип поля по номеру |
|
Получает размер поля в байтах |
|
Получает из текущей записи значение поля в виде строки |
|
Получает из текущей записи значение типа int |
|
Получает из текущей записи значение типа long |
|
Получает из текущей записи значение типа double |
|
Получает из текущей записи значение поля в виде массива |
- mode — мода
- median — медиана (50-й перцентиль)
- percentile_25 — 25-й перцентиль
- percentile_75 — 75-й перцентиль
- percentile_90 — 90-й перцентиль
- percentile_95 — 95-й перцентиль
- percentile_99 — 99-й перцентиль
- stddev или stddev_samp — стандартное отклонение выборки
- stddev_pop — стандартное отклонение популяции
- variance or var_samp — дисперсия выборки
- var_pop — дисперсия популяции
- acos(X) – арккосинус в радианах
- acosh(X) – арккосинус гиперболический
- asin(X) – арксинус в радианах
- asinh(X) – арксинус гиперболический
- atan(X) – арктангенс в радианах
- atan2(X,Y) – арктангенс в радианах отношения X/Y
- atanh(X) – арктангенс гиперболический
- ceil(X) – округление до целого числа вверх
- ceiling(X) – округление до целого числа вверх
- cos(X) – косинус угла в радианах
- cosh(X) – косинус гиперболический
- degrees(X) – конвертирует радианы в угол
- exp(X) – экспонента
- floor(X) – округление до целого числа вниз
- ln(X) – натуральный логарифм
- log(B,X) – логарифм по указанному основанию
- log(X) – десятичный логарифм
- log10(X) – десятичный логарифм
- log2(X) – логарифм по основанию 2
- mod(X,Y) – остаток от деления
- pi() – приближенное число Pi
- pow(X,Y) – степень по заданному основанию
- power(X,Y) – степень по заданному основанию
- radians(X) – конвертирует угол в радианы
- sin(X) – синус угла в радианах
- sinh(X) – синус гиперболический
- sqrt(X) – квадратный корень
- tan(X) – тангенс угла в радианах
- tanh(X) – тангенс гиперболический
- trunc(X) – усекает до целого числа, наиболее близкого к 0
Пример:
select
|