我很喜欢读你的技术文章!
在这篇首篇文章中,我仅展示了冰山一角。 TickORM 的潜力远不止于此:其核心理念是彻底改变您在 MQL5中操作数据库 的方式。我们的目标是打造一种直观、简单且强大的解决方案,让打开数据库、创建存储库以及操作实体变得像操作数组一样自然。 到本系列文章结束时,实际使用将类似于下面的示例:无需编写任何手动查询,即可保存、搜索、更新和删除记录。这就是我正在通过 TickORM 铺就的道路。
int OnInit(void) { IDatabaseManager *database = new CDatabaseManager(); if(database.OpenDatabase("trades.sqlite")) { //--- 实例存储库 AccountRepository repo(database); //--- 插入 Account acc; acc.number = 10; repo.save(acc); //--- 全选 Account acc[]; repo.findAll(acc); ArrayPrint(acc); //--- 按 ID 选择 Account acc = repo.findById(1); Print(acc.id); Print(acc.number); //--- 更新 Account acc; acc.id = 1; acc.number = 10; repo.update(acc); //--- 按 ID 删除 repo.deleteById(1); } database.CloseDatabase(); delete database; return(INIT_SUCCEEDED); }
joaopedrodev 在 MQL5中操作数据库 的方式。我们的目标是打造一种直观、简单且强大的解决方案,让打开数据库、创建存储库以及操作实体变得像操作数组一样自然。 到本系列文章结束时,实际使用将类似于下面的示例:无需编写任何手动查询,即可保存、搜索、更新和删除记录。这就是我正在通过 TickORM 铺就的道路。
附注:本书中已 介绍了一种针对 MQL5 的 ORM 实现方案。
MQL5 Book: Advanced language tools / SQLite database / OOP (MQL5) and SQL integration: ORM concept
- www.mql5.com
The use of a database in an MQL program implies that the algorithm is divided into 2 parts: the control part is written in MQL5, and the execution...
新文章 简化MQL5中的数据库操作(第一部分):数据库与SQL简介已发布:
谈及MQL5,大多围绕指标、智能交易系统(EA)、交易策略以及回测展开讨论。但每一位认真做自动化交易的交易者或开发者,在开发到一定阶段后都会意识到,数据持久化十分关键,而数据库正是用来解决该问题的工具。您可能会产生疑惑:“我已经把运行结果保存在CSV或者TXT文本文件里了,何必再用数据库把事情变复杂?” 答案就在于数据库所具备的数据规整性、运行性能与可靠性,在处理海量信息或是复杂业务操作时,这些优势尤为突出。
在MQL5的场景下,刚接触时您会觉得讨论数据库有点小题大做。毕竟这门语言主要面向交易、指标以及自动交易机器人。然而,一旦您的策略需要处理大批量数据、复杂回测或者详尽的订单记录,普通文件这种简单方案很快就会暴露出能力不足。这时学会数据库的创建、访问与修改,会成为改善交易开发流程的有力工具。
刚开始接触MQL5数据库功能的开发者,会看到大量原生函数以及零散的示例代码。用这些函数保存和查询记录已经足够,但很快就会面临疑问:在实际项目当中,如何把这些代码整理成简洁、可复用的形式?本系列文章不止局限于官方文档内容。我们从SQLite基础函数入手,循序渐进,在MQL5中搭建一套**迷你ORM(TickORM)**。设计思路是把底层直接调用的语句封装为架构优良的程序分层,借鉴Java的JDBC与JPA设计思想,并适配MetaTrader软件的运行环境。
本文讲解MQL5环境下数据库与SQL的基础概念。把底层数据库函数封装到类、接口当中,最终完成ORM的开发,为后续文章做准备。
作者:joaopedrodev