Разработка торговых стратегий связана с обработкой больших объемов данных. Теперь прямо в MQL5 вы можете работать с базами данных с помощью SQL-запросов на основе SQLite. Важным преимуществом данного движка является то, что вся база данных содержится в единственном файле, который находится на компьютере пользователя.
对于完整的 GROUP BY 操作,普通索引毫无用处——表还是会被全表读取,SCAN ... USING INDEX 执行计划实质上也是全表扫描。 必须让查询中的所有列都包含在索引中,这样执行计划才会变成 SEARCH ... USING COVERING INDEX,从而无需读取表中的行。这样性能才能提升 5 倍。
而索引真正发挥作用的地方,在于每次重绘时控制面板都会执行的按单个符号进行的查询:20个 WHERE SYMBOL=? 查询 AND ENTRY=1 的查询——无索引时耗时 711 毫秒,而使用索引时仅需 208 毫秒。
SQLite:在 MQL5 中原生操作 SQL 数据库
简单查询示例
再次强调:我本人当然使用的是带索引和所需方法的轻量级类,完全不依赖任何数据库,这种方式在资源消耗和性能方面具有明显的优势。
虽然可能不适合学生,但终究只是个“玩具”。毕竟在使用SQLite 之前 ,必须将整个历史数据“翻个遍”,并逐条导入到表中。 这将耗费大量时间。如果非要将其与MQL5结合起来,那么读取订单和交易历史数据也必须直接从表中读取……仅代表个人观点
深入研究了一番(借助AI,Opus 5——搭建了测试环境,生成了50万笔交易的模拟数据,包含20个交易代码和20个交易策略,并进行了性能测试)。
从抽象层面来说:与 MonetDB/e 进行比较应该会很有意思。它和 SQLite 一样是嵌入式的无服务器数据库,但出于多种原因,在处理复杂查询时应该会快得多。当然,前提是数据模型设计合理 :-)
从理论上讲:如果能与MonetDB/e进行比较就很有意思了。它和SQLite一样是嵌入式的无服务器数据库,但出于多种原因,在处理复杂查询时应该快得多。当然,前提是数据结构设计合理 :-)