MQL5 リファレンスデータベースの操作 

データベースの操作

データベースを操作するための関数は、一般的で使いやすいSQLiteエンジンを使用します。このエンジンの便利な機能は、データベース全体がユーザーPCのハードディスク上の単一のファイルにあることです。

これらの関数を使用すると、簡単なSQL要求を使用して、テーブルの作成、データの追加、変更の実行、サンプリングを簡単に行うことができます。

  • 任意の形式からの取引履歴と相場の受け取り
  • 最適化とテスト結果の保存
  • 他の分析パッケージとのデータの準備および交換
  • MQL5アプリケーションの設定とステータスの保存

クエリでは、統計関数と数学関数を使用できます。

データベースを使用するための関数を使用すると、最も頻繁に繰り返される大きなデータ配列処理操作をSQL要求に置き換えることができるため、多くの場合、複雑なループと比較をプログラミングする代わりにDatabaseExecute/DatabasePrepareは、呼び出すことができます。DatabaseReadBind関数を使用すると、既成の構造体でクエリ結果を簡単に取得できます。この関数では、1回の呼び出しですべてのレコードフィールドを一度に読み取ることができます。

読み取り、書き込み、変更を高速化するために、データベースはDATABASE_OPEN_MEMORYフラグを使用してRAMで開いたり作成したりできますが、このようなデータベースは特定のアプリケーションでのみ使用でき、共有されません。ハードディスク上にあるデータベースを使用する場合、バルクデータの挿入/変更は、DatabaseTransactionBegin/DatabaseTransactionCommit/DatabaseTransactionRollbackを使用してトランザクションにラップする必要があります。これにより、プロセスが何百回も加速されます。

関数の使用をはじめるにあたって、SQLite: MQL5 での SQL データベースのネイティブな処理稿をお読みください。

関数

アクション

DatabaseOpen

指定したファイルでデータベースを開くか作成します

DatabaseClose

データベースを閉じます

DatabaseImport

ファイルからテーブルにデータをインポートします。

DatabaseExport

テーブルまたはSQL要求の実行結果をCSVファイルにエクスポートします。ファイルはUTF-8エンコードで作成されます。

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 – mode
  • median – median (50パーセンタイル)
  • percentile_25 – 25パーセンタイル
  • percentile_75
  • percentile_90
  • percentile_95
  • percentile_99
  • stddev or stddev_samp — 標本の標準偏差
  • stddev_pop — 母集団の標準偏差
  • variance or 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) – 二進対数
  • mod(X,Y) – 除算の余り
  • 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;