使用数据库

这些数据库函数使用了流行且易于使用的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(parent) as integer) as mean,

  cast(median(parent) as integer) as median,

  mode(parent) as mode,

  percentile_90(parent) as p90,

  percentile_95(parent) as p95,

  percentile_99(parent) as p99

from moz_bookmarks;