Обсуждение статьи "Упрощение работы с базами данных в MQL5 (Часть 1): Введение в базы данных и SQL"

 

Опубликована статья Упрощение работы с базами данных в MQL5 (Часть 1): Введение в базы данных и SQL:

Мы рассмотрим, как работать с базами данных в MQL5, используя встроенные функции языка. Мы рассмотрим все аспекты, от создания, вставки, обновления и удаления таблиц до импорта и экспорта данных, и все это с примерами кода. Данный материал служит прочной основой для понимания внутренних механизмов доступа к данным, подготавливая почву для обсуждения ORM (Object-Relational Mapping, объектно-реляционное отображение), где мы создадим его на языке MQL5.

Когда мы говорим об MQL5, большинство разговоров вертится вокруг индикаторов, советников, торговых стратегий и бэктестов. Но в какой-то момент каждый трейдер или разработчик, который серьезно работает с автоматизацией, понимает, что сохранение данных имеет решающее значение. И вот тут-то на помощь приходят базы данных. Вы, возможно, даже подумаете: «Но я уже сохраняю результаты в CSV или TXT файлах, зачем усложнять себе жизнь с помощью базы данных?» Ответ кроется в организации, эффективности и надежности, которые обеспечивает база данных, особенно при работе с большими объемами информации или сложными операциями.

В контексте MQL5 разговоры о базах данных на первый взгляд могут показаться преувеличением. Ведь этот язык сильно ориентирован на торговлю, индикаторы и роботов для автоматического исполнения. Но когда начинаешь работать со стратегиями, которые включают в себя большие объемы данных, сложные бэктесты или подробные записи об ордерах, простота стандартных файлов быстро оказывается недостаточной. Именно здесь понимание того, как создавать базу данных, получать доступ к ней и работать с ней, становится инструментом, способным преобразовать ваш торговый процесс.

Трейдер, начинающий изучать базы данных на MQL5, найдет десятки встроенных функций и автономных примеров. Достаточно сохранять записи и запрашивать их, но вскоре возникает вопрос: *как организовать все это удобным для повторного использования способом в реальных проектах?* В этой серии статей мы выходим за рамки документации. Мы начнём с основных функций SQLite и шаг за шагом перейдём к созданию **мини-ORM на языке MQL5 (TickORM)**. Идея заключается в преобразовании прямых вызовов в хорошо продуманные слои, вдохновленные Java-технологиями JDBC и JPA, но адаптированные к экосистеме MetaTrader.

В этой статье я демонстрирую основы работы с базами данных на языках MQL5 и SQL. Это открывает путь для последующих статей, в которых эти функции будут инкапсулированы в классы, интерфейсы и, наконец, ORM.


Автор: joaopedrodev

 
Мне нравится читать ваши технические статьи!
 

В этой первой статье я показал лишь верхушку айсберга. 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);
      
      //--- Выберите по идентификатору
      Account acc = repo.findById(1);
      Print(acc.id);
      Print(acc.number);
      
      //--- Обновление
      Account acc;
      acc.id = 1;
      acc.number = 10;
      repo.update(acc);
      
      //--- Удаление по идентификатору
      repo.deleteById(1);
     }
   
   database.CloseDatabase();
   delete database;
   return(INIT_SUCCEEDED);
  }
 
Правильная ORM для mql5 сейчас очень нужна. К счастью, у нас есть такие люди, как ты, создающие такие классные важные библиотеки, которые облегчают нам жизнь. Мне нравятся все проекты и статьи, над которыми вы работали до сих пор. Все они решили серьезную проблему, с которой я столкнулся, работая с mql5 для определенных задач.
 
joaopedrodev работы с базами данных на MQL5. Цель - добиться чего-то прямолинейного, простого и мощного, когда открытие базы данных, создание хранилища и работа с сущностями будут так же естественны, как работа с массивами. К концу серии статей использование базы данных будет напоминать приведенный ниже пример, где вы сохраняете, ищете, обновляете и удаляете записи, не написав ни одного ручного запроса. Именно этот путь я прокладываю с помощью TickORM.

К сведению: В книге представлена реализация ORM для MQL5.

MQL5 Book: Advanced language tools / SQLite database / OOP (MQL5) and SQL integration: ORM concept
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...