使用数据库

这些数据库函数使用了流行且易于使用的SQLite引擎。该引擎的便利之处在于,整个数据库都位于用户PC硬盘上的单个文件中。

这些函数可以方便地创建表格、向表中添加数据、执行更改和使用简单的SQL请求进行采样:

  • 接收任何格式的交易历史和报价,
  • 保存优化和测试结果,
  • 通过其他分析组合准备和交换数据,
  • 存储MQL5应用程序设置和状态。

查询允许使用统计数学函数。

数据库函数可以使您通过SQL请求替换重复率最高的大数据组处理操作,因此常常可以使用DatabaseExecute/DatabasePrepare调用,而不是编写复杂的循环和比较。使用DatabaseReadBind函数,方便地获取现有架构中的查询结果。该函数运行在单个调用中一次性读取所有记录字段。

若要加快读取、编写和更改速度,可以使用DATABASE_OPEN_MEMORY标识在RAM中打开/创建数据库,虽然这样的数据库只适用于特定的应用程序,不可共享。当处理位于硬盘上的数据库时,应该使用DatabaseTransactionBegin/DatabaseTransactionCommit/DatabaseTransactionRollback将批量数据插入/更改封装在交易事务中。这可以使整个过程加快数百倍。

若要开始使用函数,请参阅文章SQLite:本地操作MQL5中的SQL数据库

函数

操作

DatabaseOpen

在指定文件中打开或创建数据库

DatabaseClose

关闭数据库

DatabaseImport

从文件导入数据到表格中

DatabaseExport

将表格或SQL请求执行结果到处到CSV文件

DatabasePrint

在专家日志中打印表格或SQL执行结果

DatabaseTableExists

检查数据库中是否存在表格

DatabaseExecute

执行对指定数据库的请求

DatabasePrepare

创建可使用DatabaseRead()执行的请求句柄

DatabaseReset

重置请求,比如调用DatabasePrepare()之后

DatabaseBind

在请求中设置一个参数值

DatabaseBindArray

将数组设置为参数值

DatabaseRead

作为请求结果,移到下一个条目

DatabaseFinalize

移除在DatabasePrepare()中创建的请求

DatabaseTransactionBegin

开始事务执行

DatabaseTransactionCommit

完成事务执行

DatabaseTransactionRollback

回滚事务

DatabaseColumnsCount

获取请求中的字段数

DatabaseColumnName

按索引获取字段名

DatabaseColumnType

按索引获取字段类型

DatabaseColumnSize

获取字段大小(以字节为单位)

DatabaseColumnText

从当前记录中获取作为字符串的字段值

DatabaseColumnInteger

从当前记录中获取int类型的值

DatabaseColumnLong

从当前记录中获取long类型的值

DatabaseColumnDouble

从当前记录中获取double类型的值

DatabaseColumnBlob

从当前记录中获取作为数组的字段值

 

统计函数:

  • mode – 模式
  • median – median中值(50百分位)
  • percentile_25 – 25百分位
  • percentile_75
  • percentile_90
  • percentile_95
  • percentile_99
  • stddev或stddev_samp ― 采样标准偏差
  • stddev_pop ― 总体标准偏差
  • variance或var_samp ― 采样方差
  • var_pop ― 总体方差

数学函数

例如:

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;