記事「MQL5でのデータベースの簡素化(第1回):データベースとSQL入門」についてのディスカッション

 

新しい記事「MQL5でのデータベースの簡素化(第1回):データベースとSQL入門」はパブリッシュされました:

MQL5言語のネイティブ関数を用いたデータベース操作について解説します。テーブルの作成、データの挿入、更新、削除から、データのインポートとエクスポートまで、すべてサンプルコード付きで紹介します。本記事は、データアクセスの内部メカニズムを理解するための確固たる基盤を提供し、MQL5でORMを構築する際の土台となります。

MQL5に関する話題の多くは、インジケーターやエキスパートアドバイザー(EA)、取引戦略、バックテストに集中しがちです。しかし、自動化に真剣に取り組むトレーダーや開発者であれば、やがて「データの永続性」がいかに重要かに気づきます。ここで活躍するのがデータベースです。結果はすでにCSVやTXTファイルに保存しているのに、なぜわざわざデータベースを使うのかと思うかもしれません。その答えは、大量の情報や複雑な処理を扱う際に、データベースが提供する整理、性能、信頼性にあります。

MQL5の文脈では、データベースの利用は一見大げさに思えるかもしれません。結局のところ、この言語は取引や指標、自動実行ロボット向けに設計されています。しかし、大量データや複雑なバックテスト、詳細な注文履歴を扱う戦略では、単純なファイル保存だけではすぐに限界が現れます。こうした状況で、データベースの作成、アクセス、操作方法を理解することは、取引ワークフローを飛躍的に向上させる強力な手段となります。

MQL5でデータベースを学び始めるトレーダーは、ネイティブ関数や個別のサンプル例を多数目にするでしょう。これらを使ってレコードを保存し、取得することは可能ですが、次第に「これらを実プロジェクトで整理して再利用可能にするにはどうすれば良いか?」という課題が浮上します。本連載では、単なるドキュメントの紹介に留まらず、SQLiteの基本機能からスタートし、段階を追って「MQL5ミニORM (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);
      
      //--- 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);
  }
 
mql5用の適切なORMが今とても必要なんだ。ありがたいことに、君のようなクールで重要なライブラリを作ってくれる人たちがいて、僕らの生活を楽にしてくれる。君がこれまでに取り組んできたプロジェクトや 記事はどれも大好きだよ。そのどれもが、僕がmql5で作業する際に抱えていた深刻な悩みを解決してくれたんだ。
 
joaopedrodev データベースを扱う 方法を完全に変えることです。目標は、データベースを開き、リポジトリを作成し、エンティティを操作することが、配列を操作するのと同じくらい自然にできるような、わかりやすく、シンプルで、パワフルなものを実現することです。このシリーズが終わるころには、下の例のように、手動でクエリを一度も書かずにレコードの保存、検索、更新、削除ができるようになるでしょう。これが私がTickORMで切り開く道です。

参考:MQL5のためのORMの実装がこの本で 紹介されています。

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...