使用数据库
这些数据库函数使用了流行且易于使用的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 — 总体方差
数学函数
- 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
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;