MetaTrader 5プラットフォームビルド2340: テスターでの口座管理設定とPython統合の拡張

SQLiteデータベースを使用するための新しい機能を追加しました。 以前のプラットフォームアップデートでは、MQiteデータベースから直接SQLiteデータベースを操作するためのサポートを導入しました。主な機能は、MetaEditorユーザーインターフェイスを介して利用可能になりました

21 2月 2020

MetaEditor

  1. SQLiteデータベースを使用するための新しい機能を追加しました。

    以前のプラットフォームアップデートでは、MQiteデータベースから直接SQLiteデータベースを操作するためのサポートを導入しました。主な機能は、MetaEditorユーザーインターフェイスを介して利用可能になりました。

    • データベースの作成と接続
    • テーブルの表示とクイックデータクエリの実行
    • SQLクエリの作成と実行、変更のロールバック

    仕組み
    クイックデータベース作成機能は、MQL5ウィザードから利用できます。最初のテーブルを簡単に作成し、フィールドを定義できます。


    データベースを作成すると、データを管理するためのコマンドを備えた新しいナビゲーターセクションに転送されます。

    データベーステーブルは左側のウィンドウに表示されます。テーブル名をダブルクリックすると、最初の1,000レコードをすばやくクエリできます。このナビゲーター部分では、テーブルを操作するだけでなく、他のデータベースを作成して開くこともできます。

    データベースは、メインエディターウィンドウで管理できます。ここでは、テーブルへの入力、データの検索と選択、SQLクエリの入力、その他の操作の実行ができます。


    MetaTrader 5のデータベース操作の詳細については、「 SQLite: MQL5でのSQLデータベースのネイティブ処理」稿を参照してください。

  2. 多言語プロジェクトのサポートを拡張しました。この更新により、Pythonスクリプトを使用する可能性が広がります。

    • MQL5ウィザードを使用してこのようなスクリプトを作成し、コードに必要なライブラリの依存関係を即座に追加できるようになりました。
    • ナビゲーターには特別なアイコンが追加され、関連する構文がエディターで使用可能になりました。
    • MetaEditorを介してスクリプトを実行すると、Pythonコンソール(stdout、stderr)からのメッセージが[エラー]セクションに表示されます。


    エディターで[コンパイル]をクリックして、スクリプトを実行します。



    Pythonを使用するには、MetaEditorの[設定]->[コンパイラ]セクションでパスを指定することを忘れないでください。MetaTrader 5ライブラリの使用を有効にするには、次のコマンドを使用してインストールします。
    pip install MetaTrader5
    Python統合の詳細については、関連ドキュメントをご覧ください。
  3. ナビゲーターにSQLiteデータベースファイル(*.db;*.sdb;*.sqlite;*.db3;*.s3db;*.sqlite3)の表示を追加しました。
  4. プロジェクトプロパティの保存エラーを修正しました。

MQL5

  1. Python統合を完全に改訂しました。この更新には、多くの新しい関数と新しいコマンドの命名が含まれます。

    新規命名
    既存のコマンドが以下のように名前変更されました。
    MT5Initialize       -> initialize
    MT5Shutdown         -> shutdown
    MT5TerminalInfo     -> terminal_info
    MT5Version          -> version
    MT5CopyRatesFrom    -> copy_rates_from
    MT5CopyRatesFromPos -> copy_rates_from_pos
    MT5CopyRatesRange   -> copy_rates_range
    MT5CopyTicksFrom    -> copy_ticks_from
    MT5CopyTicksRange   -> copy_tick_range

    新規コマンド
    サポートされるコマンドのリストが拡張されました。取引関数を追加し、取引履歴を使用して金融銘柄と現在の口座に関する情報を取得するための関数を追加しました。

    • account_info()は現在の口座に関する情報を受け取ります。これは、AccountInfoIntegerAcountIndoDoubleAccountInfoStringに類似しています。
    • positions_total()はポジション数を受け取ります。これは、PositionsTotalに類似しています。
    • positions_get(symbol, ticket)は、銘柄またはチケットによってポジションを受け取ります。
    • orders_total()は注文数を受け取ります。これは、OrdersTotalに類似しています。
    • orders_get(symbol, ticket)は、銘柄またはチケットによって注文を受け取ります。
    • history_orders_total(from, to)は、指定された履歴期間内の注文数を受け取ります。
    • history_orders_get(from, to, position, ticket)は、指定された過去の時間枠から、チケットまたはポジションによってフィルタリングされた注文を受け取ります。
    • history_deals_total()は履歴内の取引数を受け取ります。これは、HistoryDealsTotalに類似しています。
    • history_deals_get(from, to, position, ticket)指定された過去の時間枠から、チケットまたはポジションによってフィルタリングされた取引を受け取ります。
    • symbol_info(symbol)は金融商品についての情報を受け取ります。これは、SymbolInfoIntegerSymbolInfoDoubleSymbolInfoStringに類似しています。
    • symbol_info_tick(symbol)は、銘柄によって最後のティックを受け取ります。これは、SymbolInfoTickに類似しています。
    • symbol_select(symbol, enable)は[気配値表示]で銘柄を有効/無効にします。これは、SymbolSelectと類似しています。
    • order_check(request)は注文の証拠金を確認します。これは、OrderCheckに類似しています。
    • order_send(request)はサーバに注文を送信します。これは、OrderSendに類似しています。
    • order_calc_margin(action, symbol, volume, price)は注文の証拠金を計算します。これは、OrderCalcMarginに類似しています。
    • order_calc_profit(action, symbol, volume, price_open, price_close)は利益を計算します。これは、OrderCalcProfitに類似しています。

    チャートでのPythonスクリプトの実行
    Pythonスクリプトは、通常のMQL5プログラムと同様に、プラットフォームチャートで直接実行できます。これらのスクリプトには、ナビゲーターで特別なアイコンが付いています。


    スクリプトメッセージは、[ツールボックス]->[エキスパート]セクションの下に表示されます。MetaTrader 5ライブラリがスクリプトで使用されている場合、スクリプトは取引銘柄と口座データを受け取り、取引操作を実行できます。
    <
    Pythonスクリプトは、他のMQL5スクリプトおよびエキスパートアドバイザーと並行して同じチャートで実行できます。実行が中断されたスクリプトを停止するには、チャートから削除します。.

    追加の保護
    サードパーティのPythonライブラリを使用するときに追加の口座保護を有効にするには、ターミナル設定で[外部Python APIによる自動取引を無効にする]オプションを使用できます。


    Pythonスクリプトは、このオプションが無効になっている場合にのみ取引操作を実行できます。

  2. MQL5プログラムの再起動とMQL5プログラムからのカスタム指標の再作成を大幅に加速しました。場合によっては、操作は100倍速く実行されます。
  3. データベースを使用するための新しい関数を追加しいました。

    DatabaseImport
    ファイルのデータをテーブルにインポートします。
    long  DatabaseImport(
       int           database,          // DatabaseOpenで受け取られるデータベースハンドル
       const string  table,             // データ挿入先のテーブル名
       const string  filename,          // データインポート元のファイル名
       uint          flags,             // フラグの組み合わせ
       const string  separator,         // データ区切り記号
       ulong         skip_rows,         // スキップする最初の行の数
       const string  skip_comments      // コメントを定義する文字列
       );

    DatabaseExport
    テーブルまたはSQLクエリ結果をCSVファイルにエクスポートします。ファイルはUTF-8エンコーディングで作成されます。
    long  DatabaseExport( 
       int           database,           // DatabaseOpenで受け取られるデータベースハンドル 
       const string  table_or_sql,       // テーブル名またはSQLクエリ
       const string  filename,           // データエクスポートのCSVファイル名
       uint          flags,              // フラグの組み合わせ
       const string  separator           // CSVファイルのデータ区切り記号
       );

    DatabasePrint
    テーブルまたはSQLクエリの結果をエキスパート操作ログに出力します。
    long  DatabasePrint(
       int           database,          // DatabaseOpenで受け取られるデータベースハンドル 
       const string  table_or_sql,      // テーブルまたはSQLクエリ
       uint          flags              // フラグの組み合わせ
       );

  4. ファイルまたはフォルダを作成するまたは開くためのシステムダイアログを呼び出すFileSelectDialog関数を追加しました。
    int  FileSelectDialog(
       string   caption,              // ウィンドウタイトル
       string   initial_dir,          // 初めのディレクトリ
       string   filter,               // 拡張子フィルタ
       uint     flags,                // フラグの組み合わせ
       string&  filenames[],          // ファイル名の配列
       string   default_filename      // デフォルトファイル名
       );
    この新しい関数により、MQL5プログラムとの効率的なユーザー対話が可能になります。

  5. ENUM_DEAL_PROPERTY_DOUBLE列挙体に新しくDEAL_FEE値を追加しました。これは、取引手数料に使用されます。値は、証券会社によって請求される別の手数料タイプを示します。

テスター

  1. 取引制限、証拠金設定、手数料など、戦略テスト中にカスタム取引口座設定を設定する機能を追加しました。新しい関数は、さまざまな取引条件をモデリングするための拡張機能を提供します。



    共通設定
    このセクションでは、口座に同時に存在できる注文とポジションの最大数を設定できます。さらに、プログラムが取引を許可されていないセッションを構成できます。

    証拠金
    このセクションでは、テストで使用する証拠金予約ルールとポジション勘定システムを設定できます。
    • Risk management — リスク管理モデル: OTCおよび取引所モデル、ネッティングおよびヘッジシステム。詳細についてはヘルプをご覧ください。
    • Margin call level — このレベルに達すると、口座は「マージンコール」状態に切り替わります。
    • Stop out level — このレベルに達すると、すべての注文がキャンセルされ、すべての取引ポジションが決済されます。これらのレベルは、パーセンテージと金額で示すことができます。前者の場合、それらは口座の株式価値として決定されます。[In percent]が選択されている場合、レベルは口座の[証拠金レベル]値として定義されます(資金/証拠金*100)。
    • Unrealized profit — 現在の余剰証拠金の変動利益/損失を考慮します。
      • Do not use unrealized profit/loss — 計算に未決ポジションの利益/損失を含めません。
      • Use unrealized profit/loss — 計算に未決ポジションの利益/損失を含めます。
      • Use unrealized profit — 利益のみを含めます。
      • Use unrealized loss — 損失のみを含めます。
    • Daily fixed profit — 余剰証拠金での顧客の1日の固定利益/損失です。
      • Use daily fixed profit/loss — 余剰証拠金に取引日に受け取った利益と損失を含めます。
      • Use daily fixed loss — 取引日に受け取った損失のみを含めます。日中、得られた利益は特別勘定科目フィールド([Blocked])に蓄積されます。取引日の終わりに、累積利益が解放され(ゼロにされ)、口座残高に追加されます(余剰証拠金に含まれます)。
    • Release fixed profit at the end of day — このオプションは、[Use daily fixed loss]オプションが選択されている場合にのみ使用可能になります。有効にした場合、累積利益は1日の終わりに解放されます(したがって、余剰証拠金に含まれます)。そうでなければ、この利益額はブロックされたままになります。

    手数料
    このセクションでは、すべての取引操作で請求される手数料を管理します。

    • 手数料は、単一レベルと複数レベル、つまり取引量/取引高に関係なく均一である場合と取引量/取引高に依存する場合があります。適切なデータがターミナルに表示されます。
    • 手数料は、取引の執行時にすぐに請求される場合と取引日/月の終わりに請求される場合があります。
    • 手数料は、取引の方向(エントリ、エグジット、両方の操作タイプ)に応じてそれぞれ請求される場合があります。
    • 手数料は、ロットまたは取引ごとに請求される場合があります。
    • 手数料は、金額、パーセンテージ、またはポイントで計算できます。



  2. マーケットスキャナーモードでの作業を最適化および高速化しました。この間、[気配値表示]で利用可能なすべての銘柄に対して複数のテストパスが実行されます。
  3. ピップで利益を計算する際に、取引またはポジションのサイズが考慮されるようになりました。以前は、計算はロットごとにのみ実行されていました。
  4. 最適化結果グラフの制御を改善しました。ズームオプションの最適化グラフにスクロールオプションを追加しました。グラフの点をダブルクリックすると、パステーブルで対応する結果が選択されます。
ドキュメントを更新しました。