MetaTrader 5の何が新しくなったのか

ウェブプラットフォーム、デスクトップ版、モバイル版の更新履歴

26 2月 2021
MetaTrader 5 build 2815: Pythonからの板情報へのアクセス、デバッガーとプロファイラーの改良

ターミナル

  1. Python APIを介して板情報データにアクセスする機能が追加されました。
    3つの新しい関数を使用すると、統計計算や機械学習タスクのデータをすばやく取得できます。これらのデータは、既成の多数のPythonライブラリを使用して実装できます。
    • market_book_add — 指定された銘柄の板情報の変化に関連するイベントを受信するためにMetaTrader5ターミナルをサブスクライブします。
    • market_book_get — 指定された銘柄の板情報レコードを含むタプルをBookInfoから返します。
    • market_book_release — 指定された銘柄の板情報の変更に関連するイベントへのMetaTrader5ターミナルサブスクリプションをキャンセルします。

  2.  プッシュメッセージの最大長が256文字から1024文字に増加し、モバイルデバイス上のMQL5プログラムからより多くの情報を送信できるようになりました。
  3.  F2キーを押すことで呼び出すことができるタスクマネージャーの暫定バージョンを追加しました。
    タスクマネージャを使用すると、プラットフォームで消費されるリソースを監視できます。チャートによって消費されたメモリの量、エキスパートアドバイザーによって使用されたCPUリソース、およびその他のパフォーマンス指標を表示できます。プラットフォームのパフォーマンスが低下した場合、問題を簡単に検出して修正できます。



  4.  サブスクリプションサービスを改善しました。相場が遅れている銘柄には、特別な表示が追加されています。
    • 気配値表示の銘柄は時計アイコンでマークされ、遅延値がツールチップに表示されます。
    • データ遅延通知がチャートに表示されます。



  5.  取引口座に接続していない場合のサブスクリプションリストの表示を修正しました。
  6. メールやニュースレターのリンクを修正しました。すべてのリンクがデフォルトのブラウザで開きます。以前は、リンクはInternet Explorerでのみ開くことができます。
  7. WebRequest関数からIPv6アドレスとCloudflare保護を備えたホストへの接続を修正しました。
  8. VPSサービスの機能と応答性が向上しました。
  9. WineおよびMacOS/Crossoverでの操作が改善されました。これには、M1プロセッサを搭載したmacOS BigSurのバージョンが含まれます。

MQL5

  1. ArrayPrint関数のエラーを修正しました。関数が配列の出力に失敗することがありました。
  2. File*関数によって実行されるファイル操作を最適化しました。ファイルの読み取りおよび書き込み操作ははるかに高速に実行されるようになりました。
  3. 配列が関数パラメータとして使用される場合に、動的配列の2番目、3番目、および4番目の次元のサイズの指定を必要とする制限を削除しました。これにより、コードの再利用と柔軟性が向上します。
    void func(int &arr[ ][ ][ ][ ])
      {
      }
  4.  ArrayBsearch関数の動作を修正しました。この関数は、バイナリ検索中に見つかった要素の誤ったインデックスを返す可能性があります。

MetaEditor

  1. 改良されたデバッガで、より多くの新機能が利用できるようになりました。
    • ArraySetAsSeriesで設定された並べ替えに従って、配列が観測ウィンドウに表示されるようになりました。
    • ローカル静的変数のサポートを追加しました。
    • 指定された配列要素値の表示を修正しました。
    • staticクラスフィールドの処理を修正しました。
    • より正確で信頼性の高いデバッグのためのその他の改善。

  2. Enable optimizations in profiling(プロファイリングで最適化を有効にする)」オプションを追加しました。
    プロファイリングレポートに詳細を含めるために、コード最適化モードを無効にすることができます。最適化を行わない場合のコード速度は数倍遅くなる可能性がありますが、このモードではコードカバレッジが広くなります。最適化コードでは、ボトルネックが不正確になる可能性があることに注意してください。

    「Enable inlining in profiling(プロファイリングでインライン化を有効にする)」を無効にすることで、より穏やかなプロファイリングモードを設定できます。



    最適化管理オプションもプロジェクト設定に追加されました。
    • プロジェクトで最適化が無効になっている場合、新しいオプションは無視されるため、プロファイリング(インライン化操作を含む)では常に最適化が無効になります。
    • プロジェクトで最適化が有効になっている場合、プロファイリングのコンパイル時に新しいオプションが考慮されます。

  3. デバッグおよびプロファイリングプロセスのログを追加しました。環境設定は、操作開始時にログに記録されます。 収集されたデータ統計は、操作停止時にログに記録されます。
    MQL5 profiler    starting 'ExpertMACD.ex5' on history with parameters:
    MQL5 profiler       symbol: 'EURUSD'
    MQL5 profiler       period: 'H1'
    MQL5 profiler       date from: '2021.01.01'
    MQL5 profiler       date to: '2021.02.22'
    MQL5 profiler       ticks mode: 'every tick'
    MQL5 profiler       execution delay: 0 ms
    MQL5 profiler       deposit: 10000
    MQL5 profiler       currency: 'USD'
    MQL5 profiler       leverage: 1:100
    MQL5 profiler       profit in pips: NO
    MQL5 profiler    profile data received (4640 bytes)
    MQL5 profiler    758 total measurements, 0/0 errors, 470 kb of stack memory analyzed
    MQL5 profiler    7782 total function frames found (1929 mql5 code, 342 built-in, 1403 other, 4108 system)

テスター

  1. 高度なテスト設定での非取引時間の指定を修正しました。
ドキュメントを更新しました。
15 1月 2021
MetaTrader 5 build 2755: ポップアップ価格ウィンドウとデバッガーの改良

ターミナル

  1. ポップアップ価格ウィンドウを改訂し、任意の画面サイズで金融銘柄の価格を表示できるようになりました。

    ウィンドウが複数列の表示をサポートするようになり、画面スペースを効率的に利用できるようになりました。表示モードを切り替えるには、ウィンドウのプロパティダイアログを使用します。


    このウィンドウのその他の改善点は次のとおりです。

    • 列選択メニューを追加しました。メニューには、気配値表示で使用できるのと同じ銘柄プロパティがあります。
    • 多数の金融商品の操作を最適化しました。ウィンドウのパフォーマンスは、10商品と1000商品で同等に高くなっています。
    • ツールチップに商品の簡単な情報の表示を追加しました。
    • 価格の上昇と下降を表示するための色設定の適用を修正しました。

  2. 合成板情報のティックチャートに取引の表示を追加しました。

    レベル2価格が提供されていない銘柄には、合成板情報が使用されます。この場合、レベルは、最良の買呼値と売呼値から開始して、価格変更ステップに等しい距離で自動的に構築されます。銘柄の最終取引価格と出来高データが提供されている場合、関連データがティックチャートに表示されるようになりました。情報は円で表示されます。

    • 赤い円は売り取引を示します。
    • 青い円は買い取引を示します。
    • 取引の方向が定義されていない場合、緑色の円が表示されます。

    円が大きいほど、取引高が大きくなります。



  3. オプションボードで「ギリシャ」指標の計算を修正しました。オプションの原資産の最終取引価格がゼロの場合、エラーが発生する可能性があります。
  4. 追加の取引サービスの提供を可能にする新しい「サブスクリプション」サービスの実装が継続されています。最近、依存サブスクリプションの表示を修正しました。このようなサブスクリプションは、バンドルされたサービスに使用されます。
  5. Wineでのプラットフォーム操作を改善しました。

MQL5

  1. マウスの右ボタンと中ボタンが離されたときにChartEventイベントを生成するようにしました。このイベントは、グラフィカルパネルを作成するときに利用できます。イベントを有効にするには、CHART_CONTEXT_MENUプロパティを使用してチャートのコンテキストメニューを無効にします。
  2. Sleep関数の待機時間に重大なエラーが発生するバグを修正しました。

MetaEditor

  1. デバッガーのグローバルアップデートを開始しました。観測式のウィンドウが大幅に改善されました。配列とオブジェクトのコンテンツをドロップダウンリストとして表示したり、ポインタ値を表示したりできるようになりました。



    配列またはオブジェクトを表示するには、観測ウィンドウでダブルクリックします。

  2. 一部のプロジェクトを開くときのフリーズを修正しました。

ドキュメントが更新されました。
26 11月 2020
MetaTrader 5 build 2715: 全体的な改善

ターミナル

  1. オプションボードを使用するとプラットフォームがフリーズする問題を修正しました。フリーズは、取引商品の設定で指定されたゼロティックサイズが原因である可能性があります。
  2. HiDPIディスプレイのUI表示エラーを修正しました。

MQL5

  1. StringToTime関数による文字列から時刻への変換を修正しました。時刻を「yyyymmdd [hhmiss]」と指定するとエラーになる場合がありました。
  2. 動的配列を含むオブジェクトの暗黙的なコピー演算子の操作を修正しました。この操作により、宛先オブジェクトのサイズがコピーされたオブジェクトのサイズに縮小されるようになりました。
    struct MyStruct
    {
      string Array[];
    };
    
    void OnStart()
    {
      MyStruct a1,a2;
      ArrayResize(a1.Array,3);
      ArrayResize(a2.Array,1);
      a1=a2;
    }
    以前は、関数呼び出し後の「a1」配列サイズは3でした。サイズは1になります。

MetaTester

  1. MQL5 クラウドネットワークテストエージェントの評価計算アルゴリズムを更新しました。評価がより正確に決定されるようになり、変更頻度が少なくなりました。

ドキュメントが更新されました。
12 11月 2020
MetaTrader 5 build 2690:MetaEditorの改善

ターミナル

  1. 合成板情報機能の表示を修正しました。以前は、この機能は一部の銘柄では使用できませんでした。

    合成板情報は、レベル2価格が提供されていない銘柄に使用されます。この場合、レベルは、最良の買/売呼び値から開始して価格変更ステップに等しい距離で自動的に構築されます。これは、注文を迅速かつ最大限に明確に発注、変更、削除するための便利なツールです。



MQL5

  1. SymbolInfoTick関数を使用して、MQL5プログラムから最終価格へのアクセスを最適化し、大幅に高速化しました。
  2. ダイアログボックスからの一目均衡表指標パラメータのリセットを修正しました。




  3. 取引商品の履歴が利用できない場合に発生するCopy*関数のフリーズを修正しました。
  4. コードプロファイラーの全体的な更新をさらに改善しました。ビルド2650で提示されたイノベーションに加えて、次の改善が実装されています。

    • データ表示の改善
    • レポートで使用される列名が短くなりました
    • プロファイリングレポートをファイルに保存する機能
    • レポート内の関数の行番号を含むツールチップの表示が追加されました



MetaEditor

  1. クリップボードの追跡を無効にし、クリップボードの履歴をクリアする機能が追加されました。

    クリップボード追跡機能は、最近使用したデータにすばやくアクセスできるようにすることで、ソースコードの使いやすさを向上させます。任意のソースコード位置でAlt + Vを押し、メニューから以前にコピーした行のいずれかを選択すると、その行が選択した位置に挿入されます。

    適切なツールバーコマンドまたはエディター設定を使用して、追跡を有効/無効にします。



  2.  プログラムのデバッグ中にいくつかの観測された式の計算を修正しました。

Tester

  1. ストラテジーテスターのフレーム受信モードで実行されているエキスパートアドバイザーの取引が禁止されました。
  2. ストラテジーテスターでの最適化結果のインポートを修正しました。エラーが発生すると、時間枠の値が正しくインポートされない可能性がありました。

ドキュメントが更新されました。


9 10月 2020
MetaTrader 5プラットフォームビルド2650: バックグラウンドチャートの読み込みとMQL5コードプロファイラーの改善

ターミナル

  1. ターミナル: [オプション]タブに、[ポジションと注文のチャートデータをプリロード]というタイトルの新しい設定があります。
    トラフィックを節約するために、銘柄の価格履歴は関連データが要求されたとき(例: 価格チャートが開かれたとき、テストが開始されたとき)にのみダウンロードされます。ただし、これはアクティブに使用される銘柄にとって常に便利であるとは限りません。この新しいオプションを有効にすると、ポジションまたは指値注文がある銘柄のチャートはバックグラウンドモードで更新されます。したがって、チャートを開いた後、データがダウンロードされるのを待つ必要はなく、関連するデータをすぐに分析できるようになります。




  2. 週末後の日足(バー)の生成を修正しました。
  3. チャートの更新を修正しました。更新された価格データを追加ダウンロードした後、チャートが更新されない場合がありました。
  4. アカウント取引履歴キャッシュの更新を最適化しました。最適化により、History*関数を使用する際のデータ遅延を減らすことができます。
  5. 取引履歴をポジションとして表示するときのコメント列の表示を修正しました。
  6. シグナル購読更新ボタンの表示を修正しました。

MQL5

  1. コードプロファイラーの全体的な更新をさらに改善しました。ビルド2615で提示されたイノベーションに加えて、次の機能が実装されています。
    新しいパラメータの追加
    新しいプロファイラーでのサンプリング方法の使用法は以前に発表しました。プロファイラーは、MQLプログラム操作で一時停止(1秒あたり約1000回)し、特定のコードセグメントで実行された一時停止の数に関する統計を収集します。これには、合計コード操作時間における各関数のシェアを決定するための呼び出しスタックの分析も含まれます。プロファイリング後、ユーザーは、操作が一時停止された回数と、各関数が呼び出しスタックに表示された回数に関する統計を受け取ります。

    • 合計CPU[単位、%] — 関数が呼び出しスタックに出現した回数。<br6>
    • 自己CPU[単位、%] —指定された機能内で直接発生した「一時停止」の数。この変数は、ボトルネックを特定する上で非常に重要です。統計によると、より多くのプロセッサ時間が必要な場合、一時停止がより頻繁に発生します。


    プロファイリング中に関数のインライン化を無効にする機能を追加しました。
    MQLプログラムのコンパイル中に、関数はインライン化されます。つまり、関数コードは関数呼び出し位置に直接追加されます。これにより、パフォーマンスが大幅に向上します。ただし、この手順では、関数のプロファイリングが困難になります。「純」関数に関するレポートを取得するために、MetaEditor設定でインライン化を無効にすることができます。




    レポートデザインの更新
    プロファイリングレポートとソースコードウィンドウでのプロファイリング情報の表示を再設計しました。近代化されたデザインは、VisualStudioユーザにとってはより馴染み深いものになります。




  2. CopyTicksRange関数の動作を修正しました。関数が不完全なデータを返す場合がありました。
  3. 新しいエラーコード「TRADE_RETCODE_HEDGE_PROHIBITED — ヘッジポジションが禁止されているため、注文を出すことはできません。」口座の両建てが無効になっていて、同じ銘柄に対してすでに反対の注文またはポジションがある場合に取引操作を実行しようとすると、エラーが返されます。
  4. 指標のデバッグ時にMessageBoxを呼び出す能力を削除しました。MessageBoxは、ユーザの応答を待っている間、スレッドの実行をずっと中断するため、指標から呼び出すことはできません。
  5. SymbolSelect関数を使用して気配値表示への取引商品の追加を最適化し、大幅に高速化しました。
  6. 固定サイズの配列のArrayInsert関数の動作を修正しました。これで、動作はドキュメントの説明に対応します。要素が挿入されても、宛先配列のサイズは変更されず、挿入位置の右側の要素は右にシフトされます(最後の「count」要素は「 ドロップオフ」されます)。要素はソースから解放されたスペースにコピーされます。

テスター

  1. テスト中のカスタム取引条件設定の操作を修正しました。 設定ダイアログが改訂されました。

    • カスタムコミッションの計算を修正しました。コミッションを有効にするには、パス全体ではなく銘柄名を指定するだけで十分です。
    • より効率的な操作のためにタブを再配置しました。
    • ダイアログの名前を変更し、カスタム設定を有効にするオプションを変更しました。
    • 設定テーブルの列幅を最適化しました。
    • [カスタム設定を使用]オプションを無効にすると、ダイアログ内の他のすべての設定が無効になります。以前は、設定は編集可能なままであり、テスト中に設定が適用されるとユーザに誤解される可能性がありました。




  2. チケットによる取引履歴からの注文の受信に関連する時折のエラーを修正しました。

MetaEditor

  1. コード編集ウィンドウに配色プリセット(ライト(デフォルト)、ダーク、青)を追加しました。エディタービューを手動で構成しなくても、エディターをカスタマイズできます。

    さらに、関数のツールチップの境界線の色をカスタマイズできるようになりました。



     
  2. ツールバーのすべてのアイコンが更新され、HiDPIモニターをサポートするようになりました。

ドキュメントが更新されました。


17 9月 2020
MetaTrader 5 build 2615:ストラテジーテスターでのファンダメンタル分析と複雑な基準

ターミナル

  1. ファンダメンタル分析機能を拡張しました。
    銘柄をより正確に分類するために、取引商品に新しいプロパティを追加しました。
    • Sector — エネルギー、金融、ヘルスケアなど、資産が属する経済部門
    • Industry — スポーツウェア、アクセサリ、自動車製造、レストラン業など、資産が属する産業タイプ
    • Country — 証券取引所で株が取引されている会社の国
    これらのプロパティに基づいて、銘柄を使用した効率的な操作を可能にする個別のシステムが気配値表示に実装されました。メニューからカテゴリを選択すると、利用可能なすべての商品がリストに追加され、詳細に分析できます。



    関連するプロパティが契約仕様に追加されました。



    さらに、取引銘柄の基本データをプラットフォームから直接開くことができるようになりました。気配値表示のコンテキストメニューに大手アグリゲータへのリンクが追加されました。



    拡張データの可用性はブローカーによって制御されますが、当社ではデフォルトで最大数の商品の詳細情報が利用できるようにしました。ブローカーがサーバを新しいバージョンに更新するとすぐに、適切な国、部門、業界のデータがプラットフォームに表示されるようになります。
  2. シグナルおよびマーケットショーケースを改善しました。左パネルにレンタルボタンとサブスクリプションボタンが追加されています。



    セクションの設計に関するさらなる改善を行いました。ボタンの色がより明るくなり、MQL5ログインボタンはより大きくなっています。

  3. ストップロスとテイクプロフィットチャートレベルの潜在的な利益/損失計算を修正しました。



  4. 合成商品の計算におけるエラーを修正しました。このエラーにより、起動時にプラットフォームがフリーズすることがありました。
  5. データウィンドウでの組み込みフラクタル指標値の表示を修正しました。
  6. HiDPIモニターに対応するように、プラットフォームツールバーのすべてのアイコンが更新されました。
  7. コピーされた取引シグナルのポジションボリューム調整を修正しました。誤って適用されたストップレベルが原因で調整操作が失敗し、「無効なストップ」エラーが発生する場合がありました。
  8. サーバーでの関連する変更後の価格履歴の再構築を最適化しました。
  9. チャートでの取引レベルのツールチップの表示を修正しました。場合によっては、取引レベルの表示が無効になっていても、ツールチップがチャートに表示されていました。
  10. [ツールボックス/取引]セクションでの注文とポジションのコンテキストメニューの[チャートで表示/自動アップデート]オプションを修正しました。このオプションをオフにすると、開いているすべてのチャートで取引履歴の表示が無効になります。

MQL5

  1. MathClassify関数を追加しました。この関数は、浮動小数点数の型を判別し、新しいENUM_FP_CLASS列挙からの値として結果を返します。
    ENUM_FP_CLASS  MathClassify(
       double  value      // real number
       );
    列挙には次の値が含まれます。
    • FP_SUBNORMAL — 表現可能な最小の正規数DBL_MIN(2.2250738585072014e-308)よりもゼロに近い非正規数
    • FP_NORMAL — 2.2250738585072014e-308~1.7976931348623158e+308の範囲にある正規数
    • FP_ZERO — 正または負のゼロ
    • FP_INFINITE — 適切な型で表すことができない数、正または負の無限大
    • FP_NAN - 数でない

    次のコードを使用して、浮動小数点数の有効性を確認します。
    if(MathClassify(value)>FP_ZERO)
      {
       Print("value is not a valid number");
      }
  2. SymbolInfoString関数を使用して取得できる銘柄プロパティを追加しました。

    • SYMBOL_COUNTRY — 証券取引所で株が取引されている会社の国
    • SYMBOL_SECTOR_NAME — エネルギー、金融、ヘルスケアなど、資産が属する経済部門
    • SYMBOL_INDUSTRY_NAME — スポーツウェア、アクセサリ、自動車製造、レストラン業など、資産が属する産業
    プロパティは文字列として返されます。

    商品が属する部門および業界は、列挙値として取得できます。これは、SymbolInfoInteger関数を使用して次のプロパティをリクエストすることで実行できます。
    • SYMBOL_SECTOR
    • SYMBOL_INDUSTRY

    これらのプロパティを操作するために、ENUM_SYMBOL_SECTORおよびENUM_SYMBOL_INDUSTRY列挙が追加されました。

  3. 新しいメモリ管理メカニズムがMQL5プログラムに実装されました。最大3倍のメモリ割り当てが可能になり、潜在的なメモリアクセスエラーが回避されます。
  4. History*関数を介したアカウントティック履歴による操作を最適化および加速しました。
  5. OnDeinitエントリポイントからのWebRequest呼び出しを修正しました。以前のバージョンでは、エキスパートアドバイザーが停止した場合の関数呼び出しを実装できませんでした。
  6. サービスからのWebRequest関数呼び出しを修正しました。以前は、サービスの再起動後に関数呼び出しが失敗することがありました。
  7. OpenCLを使用する場合のデバイスでのdouble型サポートに対するチェックを追加しました。float型は丸めが過度であるため、金融計算に使用できません。したがって、プラットフォームでは、計算に対して明示的にdouble型のサポートが必要です。double型がサポートされていない場合、適切なメッセージ(「device '<name>' does not support type 'double'」)がプラットフォームログに書き込まれます。以前は、このような場合に表示されるエラーメッセージは一般的なものでした。
  8. ACCOUNT_EQUITYおよびACCOUNT_BALANCEパラメータを使用したAccountInfoDouble関数の実行を大幅に高速化しました。
  9. ChartApplyTemplate関数を使用した、テンプレートのチャートへの適用を修正しました。
  10. CHART_BRING_TO_TOPパラメータを使用したChartSetInteger関数呼び出しを修正しました。
  11. 新しいConjugateメソッドが組み込みAlglibライブラリに追加されました。このメソッドにより、共役複素数の計算が可能になります。ライブラリはMQL5\Include\Math\Alglibにあります。
  12. コードプロファイラを完全に改訂しました。新しいプロファイラは、より高い精度と速度で動作します。
    • 分析は、プログラムのリリースバージョンのコンパイルと同様に最適化されたコードに基づいています。これにより、プログラムの実行中にまったく同じコードが使用されるため、コード実行速度をより正確な決定できます。
    • 新しいプロファイラは、「サンプリング」プロファイリング方式を使用します。この軽量で正確な方法では、コールスタックデータを収集して定期的にパフォーマンスを計算することにより、アプリケーションのパフォーマンス統計を収集します。
    • 以前のバージョンとは異なり、新しいプロファイラーは分析対象のコードに変更を加えません。以前に使用されたInstrumentation(計装)法では、関数の速度を測定するために使用された特定の作成物をコードに追加していました。これは、最終的なコード速度に影響を与える可能性があります。
    プロファイラの開発は継続され、今後のプラットフォームリリースでは、さらに改善が行われる予定です。

テスター

  1. MQL5クラウドネットワークでの操作を最適化しました。エージェントでのエキスパートアドバイザーの読み込みを修正しました。
  2. 新しい最適化基準「Complex Criterion max」を追加しました。これは、テストパス品質の不可欠かつ複雑な尺度です。複数のパラメータが測定されます。
    • 取引数
    • ドローダウン
    • 回収係数
    • 予想されるペイオフ
    • シャープレシオ

    1つのパラメータ(例: 利益)の最高値は、複雑な分析の観点からは常に最良の選択肢であるとは限りません。最良のパスは複雑な基準(まず取引数、次に期待されるペイオフ、回収係数など)によって徐々に選択されます。新しいオプションでは、すべてのパラメータに従って最適な最適化パスを受け取ることができます。さらに、最高の利益など、必要なパラメータに基づいて最適なパスを選択できます。

    ストラテジーテスターの設定で新しい基準を選択し、最適化を開始します。



    「Complex Criterion max」値は、最適化結果の別の[結果]タブに表示されます。パスはこの列で並び替えできます。新しい基準では、色分けによって最適なパスが視覚的に強調されます。20未満の値は赤で強調表示され、80を超える値は濃い緑色で表示されます。



  3. ストラテジーテスターでカスタム手数料の計算を修正しました。

MetaEditor

  1. スマートコード管理機能(IntelliSense)のグローバルな改訂を開始しました。
    • ヒントに、名前に加えて完全な関数シグネチャが表示されるようになりました。
    • ヒントのフォントがMetaEditor設定に従って設定されるようになりました。
    今後のプラットフォームリリースでは、さらに改善が行われる予定です。
ドキュメントを更新しました。

24 7月 2020
MetaTrader 5 build 2560: 組み込み学習システムの改善

ターミナル

  1. 以前のプラットフォームアップデートでは、完全に改訂された学習システムを提示しました。最新バージョンでは、さらに改善が行われています。
    • プログレスバーのアイコンがより見やすくなりました
    • ヒントのテキストを修正しました
    • 学習進捗の計算が修正されました
    プラットフォームの機能を最大限に活用するには、すべてのレッスンを完了してください。




  2. 大きなティックストリームの処理(毎分数万を超えるティック)を最適化し、大幅に高速化しました。
  3. 前回のセッションの終値に対する価格変化の計算におけるエラーを修正しました。この変数を表示するには、[気配値表示]のコンテキストメニューの[Daily Change]列を有効にします。

MQL5

  1. ChartGetInteger関数を介した数値チャートプロパティへのアクセスを最適化および高速化しました。
  2. iCustom関数を介してMQL5プログラムからリクエストされた場合のカスタム指標検索を修正しました。

MetaEditor

  1. プロジェクトでのC/C++プログラムのコンパイルを追加しました。

テスター

  1. MQL5クラウドネットワークの操作を大幅に最適化しました。エージェントの検索効率が向上したため、ネットワークはタスクを分散し、計算結果をより速く返すことができます。

ドキュメントを更新しました。

10 7月 2020
MetaTrader 5 build 2530: 気配値表示の並び替えと最適化結果の詳細操作

ターミナル

  1.  気配値表示ウィンドウに並べ替えオプションを追加しました。
    • 列名をクリックして、銘柄名、終値、1日の変化などの変数の必要なデータでリストを並べ替えます。
    • 新しいメニューには、最もよく使われる並べ替えオプションを備えています。1日の銘柄価格の変化(上昇と下降)の大きさによる並び替えは、取引所商品を取引するときに役立ちます。



  2.  組み込み学習システムを再設計および改善しました。
    すべてのインタラクティブなヒントはさまざまなカテゴリにグループ化されており、ナビゲーションが容易になっています。カテゴリごとに表示されたヒントと残りのヒントの数が表示されます。



    すべてのヒントには、トレーニングを完了するためにユーザーが実行すべき主要なアクションを示すチェックリストが提供されます。

    学習システムの設計を修正し、全体の進捗状況の計算におけるエラーを修正しました。

  3. 銘柄の前のセッション終了時間と現在のセッション開始時間の自動計算を追加しました。適切なデータがブローカーから直接提供されない場合、ターミナルはセッションの最初と最後のクオートに基づいて値を計算します。関連情報は[気配値表示]ウィンドウに表示できます([銘柄]セクションで適切な列を有効にするか、[詳細]セクションに移動する)。



  4. ポジションへの価格の適用を最適化および高速化しました。新しいティックがターミナルに到着すると、価格、利益、証拠金の要件がより速く更新されます。
  5. 組み込みストキャスティクスの計算を修正しました。チャートに表示されるバーの数が限られている場合、エラーが発生する可能性があります。

MQL5

  1. 取引口座プロパティへのアクセスを提供するAccountInfo*関数を最適化して高速化しました。
  2. ChartGetInteger関数を介した数値チャートプロパティへのアクセスを最適化および高速化しました。

MetaEditor

  1. MQL5ストレージでの効率的な操作のために、次のコンテキストメニューコマンドがコード編集タブに追加されました。
    • ファイルの作業コピーを現在のリビジョンと比較
    • 変更を元に戻す
    • ファイルの変更履歴を表示


  2. 一致する括弧の強調表示を変更しました。強調表示は背景ではなく括弧に適用されます。強調表示はデフォルトで無効になっており、エディタ設定で有効にできます。


  3. 検索機能と置換機能を改善しました。
    • ファイル内のテキストを選択してから検索ボックスを表示すると、テキストが[検索]フィールドに自動的に貼り付けられます。テキストが選択されていない場合、クリップボードのテキストが[検索]フィールドに貼り付けられます。クリップボードが空の場合、検索ボックスのフォーカスは[検索]フィールドに設定されます。
    • 同様の動作は、テキストが[置換]フィールドに挿入される置換ウィンドウにも実装されています。
    • 検索と置換の結果が、以前に使用されていた個別のダイアログボックスではなく、ログに表示されるようになりました。[ツールボックス]ウィンドウが有効になっている場合、[操作ログ]タブが自動的に選択されるため、余分なウィンドウ操作がいりません。

  4. MQL5ストレージ使用時のファイル比較ウィンドウでの検索を修正しました。
  5. #includeディレクティブを介して現在のファイルに関連付けられているファイルを検索および置換する可能性を追加しました。
    新しいオプションにより、複数のファイルで構成されるプロジェクトでより高速な操作が可能になります。例えば、すべてのファイルのテキストを置き換える場合、エディタが#includeディレクティブを介してディレクトリを自動的に検出するため、手動で指定する必要がありません。



テスター

  1. 残高とその他の2つの変数を含む最適化基準を改訂しました。基準では2番目の変数のみが考慮され、残高は無視されるようになりました。新しい最適化基準では分析が容易になります。

    • 残高+最大収益性->最大収益性
    • 残高+最大予想ペイオフ->最大予想ペイオフ
    • 残高+最小ドローダウン->最小ドローダウン
    • 残高+最大回復係数->最大回復係数
    • 残高+最大シャープレシオ->最大シャープレシオ



  2. [最適化パラメータ]サブメニューに、最適化結果を含むテーブル内のすべての入力列をすばやく表示または非表示にするコマンドを追加しました。



  3. より便利な視覚分析のために、最適化結果の表とグラフに色を追加しました。
    グラフは、最適化基準の値に応じて、緑から赤のグラデーションで色分けされます。表には次の色が使用されています。
    • 残高: 初期入金を上回る値は青色、下回る値は赤色で表示されます。
    • 利益: ゼロを上回る値は青色、下回る値は赤色で表示されます。
    • 期待されるペイオフ: ゼロを上回る値は青色、下回る値は赤色で表示されます。
    • ドローダウン: 緑(0~5%)から赤(30%以上)。
    • シャープレシオ: 緑(2を上回る)から赤(0未満)。
    • 回復係数: 緑(2を上回る)から赤(1未満)。



  4. 最適化結果テーブルにフィルターを追加しました。フィルターを使用して、失敗したパスをリストから非表示にします。
    • 取引なしパス
    • 損失を生むパス
    • ドローダウンが50%を超えるパス
    • 回復係数が1未満のパス
    • シャープレシオが0.5未満のパス



  5. MQL5クラウドネットワークの作業を最適化しました。同じエキスパートアドバイザーに対して最適化が開始されると、ネットワークは、以前の最適化パスで使用されたものと同じテストエージェントを使用しようとします。これは、取引履歴を含む必要な市場環境がそのようなエージェントですでに利用可能であるためです。

ドキュメントを更新しました。
5 6月 2020
MetaTrader 5 build 2485: iCustomの改善とMQL5全体の最適化

ターミナル

  1. カスタム金融商品でのバー履歴の編集を最適化し大幅に高速化しました。この改善はCustomRatesUpdate関数にも関係しています。
  2. カスタム銘柄設定のJSONファイルへのエクスポートを修正しました。
  3. クラッシュログで報告されたエラーを修正しました。

MQL5

  1. このバージョンでは、iCustomを介したカスタム指標の読み込みアルゴリズムが変更されています。

    カスタム指標名の前にバックスラッシュ(\)が示されている場合、EXL指標ファイルはMQL5ルートフォルダーに対して相対的に検索されます。例えば、iCustom(Symbol(), Period(), "\FirstIndicator"...)が呼び出された場合、指標はMQL5\FirstIndicator.ex5として読み込まれます。このパスでファイルが見つからない場合、エラー4802 (ERR_INDICATOR_CANNOT_CREATE)が返されます。

    パスがバックスラッシュ(\)で始まらない場合、指標は次の一連のアクションに基づいて検索および読み込みされます。

    • EX5ファイルが、呼び出し元プログラムのEX5と同じフォルダーで検索されます。例えば、CrossMA.EX5エキスパートアドバイザーがMQL5\Experts\MyExpertsにあって、呼び出しが「iCustom(Symbol(), Period(), "SecondIndicator"...)」だとします。この場合、指標はMQL5\Experts\MyExperts\SecondIndicator.ex5で検索されます。
    • 指標が見つからない場合、指標ルートディレクトリMQL5\Indicatorsに相対した検索が実行され、MQL5\Indicators\SecondIndicator.ex5ファイルが検索されます。指標が見つからない場合、関数はINVALID_HANDLEを返し、エラー4802(ERR_INDICATOR_CANNOT_CREATE)が発生します。

    指標パスがMyIndicators\ThirdIndicatorなどのサブディレクトリに設定されている場合、検索は以下の呼び出し側プログラムのフォルダー(エキスパートアドバイザーはMQL5\Experts\MyExpertsフォルダーにある)から開始されます: MQL5\Experts\MyExperts\MyIndicators\ThirdIndicator.ex5。指標が見つからない場合、MQL5\Indicators\MyIndicators\ThirdIndicator.ex5が検索されます。呼び出しでは、パス区切り文字を二重のバックスラッシュ(\\)として指定する必要があります。例えば「iCustom(Symbol(), Period(), "MyIndicators\\ThirdIndicator"...)」です。

    また、iCustomを介したカスタム指標の呼び出しがプログラムコードで見つかった場合、コンパイラは、「#property tester_indicator XXX」ディレクティブが指定されていなければ、暗黙的に追加します。
  2.  HistorySelect関数を最適化し、大幅に高速化しました。これにより、取引や注文の履歴をリクエストできます。
  3. MQL5: CopyTicksRange関数によるティックリクエストで時々発生するエラーを修正しました。エラーにより、範囲の開始時刻が指定された時刻ではなく、その日の始めに設定されていました。
  4. Alertによるアラート表示を最適化し、大幅に高速化しました。
  5. 銘柄の最後のティック時間(ミリ秒)を表す新しいプロパティSYMBOL_TIME_MSCを追加しました。このプロパティはSymbolInfoInteger関数で取得できます。
29 5月 2020
MetaTrader 5 build 2470

ターミナル

  1.  名前に「-」、「=」、「_」、「+」を含む金融銘柄を気配値表示に追加できなかったバグを修正しました。

MQL5

  1. MQL5標準ライブラリのコードフォーマットを最適化および改善しました。

MetaEditor

  1. 「\ n」および「\ r」行末文字による拡張検索を修正しました。

ドキュメントを更新しました。
22 5月 2020
MetaTrader 5プラットフォームビルド2450: サブスクリプションサービス、UIの改善、MetaEditor機能の変更

ターミナル

  1.  新しいサブスクリプションサービスをリリースしました。サブスクリプションは、取引を支援する追加のサービスを提供します。たとえば、有名なプロバイダーからの高品質な市場データに登録し、受信したデータを分析して、新しい取引戦略を開発できます。必要に応じて、取引の基本の学習やプラットフォームの使用スキルの習得に役立つパーソナルマネージャーサービスをリクエストできます。.

    このサービスは現在開発中で、次のバージョンで使用できるようになります。

    仕組み
    ナビゲータに新しい[サブスクリプション]セクションが追加されました。利用可能なすべてのサービスがこのセクションに表示されます。サービスのリストはブローカー側で設定されるため、接続しているサーバーによって異なります。サブスクリプションは、簡単に閲覧できるようにカテゴリに分かれています。


    サービスを選択して、詳細な説明を表示します。次に、[Subscribe]をクリックします。アクティブなサブスクリプションはすべて別のセクションに表示されます。



    市場データを購読すると、[気配値表示]で適切な取引商品が選択できるようになります。それらは通常の銘柄として使用できます。[気配値表示]で相場を表示し、チャートを開き、オブジェクトと指標を使用して分析し、ストラテジーテスターでエキスパートアドバイザーを実行します。これらの銘柄の取引操作はサポートされていません。

    購読の支払い方法
    取引口座の資金を使用してサービスの料金を支払うことができます。支払いはプラットフォームから直接実行できるため、他のウェブサイトにアクセスする必要はありません。

    まもなく、MetaQuotes-Demoに接続して市場データのサブスクリプションを購入する可能性が追加されます。
    世界中のさまざまな取引所からの市場データのサブスクリプションを設定する予定です。数回クリックするだけで、ナスダック、CME、NYSE、BOVESPA、その他の取引所からリアルタイムの相場を取得することができます。マーケット、シグナル、ホスティングの購入と同様に、MQL5.communityアカウントを使用してサブスクリプションの支払いを行うことができます。
  2.  チャート設定に新しい[ティッカーを表示]オプションを追加しました。このオプションは、取引銘柄名、時間枠、およびカスタムコメントを含む行を表示/非表示にします。




  3.  チャート設定に新しい[取引履歴を表示]オプションを追加しました。チャートに市場のエントリとエグジットを表示する機能は以前のバージョンで利用可能でしたが、[ツールボックス]\[履歴]セクションから管理されていました。新しいオプションにより、履歴表示のより快適な設定が可能になります。一度にすべてのチャートに対して設定することも、目的のチャートに対して個別に設定することもできます。




    さらに、チャートのコンテキストメニューを使用して、取引履歴と取引レベルの表示をすばやく有効にできます。



  4. チャート設定に新しい「Color on White」スキームを追加しました。



  5. ポジションと注文のコンテキストメニューに新しいコマンドが追加され、関連する銘柄の[板情報]とチャートをすばやく開くことができるようになりました。





  6. チャートフレームの強調表示を追加しました。これは、ターミナルで複数のチャートが開いているときに、目的の銘柄チャートを見つけるのに役立ちます。[気配値表示]の銘柄、取引または履歴セクションの注文またはポジションライン、またはアラートを選択すると、適切な銘柄チャートのフレームが3回点滅します。



  7.  チャートでの取引レベルの表示が改善されました。
    • チャートをきれいに保つために、ポジション、注文、レベルのチケットは表示されなくなりました
    • キャプションは読みやすくするために大文字で表示されます
    • ボリュームがゼロの場合、小数部分なしで表示されます
    • チャートの高さが80ピクセル未満の場合、レベルは非表示になります


  8. 銘柄名に加えて、チャートの左上隅に銘柄の説明(利用可能な場合)の表示を追加しました。




  9. 新しい列が未決注文とポジションのリストに追加されました。
    • Change — 運用収益率
    • Value — ポジションの市場価値
    • Magic — エキスパートアドバイザーによって開かれた注文とポジションの識別子(マジックナンバー)

    新しい列は、コンテキストメニューを使用して表示/非表示にできます。


    ポジション値とマジック列も取引履歴セクションに追加されました。
    さらに、ポジションと履歴セクションの利益フィールドは、操作結果に応じて強調表示されます。
  10. マイナス価格のサポートが追加されました。これにより、最近の原油価格がゼロを下回ったのと同様の状況で、適切なプラットフォームの運用が可能になります。下記が含まれます。
    • [気配値表示]での相場の表示
    • チャートと[板情報]の表示
    • 取引操作の実行
    • 利益と担保の計算

  11. [気配値表示]で同時に有効にできる銘柄の最大数が5000に増えました。
  12. 最終更新日によるチャットの並べ替えを修正しました。
  13. 多数の取引銘柄(50,000以上)による操作を最適化および高速化しました。
  14. 現在のボリュームが銘柄のボリューム変更ステップに対応していない場合にポジションを決済できなかったバグを修正しました。

MQL5

  1. ティック履歴の操作を最適化および高速化しました。
  2. データベースを操作するための新しい関数を追加しました。
    • DatabaseResetDatabasePrepare呼び出しと同様に、リクエストを初期状態にリセットします。この関数は、異なるパラメータ値を使用して要求を複数回実行することを目的としています。たとえば、INSERTコマンドを使用してデータを一括でテーブルに追加する場合、フィールド値のカスタムセットをエントリごとに作成する必要があります。
    • DatabaseBind — リクエストにパラメータ値を設定します。この関数は、SQLリクエストに「?」またはパラメータ化可能な「?N」値が含まれている場合に使用されます。 ここで、Nはパラメータインデックス(1から始まる)です。
    • DatabaseBindArray — 配列をパラメータ値として設定します。

  3. FileSelectDialog関数にFSD_FILE_MUST_EXISTフラグを追加しました。選択したファイルが存在する必要があることを示します。
  4. オプションを説明する値をENUM_SYMBOL_INFO_DOUBLE列挙に追加しました。
    • SYMBOL_PRICE_CHANGE — 前の取引日の終わりに対する現行価格の変化(%)。
    • SYMBOL_PRICE_VOLATILITY — 価格の変動率(%)。
    • SYMBOL_PRICE_THEORETICAL — 理論上のオプション価格。
    • SYMBOL_PRICE_DELTA — オプション/保証デルタ。原資産価格が1だけ変動したときに、オプション価格が変動する価値を示します。
    • SYMBOL_PRICE_THETA — オプション/保証シータ。一時的な分割、つまり有効期限が近づいたためにオプション価格が毎日失うポイントの数。
    • SYMBOL_PRICE_GAMMA — オプション/保証ガンマ。デルタの変化率を示します — オプションプレミアムの変化の速さまたは遅さ。
    • SYMBOL_PRICE_VEGA — オプション/保証ベガ。ボラティリティが1%変化したときにオプション価格が変化するポイント数を示します。
    • SYMBOL_PRICE_RHO — オプション/保証ロー。理論上のオプション価格の、1%変化する金利に対する感度を反映します。
    • SYMBOL_PRICE_OMEGA — オプション/保証オメガ。オプション弾力性 - 原資産価格の変化率によるオプション価格の相対的変化率。
    • SYMBOL_PRICE_SENSITIVITY — オプション/保証感度。オプションの価格が1ポイントだけ変化するように、オプションの原資産の価格が何ポイント変化するかを示します。

  5. DatabaseExport関数でHEX形式のBLOBフィールドのエクスポートを追加しました。
  6. ENUM_CHART_PROPERTY_INTEGERに新しいCHART_SHOW_TICKERプロパティを追加しました。左上隅に銘柄ティッカーを表示します。CHART_SHOW_TICKERがfalseに設定されている場合、CHART_SHOW_OHLCもfalseに設定されるため、OHLCは非表示になります。   
  7. コンパイラーによって生成されるコードの品質を改善しました。これにより、実行速度を上げることができました。
  8. テンプレート関数とクラスのコンパイルと実行に関連するエラーを修正しました。修正されたエラーは以下です。
    • オーバーロードされたテンプレート関数呼び出しの優先度の不一致エラー
    • テンプレートメソッド/クラス生成エラー
    • テンプレート関数のテンプレートパラメータの内部クラスにアクセスしようとしたために発生したエラー
    • 内部クラスの使用が原因のテンプレートクラスコード生成エラー
    • B<void*>の前にB<int>テンプレートオブジェクトを使用することによるエラー
    • 内部タイプCを持ち、複数回ラップされた複雑なオブジェクトの作成エラー
    • const refテンプレートとして関数ポインタ引数を転送する際のエラー
    • 内部構造体をテンプレート関数に渡す際のエラー
    • テンプレート関数の実行に関する優先度の不一致エラー
    • forおよびdo-whileループでの括弧数の間違え
    • クラス構造体の説明での括弧数の間違え
    • ArrayResizeを使用して一度に1つの要素を追加した際の速度の低下
    • 一致するオーバーロードされた関数の選択エラー

  9. CustomTicksReplace関数で時々発生するエラーを修正しました。
  10. 取引注文履歴の表示期間の選択を修正しました。範囲は、以前に使用されていた作成日の代わりに、注文実行日に基づくようになりました。

Python

  1. initializeメソッドに、metatrader.exeまたはmetatrader64.exeへのパスを表すpathパラメータが追加されました。パスが指定されていない場合、モジュールはそれ自体で実行可能ファイルを見つけようとします。
  2. 次の新しいメソッドが追加されました。
    • symbols_get — MetaTrader 5ターミナルからすべての金融銘柄を受け取ります。
    • symbols_total — MetaTrader 5ターミナルのすべての金融銘柄数を取得します。

  3. orders_getpositions_gethistory_orders_gethistory_deals_get関数に銘柄グループによるフィルタリングを追加しました。「group」パラメータを使用した呼び出し形式を使用します。
  4. order_sendおよびorder_checkの戻り値は、元のリクエストの完全な説明を含む「request」フィールドとともに渡されるようになりました。例:
    ...
    comment=Request executed
    request_id=55
    retcode_external=0
    request=TradeRequest(action=1, magic=234000, order=0, symbol='USDJPY', volume=0.1, price=108.018, stoplimit=0.0, ...
        traderequest: action=1
        traderequest: magic=234000
        traderequest: order=0
        traderequest: symbol=USDJPY
        traderequest: volume=0.1
        traderequest: price=108.018
        traderequest: stoplimit=0.0
    ...
  5. チャートで起動すると、Pythonスクリプトは、チャート銘柄と期間(分単位)を引数として受け取るようになりました。
    import sys
    
    chart_symbol='unknown'
    chart_tf=1
    
    if len(sys.argv) == 3:
        chart_symbol, chart_tf = sys.argv[1:3];
    
    print("Hello world from", chart_symbol, chart_tf)
    
    >> Hello world from T.NYSE 15

MetaEditor

  1. 「Add an existing folder」コマンドを追加しました。これにより、選択したディレクトリからサポートされているすべてのファイルをプロジェクトに一括追加できます。


  2. 検索および置換オプションを拡張しました。

    部分的な正規表現をサポートする拡張検索機能を追加しました。\r、\n、\tを使用して、検索リクエストでラインフィードとタブ文字を指定します。検索ダイアログと置換ダイアログが1つのマルチタブダイアログに統合されました。


    プログラマーコミュニティで検索するための別のタブを追加しました。これらには、MQL5.community、GitHub、MSDN、Stack Overflowが含まれます。

    外部リソースからの検索結果は、MetaEditorツールボックスウィンドウに表示されます。



    さらに、GitHubからソースファイルをすぐにダウンロードできます。ファイルは、GitHubプロジェクト名に従って名前が付けられた、Projectsフォルダーの別のサブディレクトリにダウンロードされます。

    検索結果はさらに日付で並び替えできます。
  3. コード編集ウィンドウでフォントサイズをすばやく変更できるようになりました。フォントサイズを変更するには、Ctrlキーを押しながらマウスホイールをスクロールします。
  4. CSVファイルからデータベーステーブルにテーブルをインポートする可能性を追加しました。インポート中に次のパラメータを設定できます。
    • データベースのテーブル名
    • 自動または手動のファイルエンコーディング検出
    • データ区切りタイプ
    • 先頭でスキップする行数の指定
    • コメント接頭辞
    • ファイルに列名があるかどうか
    • 改行の決定方法
    • データを新しいテーブルに追加するか、既存のテーブルに追加するか
    • 文字列に使用する引用符


  5. 時間と色をプログラムのソースコードに挿入するためのクイックコマンドを追加しました。インタラクティブなカレンダーとパレットから目的の値を選択すると、エディターがそれらを適切な形式で挿入します。



  6. 64ビットのコードのみを生成するようになったため、MQL4サポートを無効にしました。
  7. クラススニペット操作を修正しました。
  8. プロジェクトの絶対パスのサポートを修正しました。
ドキュメントを更新しました。

6 3月 2020
新しい MetaTrader 5 ビルド2360: SQLite統合の拡張
  1. MQL5: SQLiteデータベース操作エラーを標準MQL5ツールを使用して分析できるようになりました。以下のエラーコードが追加されました。

    • ERR_DATABASE_ERROR — 一般的なエラー
    • ERR_DATABASE_INTERNAL — SQLite内部ロジックエラー
    • ERR_DATABASE_PERM — アクセスが拒否されました
    • ERR_DATABASE_BUSY — データベースファイルがロックされています
    • ERR_DATABASE_LOCKED — データベーステーブルがロックされています
    • ERR_DATABASE_NOMEM — 操作を完了するためのメモリが不足しています
    • ERR_DATABASE_READONLY — 読み取り専用データベースへの書き込みが試行されました
    • ERR_DATABASE_IOERR — ディスクI/Oエラー
    • ERR_DATABASE_CORRUPT — データベースディスクイメージが破損しています
    • ERR_DATABASE_FULL — データベースがいっぱいであるため、挿入に失敗しました
    • ERR_DATABASE_CANTOPEN — データベースファイルを開けません
    • ERR_DATABASE_PROTOCOL — データベースロックプロトコルエラー
    • ERR_DATABASE_SCHEMA — 内部使用のみ
    • ERR_DATABASE_TOOBIG — 文字列またはBLOBがサイズ制限を超えています
    • ERR_DATABASE_CONSTRAINT — 制約違反のため中止します
    • ERR_DATABASE_MISMATCH — データ型の不一致
    • ERR_DATABASE_MISUSE — ライブラリが正しく使用されていません
    • ERR_DATABASE_AUTH — 許可が拒否されました
    • ERR_DATABASE_RANGE — バインドパラメータエラー(不正なインデックス)
    • ERR_DATABASE_NOTADB — データベースファイルではないファイルを開きました

  2. MQL5: ファイルからデータベーステーブルへのデータインポートを可能にするDatabaseImport関数の動作を修正しました。
  3. MetaEditor: ログへの32KBより長い文字列の出力を修正しました。
  4. MetaEditor: Pythonコンソール(stdout、stderr)からエディターのエラーセクションに送信されるメッセージの不正確なエンコードを修正しました。
  5. ドキュメントを更新しました。
21 2月 2020
MetaTrader 5プラットフォームビルド2340: テスターでの口座管理設定とPython統合の拡張

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. 最適化結果グラフの制御を改善しました。ズームオプションの最適化グラフにスクロールオプションを追加しました。グラフの点をダブルクリックすると、パステーブルで対応する結果が選択されます。
ドキュメントを更新しました。
13 12月 2019
MetaTrader 5 Platform Build 2280

ターミナル

  1. データのないチャートからエキスパートアドバイザーを削除できないバグを修正しました。
  2. Wineでのチャートヘッダの表示を修正しました。

MQL5

  1. プログラムの読み込みとコンパイル速度を改善しました。
  2. チャートのダブルクリックがシングルクリックイベントとしてMQL5プログラムに渡されるようになりました。このようなイベントは以前は処理されませんでした。
  3. StringTrimRight関数の動作を修正しました。
  4. DirectX 3D視覚化関数のドキュメントを追加しました。

テスター

  1. 設定のテスト銘柄が空になるケースを修正しました。このエラーは、異なる取引手段のセットを持つ取引口座を切り替えることで発生する可能性があります。新しい動作: 以前に選択された銘柄が現在接続されている取引口座で見つからない場合、代わりに気配値表示で最初に利用可能な銘柄が自動的に選択されます。

MetaEditor

  1. プロジェクトのプロパティを再度開くときのアプリケーションアイコンのロードを修正しました。

インターフェイスの翻訳を更新しました。
クラッシュログに基づいた修正を加えました。
6 12月 2019
新しいMetaTrader 5プラットフォームビルド2265: MQL5の3D視覚化とストラテジーテスターの銘柄設定のためのDirectX関数

ターミナル

  1.  気配値表示でより多くの列が利用可能になりました。メインセクションには、以前は[詳細]タブでのみ使用可能だった40個の追加の銘柄パラメータが追加されています。




  2. [ナビゲーター]に現在リンクされている口座と現在のサーバの強調表示を追加しました。この機能は、異なるブローカーの口座が複数ある場合に役立ちます。




  3. チャートのフレーム設計を更新しました。フレームが小さくなったため、有用な情報に使用できるスペースが増えました。




  4. 取引履歴をポジションとして表示する際の取引合計を計算するためのアルゴリズムを修正しました。値は実際のレコードに基づいて計算されるようになりました。

    取引履歴をポジションとして表示するために、ターミナルは要求された期間中に実行された取引に関する情報を使用します。この期間内に決済されたポジションのみが履歴に表示されます。まだ開いているポジションや選択した間隔外に決済されたポジションは、履歴に表示されません。したがって、「ポジション」モードの合計利益と手数料は、「注文/取引」履歴モードの場合とは異なる場合があります。

    たとえば、過去1週間の履歴を表示しているとします。この期間中に、100件の取引が実行され、そのうち98件で20のポジションが開かれて決済されました。最後の2つの取引では新しいポジションが開かれましたが、まだ決済されていません。この場合、取引の履歴には100件の記録と、これらの取引に基づいて計算された適切な合計値が含まれます。履歴をポジションとして表示すると、98件の取引に基づいて収集された20件の記録が表示されます。合計値を計算するときは、このデータのみが考慮されます。証券会社がエントリ取引手数料を請求する場合、取引履歴の最終手数料はポジション履歴に表示される手数料とは異なります。後者の場合、最後の2つの取引は無視されるためです。

  5. MQL5プログラムのより高速な起動を実装しました。
  6. 新しい /betaキーがターミナルインストールファイルに追加され、ベータ版をダウンロードできるようになりました。通常モードでは、最初にリリースバージョンをインストールする必要があります。その後、ベータバージョンまで更新できます。この手順をスキップすると、時間とトラフィックを節約できます。インストール開始の例:
    C:\mt5setup.exe /beta
  7. 証券取引所」タイプの商品の証拠金要件の表示を修正しました。
  8. Clang / LLVMコンパイラの使用により、すべてのプラットフォームコンポーネントの操作を高速化しました。場合によっては、コンパイルが20%速くなります。

MQL5 

  1. 3D視覚化のための新しいDirectX 11関数とシェーダーを追加しました。MQL5で強力な3次元グラフィックスを直接作成できるようになりました。


    この新しいCCanvas3DクラスはCCanvasカスタムグラフィッククラスを拡張したもので、\MQL5\Include\Canvas\ディレクトリにあります。このクラスは、DirectX APIを介して3次元オブジェクトをレンダリングする機能を備えています。

    • Create — シーンを作成します。
    • Attach — シーンをチャートに結合します。
    • Destroy — シーンを破壊します。
    • ObjectAdd — CDXObject基本クラスから継承した子孫オブジェクトをシーンに追加します。
    • Render — ObjectAddメソッドを介して追加された、すべてのCDXObjectのバッファーのクリアとレンダリングを含む完全なレンダリングループです。
    • RenderBegin — シーンのレンダリングを開始し、指定された色(DX_CLEAR_COLORフラグが設定されている場合)および深度バッファー(DX_CLEAR_DEPTHを使用している場合)でレンダリングバッファを塗りつぶし、デフォルトシェーダーのDXInputSceneシーンバッファーを設定します。
    • RenderEnd — シーンのレンダリングを完了し、結果を内部バッファーに受け取ります。redraw==trueの場合は、実行中のグラフに画像を表示します。
    • ViewMatrixGet — ビュー行列を受け取ります。
    • ViewMatrixSet — ビュー行列を設定します。行列には、ViewPositionSet、ViewRotationSet、ViewTargetSet、ViewUpDirectionsSetメソッドとの互換性がありません。
    • ViewPositionSet — カメラの位置を設定します。
    • ViewRotationSet — カメラ回転行列を設定します。
    • ViewTargetSet — カメラが指している点を設定します。ViewUpDirectionsSetとともに、ViewRotationSetの代替です。
    • ViewUpDirectionsSet — カメラの垂直位置を設定します。ViewTargetSetとともに、ViewRotationSetの代替です。
    • ProjectionMatrixGet — 投影行列を受け取ります。
    • ProjectionMatrixSet — 投影行列を設定します。

    新しいライブラリの詳細なドキュメントは間もなく公開されます。<br0>




  2. MQL5から直接SQLiteデータベースを使用した操作のサポートを追加しました。これにより、複雑な命令を作成せずにSQLクエリを簡単に実行できます。内部操作は、新しい標準ライブラリ拡張機能によって実装されます。

    以下の関数を利用できます。

    • DatabaseOpen — 指定したファイルでデータベースを開くか作成します
    • DatabaseClose — データベースを閉じます
    • DatabaseTableExists — データベースに表があるかどうかを確認します
    • DatabaseExecute — 指定されたデータベースへのクエリを実行します
    • DatabasePrepare — DatabaseRead()を使用するとさらに実行できるクエリハンドルを作成します
    • DatabaseRead — クエリ結果の次のレコードにジャンプします
    • DatabaseFinalize — DatabasePrepare()で作成されたクエリを削除します
    • DatabaseTransactionBegin — トランザクションの実行を開始します
    • DatabaseTransactionCommit — トランザクションの実行を完了します
    • DatabaseTransactionRollback —トランザクションをロールバックします
    • DatabaseColumnsCount — クエリのフィールド数を受け取ります
    • DatabaseColumnName — 番号でフィールド名を受け取ります
    • DatabaseColumnType — 番号でフィールドタイプを受け取ります
    • DatabaseColumnSize — バイト単位のフィールドサイズを受け取ります
    • DatabaseColumnText — 現在のレコードからフィールドの文字列値を受け取ります
    • DatabaseColumnInteger —  現在のレコードからint値を受け取ります
    • DatabaseColumnLong — 現在のレコードからlong値を受け取ります
    • DatabaseColumnDouble — 現在のレコードからdouble値を受け取ります
    • DatabaseColumnBlob — 現在のレコードからフィールド値の配列を受け取ります

    次のエラーコードが関数操作に追加されました。

    • ERR_MQL_DATABASE_INTERNAL (5120) — 内部データベースエラー
    • ERR_MQL_DATABASE_INVALID_HANDLE (5121) — 無効なデータベースハンドル
    • ERR_MQL_DATABASE_TOO_MANY_OBJECTS (5122) データベースオブジェクトの最大数を超えました
    • ERR_MQL_DATABASE_CONNECT (5123)データベース接続エラー
    • ERR_MQL_DATABASE_EXECUTE (5124) リクエスト実行エラー
    • ERR_MQL_DATABASE_PREPARE (5125) リクエスト作成エラー
    • ERR_MQL_DATABASE_NO_MORE_DATA (5126) — 読み込むデータがありません
    • ERR_MQL_DATABASE_STEP (5127) 次のクエリレコードへの移動エラー
    • ERR_MQL_DATABASE_NOT_READY (5128) クエリ結果を読み取るためのデータはまだ準備できていません
    • ERR_MQL_DATABASE_BIND_PARAMETERS (5129) SQLクエリ自動置換エラー

  3. デフォルトの視覚化方法の選択を可能にするMQL5プログラムの新しいプロパティを追加しました。
    #property optimization_chart_mode "3d,InpX,InpY"
    このプロパティにより、最適化の最後に開くチャートのタイプ、およびX軸とY軸のプログラムパラメータを設定できます。

    このプロパティは、デフォルトのチャートビューのみを設定します。これは、コンテキストメニューを使用して、いつでも手動で変更できます。

  4. 新しいMathArctan2関数。タンジェントは、指定された2つの数値の比率に等しい角度のラジアン値を返します。
    double  MathArctan2(
       double  y      // 点のy座標
       double  x      // 点のx座標
       );
  5. パフォーマンスを向上させ、リソース消費を削減するために、プログラムの一般的な最適化を実行しました。
  6. ストラテジーテスターで実行できる数学計算の例を追加しました。これらは\MQL5\Experts\Examples\Math 3D\ディレクトリにあります。
  7. 名前空間の管理を強化しました。
  8. MQL5プログラムで.NETライブラリを使用する場合のリンクライブラリの読み込みを追加しました。使用されている.NETライブラリの操作に他のライブラリが必要な場合、コンパイラは必要なライブラリを\MQL5\Librariesから自動的にダウンロードしようとします。
  9. Python統合用のMetaTraderモジュールの時間操作を修正しました。これで、すべての出力データは、ターミナルが接続されている取引サーバの時間を使用します。

テスター

  1. 多数の新機能と改善点。


    金融商品のカスタム設定
    これで、メインの取引手段の設定を変更できます。これを使用して、テスト/最適化が実行されます。量、取引モード、証拠金要件、実行モード、その他の設定など、ほぼすべての仕様パラメータを上書きできます。したがって、異なる条件でエキスパートアドバイザーを確認する必要がある場合、個別のカスタム銘柄を作成してその履歴をダウンロードする必要はありません。これは、標準の銘柄設定を変更することで実行できます。



    銘柄仕様がカスタマイズされている場合、歯車アイコンと銘柄アイコンにはアスタリスクが付いています。これは、カスタムパラメータが現在のテストに使用されていることを示しています。




    Last設定/エキスパートアドバイザー/チャート
    新しいコンテキストメニューコマンドを使用して、高速なテストまたは最適化の設定を行います。最後に使用したテスター設定、最近のチャートまたはアプリケーションを選択します。




MetaEditor

  1. MetaEditorからC / C ++およびPythonプロジェクトを直接使用する機能を追加しました。多言語プロジェクトは、内蔵エディタを使用して管理できるようになっています。

    適切なコンパイラがPCにインストールされている場合、MetaEditorはそれらを検出して設定に追加します。オプションで、[コンパイラ]タブで必要なコンポーネントへのパスを指定できます。同じタブから、適切なフィールドの横にある[インストール]をクリックして、コンポーネントをダウンロードできます。




    その後、MQL5プログラムと同様にC/C++およびPythonプロジェクトを使用できます。

  2. MQL5 Storageを介した共有プロジェクト開発を目的としたShared Projectsディレクトリ内のサブプロジェクトのサポートを追加しました。以前は、トップレベルで作成できるプロジェクトは1つだけでした。
  3. 組み込みデバッガの更新。
  4. コードスタイラーを使用する際の関数ヘッダの追加を修正しました。
  5. 前/次のカーソル位置にジャンプ」コマンドを、表示メニューだけでなくツールバーでも使用できるようになりました。
  6. プロジェクト名にスペースを使用できるようになりました。

Android

  1. 証券会社Webサイトの入出金ページにすばやく切り替える機能を追加しました。

    ブローカーサイトのトレーダールームで適切な機能を検索する必要はありません。高速ナビゲーションコマンドはターミナルで直接使用できます。ユーザは[アカウント]セクションと[取引]セクションから入出金ページに切り替えることができます。



    • 入出金操作は、ブローカー側の取引口座で適切な機能が有効になっている場合にのみ利用できます。
    • 取引ターミナルは、口座の入出金操作を行いません。統合された機能は、ユーザーを適切なブローカーWebサイトページにリダイレクトします。

  2. 履歴内のポジションは、締め日で並び替えられるようになりました。
  3. 履歴セクションに赤と緑の縦線でストップロスまたはテイクプロフィットによって決済されたポジションのマーキングを追加しました。
  4. 取引銘柄仕様に新しいフィールドを追加しました。

    • Category — このプロパティは、金融商品の追加マーキングに使用されます。たとえば、これは銘柄が属する市場セクター(農業、石油およびガスなど)である可能性があります。カテゴリは、ブローカーによって提供された適切な情報のみが表示されます。
    • Exchange — 証券が取引される取引所の名前。カテゴリは、ブローカーによって提供された適切な情報のみが表示されます。

  5. 取引セクションに証拠金コール状態表示を追加しました。この状態が出現すると、Margin、Free Margin、Margin Levelパラメータが赤で表示されます。
  6. タブレットでのOTPセクションを開くボタンの表示を修正しました。
  7. その他の修正と改善。

iPhone/iPad

  1. 証券会社Webサイトで入出金ページにすばやく切り替える機能を追加しました。詳細については、Android版MetaTrader 5の新機能リストをご覧ください。



  2. iOS/iPadOSでダークモードサポートを追加しました。
  3. ワンタイムパスワードセクションが、iPadバージョンで使用可能になりました。
  4. ストップロスまたはテイクプロフィットによって決済されたポジションが履歴セクションで赤と緑の縦線でマークされるようになりました。
  5. 履歴内のポジションは、締め日で並び替えられるようになりました。ポジションがまだ決済されていない場合、その開かれた日がソートに使用されます。
  6. その他の修正と改善。


18 10月 2019
MetaTrader 5プラットフォームビルド2190

ターミナル

  1. ナビゲータでの注文の表示順序を修正しました。

MQL5

  1. input group宣言を持つプログラムでのローカル静的変数の使用に関連するコンパイルエラーを修正しました。

VPS

  1. ホスティング操作ログのリクエストを修正しました。

テスター

  1. 3次元最適化チャートの表示を改善しました。
  2. フォワード最適化中のフレームの受信を修正しました。メイン最適化とフォワード最適化からのすべてのフレームがOnTesterDeinit関数で使用できるようになりました。
  3. ストラテジーテスター設定でのシンボルツリーの形成を修正しました。

ユーザインターフェイスの翻訳にパンジャブ語(インド)を追加しました。

ドキュメントが更新されました。

クラッシュログに基づいた修正を加えました。

更新はLive Updateシステムを介して利用できるようになります。

5 10月 2019
MetaTrader 5プラットフォームベータ版ビルド2170: MQL5スコープ、グローバルストラテジーテスター、内蔵仮想ホスティングアップデート

ターミナル

  1. 内蔵ホスティング管理オプションを完全に再設計しました。レンタルした端末に関するすべての情報、および環境の移行、停止関数、開始関数が、[ツールボックス]ウィンドウの個別のタブで利用できるようになりました。
    以前のバージョンでは、仮想ホスティング機能は[ナビゲータ]ウィンドウのコンテキストメニューで使用できました。必要なすべての情報と管理コマンドが[VPS]タブに配置され、使いやすくなりました。




    基本的なサブスクリプション情報が左側に表示されます。

    • 接続データ: ホスティングサーバー上の端末とローカルPC上の端末間のネットワーク遅延の比較
    • ホスティングがレンタルされた取引口座と支払いプラン
    • 一意のサブスクリプション識別子 - IDをクリックすると、MQL5.communityユーザプロフィールの[ホスティング]セクションが開き、そこからサブスクリプションを管理できます。
    • 登録日と現在の状態 - ホスティングサービスが停止すると、適切なステータスがすぐにここに表示されます。

    [開始/停止]ボタンを使用すると、仮想端末をすばやく起動または停止できます。

    ホスティングサーバのハードウェアに関するデータとCPU消費量のチャートは、右側のウィンドウセクションに表示されます。表示された情報に基づいて、エキスパートアドバイザーまたは指標が過度のメモリまたはCPU時間を使用している場合、タイムリーに応答できます。

    最後の取引環境の移行に関する情報や移行コマンドもここで入手できます。これらのコマンドは、サブスクリプションを購入した後の高速環境移行を有効にします。

    仮装プラットフォームは[VPS]タブからレンタルできます。レンタルプロセスは変更されておらず、引き続き高速かつ簡単です。プランと適切な支払い方法を選択するだけです。ブローカーへの接続に最適なサーバが自動的に選択されます。




  2. ブローカーWebサイトで入出金操作にすばやく切り替える機能が追加されました。

    ブローカーサイトのトレーダールームで適切な機能を検索する必要はありません。高速ナビゲーションコマンドは、ターミナルで直接、[ナビゲータ]の[アカウント]メニューおよび[ツールボックス]> [取引]タブで使用できます。



    • 入出金操作は、ブローカー側の取引口座で適切な機能が有効になっている場合にのみ利用できます。
    • 取引ターミナルは、口座の入出金操作を行いません。統合された機能は、ユーザーを適切なブローカーWebサイトページにリダイレクトします。
  3. 取引銘柄仕様に新しいフィールドが追加されました。

    Category
    このプロパティは、金融商品の追加マーキングに使用されます。たとえば、これは銘柄が属する市場セクター(農業、石油およびガスなど)である可能性があります。カテゴリは、ブローカーによって提供された適切な情報のみが表示されます。

    Exchange
    証券が取引される取引所の名前です。カテゴリは、ブローカーによって提供された適切な情報のみが表示されます。

    Commissions
    銘柄取引に対してブローカーが請求する手数料に関する情報で、計算の詳細はここに表示されます。

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

    たとえば、次のエントリは、取引の開始と終了の直後に手数料が請求されることを意味します。取引量が0~10ロットの場合、操作ごとに1.2 USDの手数料が請求されます。取引量が11〜20ロットの場合、取引の各ロットごとに1.1 USDの手数料が請求されます。
    Commission | Instant, volume, entry/exit deals
    0  - 10  | 1.2 USD per deal
    11 - 20  | 1.1 USD per lot



  4. 追加のオプション関連フィールドが銘柄仕様に追加されました。

    • Option type — コールまたはぷっと
    • Underlying — オプションの基礎となる銘柄
    • Strike price — オプション行使価格

  5. オプション「ギリシャ指標</ a0>」の配信のサポートが追加されました(デルタ、ガンマ、ベガ、シータ、ロー)。そのような金融商品に関連する追加情報は証券会社が提供できます。データは、[気配値表示]ウィンドウの[詳細]セクションに表示され、高度な取引分析に使用できます。



  6. 十字線ツールが、以前から利用可能であったピップに加えて、価格レベル間の距離をパーセンテージで表示するようになりました。




  7. ブローカーからの応答を受け取ったときにこの価格が利用可能な場合、市場および取引所で実行操作中の取引ダイアログに結果の価格を表示するようになりました。




  8. [気配値表示]ウィンドウの[すべて表示]コマンドが利用可能なすべての取引商品のリストを表示できなかったために発生することがあったエラーを修正しました。

MQL5

  1. スコープの指標が修正されたため、MQL5はさらにC ++に近くなりました。これによって、MQL5プログラマーにサードパーティーのライブラリーを使った操作におけるより広い可能性が与えられます。このアップデートによって、ライブラリを変更したり識別子を統合したりする必要がなくなりました。

    例: 異なるクラスに属するが名前が同じである2つの構造体の宣言がコードに含まれているとします。以前のバージョンでは、そのような宣言によってコンパイルエラー「identifier already used(識別子はすでに使われました)」が発生しました。このコードが正常にコンパイルされて実行されるようになりました。スコープの外側から目的の変数/構造/関数に適切にアクセスするには、クラスを指定する必要があります(この場合はCBar::Item)。
    class CFoo
      {
    public:
       struct Item { int x; };
      };
    //+------------------------------------------------------------------+
    class CBar
      {
    public:
       struct Item { int x; };
      };
      
    CBar::Item item;  // proper declaration of the Item structure from the Bar class
    Item       item;  // incorrect declaration
    MQL5アプリケーションでサードパーティのコード/ライブラリを使用する場合により多くの可能性を提供する
    名前空間サポートを追加しました。

    #define PrintFunctionName() Print(__FUNCTION__)
    
    namespace NS
    {
    void func()
      {
       PrintFunctionName();
      }
    
    struct C
      {
       int               x;
                         C() { PrintFunctionName(); };
      };
    }
    
    struct C
      {
       int               x;
                         C() { PrintFunctionName(); };
      };
    
    //+------------------------------------------------------------------+
    //|                                                                  |
    //+------------------------------------------------------------------+
    void func()
      {
       PrintFunctionName();
      }
    //+------------------------------------------------------------------+
    //| Script program start function                                    |
    //+------------------------------------------------------------------+
    void OnStart()
      {
       func();
       NS::func();
    
       C c;
       NS::C ac;
      }
    実行の結果、次の結果が出力されます。
    2019.09.18 13:39:35.947    TestScript (AUDCAD,H1)    func
    2019.09.18 13:39:35.949    TestScript (AUDCAD,H1)    NS::func
    2019.09.18 13:39:35.949    TestScript (AUDCAD,H1)    C::C
    2019.09.18 13:39:35.949    TestScript (AUDCAD,H1)    NS::C::C

  2. 新しいバージョンでは、次の関数を使用して時系列データへのアクセスが高速化されています: iTime、iOpen、iHigh、iLow、iClose、iVolume、iTickVolume、iSpread。

  3. 「=delete」属性のサポートを追加しました。これによって、特定のクラスメソッドの使用を禁止できます。
    class A
      {
       void              operator=(const A &)=delete;    // prohibit object copying operator
      };
    
    class B : public A
      {
      };
    
    //+------------------------------------------------------------------+
    //| Script program start function                                    |
    //+------------------------------------------------------------------+
    void OnStart()
      {
       A a1,a2;
       B b1,b2; 
      
       a1=a2;
       b1=b2;
      }
    この例では、コンパイラは「a1=a2」と「b1=b2」に対してエラーを返します。
    attempting to reference deleted function 'void A::operator=(const A&)'
       function 'void A::operator=(const A&)' was explicitly deleted here

    attempting to reference deleted function 'void B::operator=(const B&)'
       function 'void B::operator=(const B&)' was implicitly deleted because it invokes deleted function 'void A::operator=(const A&)'

  4. ENUM_SYMBOL_INFO_STRING列挙体に以下の値が追加されました。

    • SYMBOL_CATEGORY — 銘柄カテゴリ。金融商品の追加マーキングに使用されます。たとえば、これは銘柄が属する市場セクター(農業、石油およびガスなど)である可能性があります。
    • SYMBOL_EXCHANGE — 銘柄が取引される取引所の名前です。

  5. FIFOルールによるポジション決済サポートを追加しました。

    • ENUM_ACCOUNT_INFO_INTEGERにACCOUNT_FIFO_CLOSEが追加されました。これは、FIFOルールによってのみポジションを決済できることを示します。プロパティ値がtrueの場合、各商品のポジションは、開かれたのと同じ順序でのみ決済することができます。最も古いものが最初に決済され、次に次のものが決済されます。別の順序でポジションを決済しようとすると、エラーが返されます。ポジション管理をヘッジしない口座のプロパティ値は常に「false」です(ACCOUNT_MARGIN_MODE!=ACCOUNT_MARGIN_MODE_RETAIL_HEDGING).
    • 新しい戻りコード: MT_RET_REQUEST_CLOSE_ONLY — 「FIFOルールによる既存のポジションの決済のみが許可されている」というルールが銘柄に設定されているため、リクエストは拒否されます

    ポジションを決済するには、主に3つの方法があります。

    • クライアントターミナルからの決済: トレーダーは、シグナルサービスのサブスクリプションなどに基づいて、取引ロボットを使用して手動でポジションを決済します。FIFOルールを満たさないポジションを決済しようとした場合、トレーダーは適切なエラーを受け取ります。
    • ストップロスまたはテイクプロフィットの発動による決済: これらの注文はサーバ側で処理されるため、ポジションの決済はトレーダー(ターミナル)側では要求されず、サーバによって開始されます。ポジションのストップロスまたはテイクプロフィットが発動して、このポジションがFIFOルールに準拠していない場合(同じ銘柄に古いポジションが存在する)、ポジションは決済されません。
    • ストップアウト発動での決済: このような操作はサーバ側でも処理されます。FIFOに基づく決済が無効になっている通常モードでは、ストップアウトの場合、損失が最大のポジションから決済されます。このオプションが有効になっている場合、オープン時間は負けポジションではさらに確認されます。サーバは、各銘柄の負けポジションを決定し、各銘柄の最も古いポジションを見つけ、見つかったポジションの中で最も損失が大きいポジションを決済します。

  6. 「入力グループ」を介したパラメーターグループ化のオプションが追加されました。これにより、基になるロジックに基づいてパラメーターを視覚的に分離できます。

    以下のエキスパートアドバイザーのコードでは、入力パラメーターは目的に応じてグループ化されています。
    input group           "Signal"
    input int             ExtBBPeriod = 20;         // Bollinger Bands period
    input double          ExtBBDeviation=2.0;       // deviation
    input ENUM_TIMEFRAMES ExtSignalTF=PERIOD_M15;   // BB timeframe
    
    input group           "Trend"
    input int             ExtMAPeriod = 13;         // Moving Average period
    input ENUM_TIMEFRAMES ExtTrendTF=PERIOD_M15;    // MA timeframe
    
    input group           "ExitRules"
    input bool            ExtUseSL      = true;     // use StopLoss
    input int             Ext_SL_Points = 50;       // StopLoss in points
    input bool            ExtUseTP      = false;    // use TakeProfit
    input int             Ext_TP_Points = 100;      // TakeProfit in points
    input bool            ExtUseTS      = true;     // use Trailing Stop
    input int             Ext_TS_Points = 30;       // Trailing Stop in points
    
    input group           "MoneyManagement"
    sinput double         ExtInitialLot =0.1;       // initial lot value
    input bool            ExtUseAutoLot =true;      // automatic lot calculation
    
    input group           "Auxiliary"
    sinput int            ExtMagicNumber =123456;   // EA Magic Number
    sinput bool           ExtDebugMessage=true;     // print debug messages
    このようなエキスパートアドバイザーがストラテジーテスターで起動されると、グループ名をダブルクリックすることで入力パラメーターブロックを縮小または展開でき、グループ内のすべてのパラメータは単一のチェックボックスで最適化のために選択できます。




  7. MQL5関数名と一致する名前を持つDLL関数のインポートを修正しました。例:
    #import "lib.dll"
    int func();
    #import
    //+------------------------------------------------------------------+
    //|                                                                  |
    //+------------------------------------------------------------------+
    int func()
      {
       return(0);
      }
    //+------------------------------------------------------------------+
    //| Script program start function                                    |
    //+------------------------------------------------------------------+
    void OnStart()
      {
       Print( func() );
      }
    以前のバージョンでは、コンパイル中に以下のエラーが発生しました。
    'func' - ambiguous call to overloaded function with the same parameters
    could be one of 2 function(s)
       int func()
       int func()
    このバージョンでは、より高い優先度を持つ内蔵MQL5関数がデフォルトで使用されるようになったのでエラーは発生しません。インポートされた関数は、 スコープを明示的に指定することで呼び出すことができます。
    void OnStart()
      {
       Print( lib::func() );
      }
  8. 経済指標カレンダーニュースの時間の仕様を修正しました。現在、イベントはローカルコンピュータの時間帯ではなく、ターミナルが接続されている取引サーバの時間帯を考慮して配信されます。
  9. CopyticksおよびCopyTicksRange関数による過剰なメモリ消費を修正しました。

シグナル

  1. Wineでの作業時のシグナルチャートの表示を修正しました(Mac OSおよびLinux)。

テスター

  1. ストラテジーテスターが新しいスタートページ、設定ページの再設計、使いやすさの向上の面で、大規模に更新されました。

    スタートページ
    テスターの起動後、複数の設定の代わりに標準的なタスクが表示されるようになりました。これらを選択することによって、テストをすぐに開始できます。この新設定は主に初心者向けです。

    最も頻繁な戦略テストと最適化タスクを選択し、スタートページに追加しました。さらに、以前に実行したタスクの1つをスタートページから再起動できます。実行したタスクが多数でスタートページに収まらない場合は、検索バーを使用します。テストは、プログラム名、銘柄、時間枠、モデリングモードなどの任意のパラメータで検索できます。




    無関係なパラメーターを非表示にする
    タスクを選択した後、ユーザーは追加のテストパラメータに進んで、エキスパートアドバイザー、銘柄、テスト期間などを選択します。選択したタスクに必要ではないすべての無関係なパラメータは、設定ページに表示されません。たとえば、数学的計算が選択されている場合、テストするプログラムの選択と最適化モードの2つのパラメータのみを指定する必要があります。テスト期間、遅延、ティック生成の設定は非表示になります。




    便利なテスト設定
    設定ページの一部のパラメータが再配置されて、使いやすくなりました。遅延パラメータと視覚化パラメータの詳細な説明が追加されました。さらに、テスト設定を保存して手動でアップロードできるようになったため、トレーダーは以前の設定にすばやく戻ることができます。




    同じタブを使用して、MetaEditorで編集するプログラムをすばやく開くことができます。

    ピップ単位の利益計算
    設定を使用して、ピップでの利益計算を有効にできます。このモードでは、変換レートを使用して預金通貨の利益を再計算する必要がないため、テストが加速します(したがって、適切な価格履歴をダウンロードする必要はありません)。このモードでは、スワップとコミッションの計算は不要です。




    ピップ単位で利益を計算する場合、取引量は重要ではないことに注意してください。取引ごとに勝ち/負けピップの数のみが計算されます。また、このモードでは証拠金は管理できません。迅速かつ大まかな戦略推定にのみ使用し、より正確なモードを使用して取得した結果を確認します。

    一般的な改善
    テストの開始/停止ボタンと進行状況バーがタブバーに移動しました。したがって、ユーザーは任意のストラテジーテスターセクションからプロセスを管理できます。テストの開始/停止コマンドは、設定および入力セクションのコンテキストメニューにも追加されました。




  2. 別のストラテジーテスターセクションの代わりにターミナルのメイン作業領域に最適化チャートを表示できるようになりました。これにより、データ分析により多くのスペースを使用できます。3D視覚化システムも更新されました。




  3. [気配値表示でのすべての銘柄]モードの最適化キャッシュの保存を追加しました。
  4. テストキャッシュの保存を追加しました。

    以前のバージョンでは、実行されたタスクの結果は、エキスパートアドバイザーを最適化するときにのみファイルに保存されました。現在、単一のテスト中にキャッシュファイルも保存されるため、以前の計算に戻り、いつでも統計、残高、エクイティ、デポジットロードグラフを表示できます。将来のリリースでは、このオプションによりテスト結果の比較が可能になります。

    以前のテスト結果を読み込むには、新しいテスターのスタートページを使用します。[以前の結果]をクリックして、目的のサイトを選択します。




  5. MQL5クラウドネットワークを使用して実行される操作を含む、テストと最適化を大幅に加速しました。
  6. フレーム操作を修正し、最適化しました。

MetaEditor

  1. コードスタイラーを構成できるようになりました。

    MetaEditorにはコードスタイラーが内蔵されており、採用されている標準に従ってプログラムテキストの自動書式設定が可能です。一般的なスタイルに加えて、他の一般的な標準を使用できるようになりました。これを行うには、MetaEditor設定を開き、目的のスタイルを選択します。




    スタイラーでは、さらに次のパラメータを設定できます。

    Spaces per indent
    ネストされた構造の整列に使用されるスペースの数を設定します。
    if(condition)
      {
       //---
      }

    Replace tabs with spaces
    このオプションが有効な場合、スタイラーはコード内のすべてのタブをスペースに置き換えます。タブごとの文字数は、[一般]セクションで設定されます。

    Delete empty lines
    このオプションを有効にすると、スタイラーは改行文字のみを持つすべての行を削除します。

    Insert spaces after commas and semicolons
    このオプションを有効にすると、スタイラーは要素の列挙で構造を視覚的に分離します。例:
    // before styling
    ParameterGetRange("InpX",enable,x_cur,x_start,x_step,x_stop);
    // after styling
    ParameterGetRange("InpX", enable, x_cur, x_start, x_step, x_stop);

    Insert spaces around declaration operators
    このオプションを有効にすると、スタイラーは割り当て、等価、比較、およびその他の演算子の周りにスペースを挿入します。例:
    // before styling
    if(x==1&y!=2)
      {
       int a=0;
      }
    // after styling
    if(x == 1 & y != 2)
     {
      int a = 0;
     }

  2. [Show in Navigator](ナビゲーターに追加)コマンドがブックマークコンテキストメニューに追加され、エディターのフォルダー構造の中から編集用に開かれたファイルを簡単に見つけることができるようになりました。




  3. ツールヒントでの「union」キーワードの表示を修正しました。

ユーザインターフェイスが18言語で新たに利用できるようになりました。

  • 欧州地域 — スウェーデン語、リトアニア語、デンマーク語、ラトビア語、エストニア語、セルビア語、スロベニア語、スロバキア語、フィンランド語、グルジア語
  • アジア地域 — ジャワ語、マラーティー語、ベンガル語、パンジャブ語、タミル語、テルグ語
  • アフリカ地域 — スワヒリ語、ハウサ語

プラットフォームインターフェイスは現在、50の言語で利用可能で、40億人以上に使用されています。

インターフェイスの言語を設定するには、ターミナルの上部にある[表示\言語]メニューに移動します。

ドキュメントが更新されました。

クラッシュログに基づいた修正を加えました。

更新はLive Updateシステムを介して利用できるようになります。

12 6月 2019
MetaTrader 5プラットフォームビルド2085: Pythonとの統合、ストラテジーテスターの改良

ターミナル

  1. Python言語を使用するアプリケーションを介したMetaTrader 5ターミナルデータの要求を可能にする新しいAPIを追加しました。

    Pythonは、スクリプトやアプリケーションを開発するための現代の高水準プログラミング言語です。これには、機械学習、プロセスの自動化、およびデータ分析と視覚化のための複数のライブラリが含まれています。

    MetaTrader Pythonパッケージは、MetaTrader 5ターミナルから直接プロセッサ間通信を介して交換データを効率的かつ迅速に取得するように設計されています。このルートで受信したデータは、統計計算や機械学習にも使用できます。



    接続

    1. 最新のPythonバージョンはhttps://www.python.org/downloads/windowsでダウンロードできます。
    2. Pythonのインストール中に、[Add Python X.X to PATH%(Python X.XをPATH%に追加)]をチェックして、コマンドラインからPythonスクリプトを起動できるようにします。
    3. MetaTrader 5モジュールをコマンドラインからインストールします。
      pip install MetaTrader5
    4. matplotlibとpytzパッケージを追加します。
      pip install matplotlib
      pip install pytz

    関数

    • MT5InitializeはMetaTrader 5ターミナルとの接続を確立します。
    • MT5ShutdownはMetaTrader 5ターミナルへの以前に確立された接続を閉じます。
    • MT5TerminalInfoは接続されたMetaTrader 5ターミナルのステータスとパラメータを受信します。
    • MT5VersionはMetaTrader 5ターミナルバージョンを戻します。
    • MT5WaitForTerminalはMetaTrader 5ターミナルが取引サーバーに接続するまで待ちます。
    • MT5CopyRatesFromは指定した日付から開始してMetaTrader 5ターミナルからバーを受信します。
    • MT5CopyRatesFromPosは指定したインデックスから開始してMetaTrader 5ターミナルからバーを受信します。
    • MT5CopyRatesRangeは指定した期間のバーをMetaTrader 5ターミナルから受信します。
    • MT5CopyTicksFromは指定した日付から開始してMetaTrader 5ターミナルからティックを受信します。
    • MT5CopyTicksRangeは指定した期間のティックをMetaTrader 5ターミナルから受信します。


  2. マーケットおよびシグナルセクションを最適化しました。製品とシグナルのショーケースが最大7倍速くなり、サービスブラウジング体験が向上しました。




  3. Wineでの「マーケット」、「シグナル」、「検索」サポートを追加しました。LinuxおよびMac OSユーザーが、最大規模の取引アプリケーションとコピー取引サービスにアクセスできるようになりました。




  4. 内蔵の学習プログラムは、スペイン語、中国語、ポルトガル語、ドイツ語を含む30以上の言語に翻訳されています。希望の言語でインタラクティブなヒントを表示するには、[表示]メニューを使用してインターフェイスの言語を切り替えます。




  5. デモ口座と予備口座の開設時にトレーダーが指定した電話番号とメールの認証を可能にする新しいオプション。

    データ認証の必要性はブローカーによって決定されます。このオプションが有効になっていると、口座のリクエスト中に認証コードが自動的にトレーダーに送信され、特別なコードフィールドがダイアログボックスに表示されます。




    認証コードは数分間有効です。この時間内にコードがフィールドに入力されない場合、手順を繰り返す必要があります。
    コードが送信される前に、指定された電話/メールが以前に認証されたかどうかが確認されます。すでに使用中のコンピューターからの認証が完了している場合は、追加認証なしで口座が開設されます。よって、口座を簡単にリクエストできます。
  6. PayPalシステムを介したMQL5.community支払いオプションを拡張しました。このシステムを使用して、ワンクリックで購入ができるようになりました。

    仕組み
    購入時にPayPalアカウントでログインした後に、当社への今後の支払いを許可するよう求められます。





    このオプションを確認すると、以前に保存したアカウントボタンを押すことで、ワンクリックで追加購入が可能になります。




    [キャンセルしてMetaQuotes Software Corp.に戻る]をクリックした場合は、購入ごとにPayPalアカウントの詳細を手動で入力して、通常の方法で支払いを行うことになります。
    MQL5.comウェブサイトとMetaTrader 5プラットフォームでは支払い詳細は保存されません。資金の入金、マーケットでの購入、シグナルの購読が行われると、データは支払いシステム側で検証されます。PayPalアカウントのリンクはいつでも削除できます。

  7. ストラテジーテスターの改善と最適化。

    ストラテジーテスタの操作を最適化するために、数多くの改良を陰で導入しエラーを修正しました。このアップデートにより、一部のタスクタイプのテストが大幅に高速化され、操作の安定性が向上しました。主な改善点は次のとおりです。

    フレーム操作
    ローカル、ネットワーク、クラウドの各エージェントでフレームを使用した操作を最適化しました。このような操作はより高速に処理されるようになり、スキップされることはありません。

    エージェントへのタスクの分配
    テスターは、最適化プロセス中にタスクをエージェントに再分配できるようになりました。新しいエージェントが利用可能になった場合(または以前に使用されていたエージェントのいずれかがリリースされた場合)、テスターは他のエージェント間で以前に分配されていたタスクパッケージを使用してタスクの新しいパッケージを自動的に作成します。低速のエージェントが検出された場合にもタスクを再分布することができます。そのようなエージェントのタスクは他のエージェントに送信され、最適化がより早く完了します。

    数学計算モードでのタスク分配がはるかに高速になりました。

    操作ログでの最適化統計
    最適化のログへの記録が拡張され、クラウドエージェントの有効化と無効化など、MQL5クラウドネットワークの使用に関する詳細な統計情報が含まれるようになりました。

    完全最適化ログモードでの操作
    リソースを最適に消費するために、エージェントからのすべてのメッセージがテスターログに記録されるわけではありません。すべてのログを表示するには、テスターログのコンテキストメニューを使用して[完全最適化ログ]オプションを有効にします。以前は、このモードでは最適化プロセスが大幅に遅くなりました。計算時間は影響を受けないようになりました。

    MQL5クラウドネットワーク
    クラウドテストエージェントの操作を最適化しました。計算タスクはより効率的に分散されるようになりました。

  8. 内蔵カレンダでは、米国、欧州連合、日本、英国を含む18の経済大国の経済に関連する900以上の指標の発表を集めています。データは、公開情報からリアルタイムに収集されます。定期的にサービスをチェックすることで、最新の世界的なニュースを手に入れ、情報に基づいた取引決定を下すことができます。
    経済指標カレンダーは、モバイル端末だけでなくデスクトップのターミナルやウェブサイトでも利用できます。アプリケーションは、ターミナルの[カレンダー]コンテキストメニューを使用して開くことができます。




    プラットフォームを選択してTradaysアプリをダウンロードします。


    デスクトップ版で利用可能なカレンダー機能に加えて、モバイル版では、イベントのリマインダーやチャートや表の形式で指標の完全な履歴へのアクセスを提供しています。

  9. ティック履歴のインポート中のカスタム銘柄バー履歴の自動生成を追加しました。カスタム銘柄のティックデータが変わると、対応するバーが自動的に再計算されるようになりました。

    • このようにして統合されたデータはプラットフォームに保存されます。
    • ティックデータをインポートした後は(十分なデータがある場合)、バーが自動的に計算されているので、バーをインポートする必要はありません。

    変更は、ターミナルインターフェイスを介して実行されたティックのインポート、およびCustomTicks*関数を使用してMQL5アプリケーションから実行されたティックの更新に関するものです。ティックデータに変更があると、対応するカスタム銘柄の1分足の再計算が行われます。

  10. 取り外されたチャートで十字線を使用したときの[データ]ウィンドウでのデータ更新を修正しました。
  11. ティック履歴の保存を修正しました。以前のバージョンでは、1ミリ秒以内に複数のティックがあると、誤った順序で保存される可能性がありました。
  12. サーバーで利用可能な短すぎる価格履歴(1日未満)に基づくチャートの生成を修正しました。

MQL5

  1. MQL5サービスのデバッグオプションを追加しました。これらのアプリケーションはエキスパートアドバイザーや指標と同様にテストできるようになりました。
  2. ENUM_SYMBOL_CALC_MODE 列挙体に新しい利益と証拠金の計算モードが追加されました。

    • SYMBOL_CALC_MODE_EXCH_BONDS — 為替ボンドの計算
    • SYMBOL_CALC_MODE_EXCH_STOCKS_MOEX — モスクワ証券取引所で取引されている株式の計算
    • SYMBOL_CALC_MODE_EXCH_BONDS_MOEX — モスクワ証券取引所で取引されている債券の計算

  3. 新しいTesterDeposit関数がテストの間に入金操作のエミュレーションを可能にします。この関数は、資金管理戦略をテストするときに役立ちます。
    bool  TesterDeposit(
       double money      // 入金額
       );
  4. OnDeinitメソッドの実行中には、MQL5アプリケーションはターミナルからイベントを受信しません。以前は、他のイベントが受信されたためにアプリケーションが初期化解除を完了できない場合がありました(たとえば、作成されたすべてのオブジェクトの削除)。
  5. 当日のカスタム銘柄のティック履歴が変更された後に発生する可能性があるエラーを修正しました。
  6. 多数(数万)のグラフィックオブジェクトを使用している場合にアプリケーションが遅くなる可能性があるという問題を修正しました。
  7. MQL5プログラムから頻繁に取引履歴が呼び出される場合にターミナルがフリーズする問題を修正しました。
  8. iBarShift関数の動作を修正しました。「exact=false」フラグとデータ外のリクエストで、関数は最新のバー番号の代わりに最古のバー番号を返していました。

テスター

  1. 複数のNUMAノードを持つプロセッサを搭載したコンピューターのコア数の特定を修正しました。
  2. テスト中に新しいTesterDeposit 関数を使用して入金操作をエミュレートできるため、初期入金をゼロにしてテストと最適化を実行する可能性が追加されました。

MetaEditor

  1. コードスタイルコマンドをすばやくアクセスするためにツールバーに追加できるようになりました。
  2. 関数名と変数名にUnicode以外の文字を使用した場合のパラメータ定義への切り替えと関連データの表示を修正しました。

ドキュメントが更新されました。

更新はLiveUpdateシステムから利用できます。

21 2月 2019
MetaTrader 5 プラットフォームビルド2005: 経済指標カレンダー、サービスとしてのMQL5アプリとR言語API

ターミナル

  1. 内蔵の経済指標カレンダーを完全に更新しました。
    経済指標カレンダーは当社独自の祖ルーションです。ここには、米国、欧州連合、日本、英国、カナダ、オーストラリア、中国などの13の世界経済リーダーに関する金融ニュースと指標があります。データは、公開情報からリアルタイムに収集されます。

    新バージョンでは、時間、優先度、通貨、国ごとに、最新のコンテンツと高度なイベントフィルタが追加されています。
    カレンダーデータはMQL5プログラムからアクセスできるようになりました。詳細は以下でご覧ください。




  2. MQL5アプリケーションの新タイプとして「サービス」が追加されました。この新しいタイプによってターミナルのためのカスタム価格フィードの作成が可能になります。つまり、ブローカーの取引サーバ上で実施されるのと同様に、外部システムからの価格をリアルタイムで実装できるようになります。

    エキスパートアドバイザー、指標、スクリプトとは異なり、サービスは特定のチャートにリンクされていません。このようなアプリケーションはバックグラウンドで実行され、ターミナルの起動時に自動的に起動されます(アプリケーションが強制的に停止された場合を除く)。

    サービスは、ナビゲータウィンドウ内の新しいセクションから管理できます。





    サービスを作成する方法
    サービステンプレートを作成するには、対応するMQL5ウィザードオプションを使用します。スクリプト同様、サービスにはOnstartエントリポイントが1つあります。この時点で、ネットワーク機能を使用して、無限のデータ受信および処理サイクルを実装できます。

    サービスをリリースする方法
    異なるパラメータで複数のエキスパートアドバイザーまたは指標のコピーを実行するには、それらを異なるチャートで起動する必要があります。この場合、異なるプログラムインスタンスが作成され、独立して動作します。サービスはチャートにリンクされていないため、サービスインスタンスを作成するための特別なメカニズムが実装されています。

    ナビゲータからサービスを選択して、そのコンテキストメニューの[サービスの追加]をクリックします。これにより標準のMQL5プログラムダイアログが開き、取引やシグナルへのアクセスを有効/無効にしたり、パラメータを設定したりできます。




    サービスインスタンスは適切なインスタンスメニューを使用して起動および停止できます。すべてのインスタンスを管理するには、サービスメニューを使用します。

  3. 学習プログラムが実装されました。

    新しい機能によって、初心者はプラットフォームを操作する方法を簡単に学ぶことができるようになりました。プラットフォームの主な機能に関する100以上のインタラクティブなヒントを追加しました。

    • ヒントはツールバー上の進行状況バーとしてシームレスに表示されるため、ユーザーの注意をそらすことはありません。
    • ヒントは、プラットフォームでこれまでに実行したことがない操作に対してのみ表示されます。
    • すべてのヒントにはインタラクティブリンクが含まれており、これによって関連するインターフェース要素に移動できます。例えば、取引ダイアログまたは所望のプログラムを含むメニューを先端から直接開くことができます。

    プログレスバーの塗りつぶされた領域は、適切な行動をとってトレーニングを続けるたびに大きくなります。




  4. 取引口座履歴をポジションとして表示できます。プラットフォームは、ポジションに関連する取引(始値、数量の増加、部分的または全額の決算)に関するデータを収集し、その情報を単一のレコードにグループ化します。したがって、ポジションの詳細(開閉時刻、ボリューム、価格、結果)にアクセスすることができます。この効率的なプレゼンテーション形式は、ファイルにエクスポートされた履歴レポートで利用可能になりました




  5. R言語を使用するアプリケーションを介したMetaTrader 5ターミナルデータの要求を可能にする新しいAPIを追加しました。

    特別なMetaTraderパッケージを用意しました。RとMetaTrader 5ターミナルとの間のやり取りのためのDLL、ドキュメント、補助的なRファイルが含まれています。CRANリポジトリへのパッケージ登録が完了し、その後、ダウンロードとインストールが可能になります。




    パッケージは特別なコマンドを使ってインストールすることができます。
    R CMD INSTALL --build MetaTrader

    以下のデータ要求に関連するコマンドが利用可能になりました。

    • MT5InitializeはMetaTrader 5ターミナルとの接続を初期化して確立します。ターミナルは必要に応じてコマンド実行中に起動されます。
    • MT5Shutdownは初期化を解除してMetaTrader 5から切断します。
    • MT5VersionはMetaTrader 5ターミナルバージョンを入手します。
    • MT5TerminalInfoは、ターミナルのブローカーのサーバーへの接続状態とパラメータ(アカウント番号とサーバーアドレス)を取得します。
    • MT5WaitTerminalはMetaTrader 5ターミナルがブローカーのサーバーに接続するまで待ちます。
    • MT5CopyTicksFrom(symbol, from, count, flags)は、指定された日付から開始して、指定された数のティックをコピーします。日付は1970.01.01からのミリ秒単位で指定されます。
    • MT5CopyTicksRange(symbol, from, to, flags)は、指定された期間内からティックをコピーします。日付は1970.01.01からのミリ秒単位で指定されます。
    • MT5CopyRatesFromPos(symbol, from, to, flagsは、最後のバーを基準にして指定された位置から分足バーをコピーします。日付は1970.01.01からのミリ秒単位で指定されます。
    • MT5CopyRatesFromPos(symbol, timeframe, start_pos, count)は、最後のバーを基準にして指定された位置から分足バーをコピーします。
    • MT5CopyRatesFromRange(symbol, timeframe, date_from, date_to)は、指定された期間内からバーをコピーします。日付は1970.01.01からのミリ秒単位で指定されます。

    サポートされるコマンドのリストはさらに拡張されます。

  6. ポジションを反対のポジションによって決済するためのClose Byダイアログを最適化しました。多数のポジションがあってもダイアログは遅くならなくなりました。
  7. 合成銘柄の計算エラーとそれによって生じるデータの省略を修正しました。
  8. カスタム銘柄が削除されると、ティックとバー履歴を格納するファイルも削除されるようになりました。これにより、ハードディスクに未使用のデータが蓄積されるのを防ぎます。
  9. High DPI画面での検索結果の表示を修正しました。

MQL5

  1. MQL5プログラムからの経済指標カレンダーへのアクセスを実装しました。

    新機能

    CalendarCountryById — 国の説明をIDによって取得します。
    bool CalendarCountryById(
       const long           country_id,    // 国ID
       MqlCalendarCountry&  country        // 国の説明
       );
    CalendarEventById — イベントの説明をIDによって取得します。
    bool CalendarEventById(
       const long           event_id,      // イベントID
       MqlCalendarEvent&    event          // イベントの説明
       );
    CalendarValueById — イベント値の説明をIDによって取得します。
    bool CalendarValueById(
       const long           value_id,      // 値ID
       MqlCalendarValue&    value          // 値の説明
       );
    CalendarEventByCountry — 国の利用できるイベントの配列を取得します。
    bool CalendarEventByCountry(
       string               country_code,  // 国コード
       MqlCalendarEvent&    events[]       // イベント配列
       );
    CalendarEventByCurrency — 影響された通貨の利用できるイベントの配列を取得します。
    bool CalendarEventByCurrency(
       string               currency,      // 通貨
       MqlCalendarEvent&    events[]       // イベント配列
       );
    CalendarValueHistoryByEvent — イベントIDによって指定された期間の値の配列を取得します。
    bool CalendarValueHistoryByEvent(
       ulong                event_id,      // イベントID
       MqlCalendarValue&    values[],      // 値の配列
       datetime             datetime_from, // 期間開始日
       datetime             datetime_to=0  // 期間終了日
       );
    CalendarValueHistory — 国および/または通貨によって絞り込まれた、指定された期間の値の配列を取得します。
    bool CalendarValueHistory(
       MqlCalendarValue&    values[],          // 値の配列
       datetime             datetime_from,     // 期間の開始日
       datetime             datetime_to=0,     // 期間の終了日
       string               country_code=NULL, // 国コード
       string               currency=NULL      // 通貨
       );
    CalendarValueLastByEvent — 最後のイベントの値をIDによって取得します。この関数は前回のリクエスト以降に現れた値のリクエストを可能にします。この操作には、入出力パラメータ「change_id」が追加で使用されます。

    カレンダデータベースが変更されるたびに、「change_id」プロパティ(最後の変更識別子)が更新されます。データのリクエスト中に「change_id」を指定すると、端末はそれ以降に発生したイベントと、次のリクエストに使用できる現在の「change_id」値を返します。最初の関数呼び出しでゼロ「change_id」を指定します。関数はイベントを返しませんが、それ以降の要求では現在の「change_id」を返します。
    bool CalendarValueHistory(
       ulong                event_id,          // イベントID
       ulong&               change_id,         // 最後のカレンダー変更ID
       MqlCalendarValue&    values[]           // 値の配列
       );
    CalendarValueLast — 国および/または通貨によって絞り込まれた、すべてのイベントの最後の値の配列を取得します。この関数は前回のリクエスト以降に現れた値のリクエストを可能にします。CalendarValueLastByEvent同様、「change_id」プロパティはリクエストに使用されます。
    bool CalendarValueHistory(
       ulong                event_id,          // イベントID
       ulong&               change_id,         // 最後のカレンダー変更ID
       MqlCalendarValue&    values[],          // 値の配列
       string               country_code=NULL, // 国コード
       string currency=NULL                    // 通貨
       );

    新しい構造体

    MqlCalendarCountry — 国の説明
    struct MqlCalendarCountry
      {
       ulong             id;                        // ISO 3166-1での国ID
       string            name;                      // 国名の文字列
       string            code;                      // ISO 3166-1 alpha-2での国ID
       string            currency;                  // 国の通貨コード
       string            currency_symbol;           // 国の通貨の記号/サイン
       string            url_name;                  // mql5.comのURLで使用される国名
      };
    MqlCalendarEvent — イベントの説明
    struct MqlCalendarEvent
      {
       ulong                          id;           // イベントID
       ENUM_CALENDAR_EVENT_TYPE       type;         // イベントタイプ
       ENUM_CALENDAR_EVENT_SECTOR     sector;       // イベントが所属するセクター
       ENUM_CALENDAR_EVENT_FREQUENCY  frequency;    // イベント発表頻度
       ENUM_CALENDAR_EVENT_TIMEMODE   time_mode;    // イベント発表タイムモード
       ulong                          country_id;   // 国ID
       ENUM_CALENDAR_EVENT_UNIT       unit;         // イベント値の単位
       ENUM_CALENDAR_EVENT_IMPORTANCE importance;   // イベント重要度
       ENUM_CALENDAR_EVENT_MULTIPLIER multiplier;   // イベント重要度乗数
       uint                           digits;       // イベント値の小数点以下桁数
       string                         source_url;   // ソースURL
       string                         event_code;   // イベントコード
       string                         name;         // 端末限度でのイベント名の文字列
      };
    MqlCalendarValue — イベント値の説明
    struct MqlCalendarValue
      {
       ulong             id;                        // 値ID
       ulong             event_id;                  // イベントID
       datetime          time;                      // イベント日時
       datetime          period;                    // イベント発表期間
       int               revision;                  // 発表期間に関係する発表指標
       long              actual_value;              // 現在のイベント値
       long              prev_value;                // 前のイベント値
       long              revised_prev_value;        // 改正された前のイベント値
       long              forecast_value;            // イベント予想値
       ENUM_CALENDAR_EVENT_IMPACRT impact_type;     // 通貨への潜在的な影響
      };

    新しい列挙型

    enum ENUM_CALENDAR_EVENT_FREQUENCY
      {
       CALENDAR_FREQUENCY_NONE            =0,   // 未使用
       CALENDAR_FREQUENCY_WEEK            =1,   // 週
       CALENDAR_FREQUENCY_MONTH           =2,   // 月
       CALENDAR_FREQUENCY_QUARTER         =3,   // 四半期
       CALENDAR_FREQUENCY_YEAR            =4,   // 年
       CALENDAR_FREQUENCY_DAY             =5,   // 日
      };
    
    enum ENUM_CALENDAR_EVENT_TYPE
      {
       CALENDAR_TYPE_EVENT                =0,   // イベント(会合、演説など)
       CALENDAR_TYPE_INDICATOR            =1,   // 指標
       CALENDAR_TYPE_HOLIDAY              =2,   // 祝日
      };
    
    enum ENUM_CALENDAR_EVENT_SECTOR
      {
       CALENDAR_SECTOR_NONE               =0,   // なし
       CALENDAR_SECTOR_MARKET             =1,   // 市場
       CALENDAR_SECTOR_GDP                =2,   // GDP
       CALENDAR_SECTOR_JOBS               =3,   // 職
       CALENDAR_SECTOR_PRICES             =4,   // 価格
       CALENDAR_SECTOR_MONEY              =5,   // 金
       CALENDAR_SECTOR_TRADE              =6,   // 取引
       CALENDAR_SECTOR_GOVERNMENT         =7,   // 政府
       CALENDAR_SECTOR_BUSINESS           =8,   // ビジネス
       CALENDAR_SECTOR_CONSUMER           =9,   // 消費者
       CALENDAR_SECTOR_HOUSING            =10,  // 家
       CALENDAR_SECTOR_TAXES              =11,  // 税
       CALENDAR_SECTOR_HOLIDAYS           =12,  // 祝日
      };
      
    enum ENUM_CALENDAR_EVENT_IMPORTANCE
      {
       CALENDAR_IMPORTANCE_NONE           =0,   // なし
       CALENDAR_IMPORTANCE_LOW            =1,   // 低
       CALENDAR_IMPORTANCE_MODERATE       =2,   // 中
       CALENDAR_IMPORTANCE_HIGH           =3,   // 高
      };
    
    enum ENUM_CALENDAR_EVENT_UNIT
      {
       CALENDAR_UNIT_NONE                 =0,   // なし
       CALENDAR_UNIT_PERCENT              =1,   // 割合
       CALENDAR_UNIT_CURRENCY             =2,   // 国の通貨
       CALENDAR_UNIT_HOUR                 =3,   // 時間数
       CALENDAR_UNIT_JOB                  =4,   // 職の数
       CALENDAR_UNIT_RIG                  =5,   // リグの数
       CALENDAR_UNIT_USD                  =6,   // 米ドル
       CALENDAR_UNIT_PEOPLE               =7,   // 人数
       CALENDAR_UNIT_MORTGAGE             =8,   // 住宅ローン数
       CALENDAR_UNIT_VOTE                 =9,   // 投票数
       CALENDAR_UNIT_BARREL               =10,  // バレル数
       CALENDAR_UNIT_CUBICFEET            =11,  // 立方フィート
       CALENDAR_UNIT_POSITION             =12,  // 就職口の数
       CALENDAR_UNIT_BUILDING             =13   // 建物の数
      };
      
    enum ENUM_CALENDAR_EVENT_MULTIPLIER
      {
       CALENDAR_MULTIPLIER_NONE           =0,   // なし
       CALENDAR_MULTIPLIER_THOUSANDS      =1,   // 千
       CALENDAR_MULTIPLIER_MILLIONS       =2,   // 百万
       CALENDAR_MULTIPLIER_BILLIONS       =3,   // 十億
       CALENDAR_MULTIPLIER_TRILLIONS      =4,   // 一兆
      };
      
    enum ENUM_CALENDAR_EVENT_IMPACRT
      {
       CALENDAR_IMPACT_NA                 =0,   // 使用不可
       CALENDAR_IMPACT_POSITIVE           =1,   // プラス
       CALENDAR_IMPACT_NEGATIVE           =2,   // マイナス
      };
    
    enum ENUM_CALENDAR_EVENT_TIMEMODE
      {
       CALENDAR_TIMEMODE_DATETIME         =0,   // ソースが正確な時刻を発表
       CALENDAR_TIMEMODE_DATE             =1,   // 終日イベント
       CALENDAR_TIMEMODE_NOTIME           =2,   // ソースが正確な時刻を発表しない
       CALENDAR_TIMEMODE_TENTATIVE        =3,   // ソースは日付のみを提供するが、正確な時刻を事前に公開していないため、イベントが発生したときに正確な時刻が追加される
      };

    新しいエラーコード

    ERR_CALENDAR_MORE_DATA             =5400,   // 結果全体として配列が小さい(配列に収まる値が渡された)
    ERR_CALENDAR_TIMEOUT               =5401,   // カレンダデータ要求への応答を待っている間にタイムアウトした
    ERR_CALENDAR_NO_DATA               =5402,   // データが見つからない

  2. ティックとバーの履歴に関する修正と操作速度の向上。
  3. カスタム取引銘柄のティックおよびバー履歴修正関数であるCustomTicks*および CustomRates *の修正と大幅な操作速度の向上。
  4. 新しいデータ変換関数。

    CharArrayToStructはuchar配列をPOD構造体にコピーします。
    bool  CharArrayToStruct(
       void&         struct_object,    // 構造体
       const uchar&  char_array[],     // 配列
       uint          start_pos=0       // 配列での開始位置
       );
    StructToCharArrayはPOD構造体をuchar配列にコピーします。
    bool  StructToCharArray(
       const void&  struct_object,     // 構造体
       uchar&       char_array[],      // 配列
       uint         start_pos=0        // 配列での開始位置
       );

  5. ushort、uint、ulong値のバイト位置を変更するMathSwap関数を追加しました。
    ushort MathSwap(ushort value);
    uint   MathSwap(uint   value);
    ulong  MathSwap(ulong  value);

  6. システムソケットを介してリモートホストへのTCP接続を作成するネットワーク関数を追加しました。

    • SocketCreate指定されたフラグを持つソケットを作成してハンドルを返します
    • SocketCloseはソケットを閉じます
    • SocketConnectはサーバーに接続し、タイムアウト管理を備えます
    • SocketIsConnectedはソケットが現在接続されているかどうかを確認します
    • SocketIsReadableソケットから読み込むことができるバイト数を取得します
    • SocketIsWritableこのソケットへのデータの書き込みが現在可能かどうかを確認します
    • SocketTimeoutsシステムソケットオブジェクトのデータ送受信タイムアウトを設定します。
    • SocketReadはソケットからデータを読み込みます
    • SocketSendはソケットにデータを書き込みます
    • SocketTlsHandshakeTLS Handshakeプロトコルを使用して、指定されたホストとの安全なTLS(SSL)接続を開始します
    • SocketTlsCertificate安全なネットワーク接続に使用される証明書に関する情報を受信します
    • SocketTlsRead安全なTLS接続からデータを読み込みます
    • SocketTlsReadAvailable安全なTLS接続から利用可能なすべてのデータを読み取ります
    • SocketTlsSend安全なTLS接続を使用してデータを送信します

    ネットワーク機能を使用した接続が確立されているホストのアドレスは、ターミナル設定の[list of allowed addresses](許可済みのアドレスリスト)に明示的に追加する必要があります。

    ネットワーク関数に新しいエラーコードが追加されました。

    • ERR_NETSOCKET_INVALIDHANDLE (5270): 無効なソケットハンドルが関数に渡されました
    • ERR_NETSOCKET_TOO_MANY_OPENED (5271): 開いているソケットが多すぎます(最大128)
    • ERR_NETSOCKET_CANNOT_CONNECT (5272): リモートホストへの接続中にエラーが発生しました
    • ERR_NETSOCKET_IO_ERROR (5273): ソケットとのデータ送受信中にエラーが発生しました
    • ERR_NETSOCKET_HANDSHAKE_FAILED (5274): セキュア接続確立エラー(TLS Handshake)
    • ERR_NETSOCKET_NO_CERTIFICATE (5275) — 安全な接続に使用される証明書に関するデータがない

  7. 新しい文字列操作関数を追加しました。

    StringReserve指定されたサイズのメモリバッファを文字列用に予約します。
    bool  StringReserve(
       string&        string_var,          // 文字列
       uint           new_capacity         // 文字列バッファサイズ
       );
    StringSetLengthは指定した文字列の長さを文字数で設定します。
    bool  StringSetLength(
       string&        string_var,          // 文字列
       uint           new_length           // 新しい文字列の長さ
       );

  8. 新しい配列操作関数を追加しました。

    ArrayRemove指定されたインデックスから始まる指定された数の要素を配列から削除します。
    bool  ArrayRemove(
       void&         array[],              // 任意の型の配列
       uint          start,                // 削除開始インデックス
       uint          count=WHOLE_ARRAY     // 要素数
       );
    ArrayInsertは、指定されたインデックスから開始して、ソース配列から指定された数の要素をターゲット配列に挿入します。
    bool  ArrayInsert(
       void&         dst_array[],          // ターゲット配列
       const void&   src_array[],          // ソース配列
       uint          dst_start,            // ターゲット配列で挿入を始めるインデックス
       uint          src_start=0,          // ソース配列でコピーを始めるインデックス
       uint          count=WHOLE_ARRAY     // 挿入された要素の数
       );
    ArrayReverseは指定されたインデックスで始まる指定された数の要素を配列内で反転します。
    bool  ArrayReverse(
       void&         array[],              // 任意の型の配列
       uint          start=0,              // 反転開始インデック
       uint          count=WHOLE_ARRAY     // 要素数
       );

  9. CustomRatesUpdateCustomRatesReplaceCustomTicksAddCustomTicksReplace関数に新しい"uint count"パラメータが追加されましたs。これによって、これらの関数に使用されるために渡される配列の要素数を指定できます。デフォルト値はWHOLE_ARRAYです。この場合配列全体が使用されます。
  10. カスタム銘柄のいた情報ステータスを渡すCustomBookAdd関数を追加しました。この関数を使用すると、あたかも価格がブローカーのサーバーから到着したかのようにいた情報をブロードキャストできます。
    int  CustomBookAdd(
       const string        symbol,            // 銘柄名
       const MqlBookInfo&  books[]            // DOM要素説明付きの配列
       uint                count=WHOLE_ARRAY  // 使用される要素の数
       );
  11. CustomSymbolCreate関数のオーバーロードを追加しました。これにより、既存の取引シンボルに基づいてカスタム取引シンボルを作成することができます。作成後、任意の銘柄プロパティは対応する関数を使用して編集できます。
    bool  CustomSymbolCreate(
       const string        symbol_name,       // カスタム銘柄名
       const string        symbol_path="",    // 銘柄が作成されるグループの名前
       const string        symbol_origin=NULL // カスタム銘柄作成の基盤となる銘柄の名前
       );
    作成されたカスタム銘柄のプロパティのコピー元となる銘柄の名前は、"symbol_origin"パラメータで指定されます。

  12. 日付/時刻付きの文字列を日時値に変換するStringToTime関数が更新されました。以下のデータ形式がサポートされます。

    • yyyy.mm.dd [hh:mi]
    • yyyy.mm.dd [hh:mi:ss]
    • yyyymmdd [hh:mi:ss]
    • yyyymmdd [hhmiss]
    • yyyy/mm/dd [hh:mi:ss]
    • yyyy-mm-dd [hh:mi:ss]

  13. ENUM_TERMINAL_INFO_INTEGER列挙型にターミナルがMetaTrader仮想ホストサーバー(MetaTrader VPS)上で実行されていることを示す新しいTERMINAL_VPSプロパティが追加されました。アプリケーションがホストサーバー上で実行されている場合、仮想サーバーにはグラフィカルユーザーインターフェイスがないため、すべての視覚機能を無効にします。
  14. ENUM_SYMBOL_INFO_INTEGER列挙型に、対応する名前の銘柄が存在することを意味する新しいSYMBOL_EXISTプロパティが追加されました。
  15. テンプレート関数の事前宣言を使用しているときのタイピングを修正しました。
  16. 取引口座を偏国するときの指標の最初期化を追加しました。
  17. StringSplit関数を最適化しました。
  18. 標準ライブラリ操作のエラーを修正しました。

テスター

  1. テストエージェントのエキスパートアドバイザーで早期シャットダウンをルーチン化するTesterStop関数を追加しました。指定された数の負け取引数や事前設定されたドローダウンレベルなどのの基準に達したときに、テストを強制的に停止できるようになりました。

    この関数を使用して完了したテストは成功したと見なされます。関数呼び出しの後、テスト中に取得された取引履歴とすべての取引統計がターミナルに渡されます。
  2. 「真のティック」モードでMQL5クラウドネットワークを介してエキスパートアドバイザーをテストおよび最適化する機能を無効にしました。このモードは、ローカルエージェントとローカルネットワークファームでのみ使用できます。
  3. ビジュアルテスト中の指標の処理を改善しました。視覚化速度が最大であっても、価格チャートと指標のラインが同期して描画されるようになりました。
  4. 最適化されたテストと最適化が大幅に加速されました。
  5. 履歴データ上の指標のデバッグを修正しました。OnInitとOnDeinitの指標関数は正しくデバッグされるようになりました。
  6. 複数通貨のエキスパートアドバイザーをテストする際の履歴データへのアクセスの高速化。
  7. 履歴データのデバッグ中にビジュアルテスターが時々フリーズするのを修正しました。
  8. エージェントによってタスクパッケージを処理するときに、最適化がより早く開始します。
  9. タスクパッケージをテストエージェントに配布するポリシーを変更しました。パッケージサイズが大きくなり、ネットワーク運用におけるリソース消費が大幅に削減されました。
  10. ローカルエージェント、ネットワークエージェント、クラウドエージェントの使用を可能にするオプションの動作を変更しました。オプションをオフにすると、エージェントは受信したタスクの処理を完了するが新しいタスクは割り当てられないようになりました。以前のバージョンでは、この動作は "Disable"コマンドと似ていて、エージェントの動作はすぐに停止されていました。




MetaEditor

  1. デバッガでの非ANSI文字のサポートを追加しました。変数名がキリル文字で指定されていても、式は正しく表示されるようになりました。
  2. High DPI画面での検索結果の表示を修正しました。

ユーザインターフェイスがクロアチア語でも利用できるようになりました。

ドキュメントが更新されました。

26 10月 2018
MetaTrader 5プラットフォームビルド1930: 柔軟なウィンドウチャートとMQL5.NETライブラリ

ターミナル

  1. 取引ターミナルウィンドウから金融銘柄チャートを切り離すことができるようになりました。

    この機能は、複数の画面を使用している場合に便利です。つまり、1つ目の画面にメインプラットフォームウィンドウを設定してアカウント状態を管理し、チャートは2番目の画面に移動して市場状況を観察することができます。ターミナルからチャートを取り外すには、コンテキストメニューの[Docked]オプションを無効にします。その後、グラフを目的の画面に移動します。





    切り離されたチャート上の別のツールバーを使用すると、画面を切り替えることなく分析オブジェクトと指標を適用できます。ツールバーのコンテキストメニューを使用すると、使用可能なコマンドのセットを管理したり非表示にできます。

  2. 内蔵チャットを完全に更新しました。グループダイアログとチャネルがサポートを追加しました。スレッド間で切り替えずに、統一された環境でグループとプライベートディスカッションを行い、興味や言語に応じてチャネルを作成できます。MQL5.communityウェブサイトに移動せずに同僚や友達とチャットできます。

    グループチャットとチャネルは公開することも非公開にすることもできます。チャットの作成者は、チャットを自由参加型にするか招待のみにするかを決定します。スレッドをさらに管理するために、チャネルとチャットにモデレータ-0を割り当てることもできます。




  3. 仮想通貨取引のボリューム精度の拡張のサポートを追加しました。取引操作の可能な最小量は0.00000001ロットです。板情報、時間と販売、その他のインターフェース要素は、ボリュームは小数点以下8桁の精度で表示する機能を備えています。

    最小ボリュームとその変更ステップは、ブローカー側の金融商品設定に依存します。




  4. ツールボックスウィンドウにMQL5.communityで公表された記事のタブを追加しました。これで、MQL5の取引戦略の開発に関する600以上の詳細資料が、ターミナルを離れることなく利用可能になりました。新しい記事は毎週公開されます。




  5. Wineで作業する際の証明書を使った拡張認証のサポートを追加しました。
  6. 1レベルに制限されたときの板情報の表示を修正しました。
  7. 標準ツールバーに[Save As Picture(画像として保存)]コマンドを追加しました。これで、チャートの写真を撮ってコミュニティで共有するのがはるかに簡単です。




  8. バーとティックをインポートする際のシフトの適用を修正しました。以前は、シフトが適用されないことがありました。




  9. 大量の経済指標カレンダーニュースを処理する場合のターミナルのフリーズを修正しました。

MQL5

  1. "smart"関数インポートで.NETライブラリのネイティブサポートを追加しました。これで、.NETライブラリは特別なラッパーを書かないで利用できます。MetaEditorが独自のラッパーを書きます。

    .NETライブラリ関数を使用するには、特定の関数を定義せずにDLL自体をインポートします。MetaEditorは自動的に使用される関数をインポートします。
    • 単純な構造体(POD、plain old data) — 単純なデータ型のみを含む構造体
    • 単純な型とPOD構造体またはその配列のみが使用されるパラメータを持つpublic static関数

    ライブラリからの関数を呼び出すには、単にインポートします。
    #import "TestLib.dll"
    
    //+------------------------------------------------------------------+
    //| スクリプトプログラム開始関数                                     |
    //+------------------------------------------------------------------+
    void OnStart()
      {
       int x=41;
       TestClass::Inc(x);
       Print(x);
      }
    TestClassのInc関数のC#コードは下記のとおりです。
    public class TestClass
    {
       public static void Inc(ref int x)
       {
        x++;
       }
    }
    実行されると、スクリプトは42を返します。
    .NETライブラリのサポートに関する作業は続けられており、その機能は将来拡張される予定です。

  2. 標準ライブラリにWinAPI関数を使用するためのサポートを追加しました。これで、MQL5プログラムでオペレーティングシステム関数を使用するために、ライブラリを手動でインポートして関数シグネチャを記述する必要はありません。MQL5\Include\WinAPIディレクトリからヘッダファイルをインクルードするだけです。

    WinAPI関数は、目的によって別々のファイルにグループ化されます。

    • libloaderapi.mqh — リソースの使用
    • memoryapi.mqh — メモリーの使用
    • processenv.mqh — 環境の使用
    • processthreadsapi.mqh — プロセスの使用
    • securitybaseapi.mqh — OSセキュリティシステムの使用
    • sysinfoapi.mqh — システム情報の取得
    • winbase.mqh — 一般的関数
    • windef.mqh — 定数、構造体、列挙体
    • wingdi.mqh — グラフィックオブジェクトの使用
    • winnt.mqh — 例外の使用
    • winreg.mqh — レジストリの使用
    • winuser.mqh — ウィンドウとインターフェースの使用
    • errhandlingapi.mqh — エラー処理
    • fileapi.mqh — ファイルの使用
    • handleapi.mqh — ハンドルの使用
    • winapi.mqh — すべての関数を含む(WinAPIヘッダーファイル)

    バインドは64ビットアーキテクチャでのみ機能します。

  3. コードの解析にinline、__inline、__forceinline指定子のサポートを追加しました。コード中に指定子があると、エラーは発生せず、コンパイルには影響しません。現時点では、この機能により、С++コードをMQL5に簡単に転送することができます。
    指定子についての詳細は、MSDNをご覧ください。

  4. MQL5プログラムの実行を大幅に最適化しました。場合によっては、パフォーマンスの改善は10%に達する可能性があります。より高速な実行には、新しいMetaEditorバージョンでプログラムを再コンパイルします。
    残念ながら、この新しい最適化により、新しいプログラムは以前のターミナルバージョンとの互換性がありません。MetaEditorバージョン1910以降でコンパイルされたプログラムは、1880以下のターミナルバージョンでは起動できません。古いバージョンのMetaEditorでコンパイルされたプログラムは、新しいターミナルでも実行できます。

  5. 複数のMQL5関数を大幅に最適化しました。
  6. ターミナルのメインウィンドウからチャートを追加/削除し、そのポジションを管理するための新しいプロパティを追加しました。

    ENUM_CHART_PROPERTY_INTEGER列挙体に下記のプロパティを追加しました。

    • CHART_IS_DOCKED — チャートウィンドウがドックされている。'false'の場合、チャートはターミナル領域外までドラッグできます。
    • CHART_FLOAT_LEFT — 仮想スクリーンに相対したドッキングされていないチャートウィンドウの左座標
    • CHART_FLOAT_TOP — 仮想スクリーンに相対したドッキングされていないチャートウィンドウの上座標
    • CHART_FLOAT_RIGHT — 仮想スクリーンに相対したドッキングされていないチャートウィンドウの右座標
    • CHART_FLOAT_BOTTOM — 仮想スクリーンに相対したドッキングされていないチャートウィンドウの下座標

    ENUM_TERMINAL_INFO_INTEGER列挙体に下記の関数を追加しました。

    • TERMINAL_SCREEN_LEFT — 仮想スクリーンの左座標。仮想スクリーンは、画面全体をカバーする長方形です。システムが2つの画面を右から左に並べると、仮想スクリーンの左の座標は2つの画面の境界になる可能性があります。
    • TERMINAL_SCREEN_TOP — 仮想スクリーンの上座標
    • TERMINAL_SCREEN_WIDTH — ターミナルの幅
    • TERMINAL_SCREEN_HEIGHT — ターミナルの高さ
    • TERMINAL_LEFT — 仮想スクリーンに相対したターミナルの左座標
    • TERMINAL_TOP — 仮想スクリーンに相対したターミナルの上座標
    • TERMINAL_RIGHT — 仮想スクリーンに相対したターミナルの右座標
    • TERMINAL_BOTTOM — 仮想スクリーンに相対したターミナルの下座標

  7. MqlTick構造体とMqlBookInfo構造体にvolume_realフィードを追加しました。これは、拡張精度ボリュームで動作するように設計されています。volume_realは'volume'より優先順位が高いです。指定された場合、サーバーはこの値を使用します。

    struct MqlTick
      {
       datetime         time;          // 最後の価格更新時刻
       double           bid;           // 現在の売値
       double           ask;           // 現在の買値
       double           last;          // 現在の最終約定値
       ulong            volume;        // 現在の最終約定ボリューム
       long             time_msc;      // 最後の価格更新時刻(ミリ秒単位)
       uint             flags;         // ティックフラグ
       double           volume_real;   // 高精度の現在の最終約定ボリュー
      };

    struct MqlBookInfo
      {
       ENUM_BOOK_TYPE   type;            // ENUM_BOOK_TYPE列挙体からの注文タイプ
       double           price;           // 価格
       long             volume;          // ボリューム
       double           volume_real;     // 高精度ボリューム
      };

  8. ENUM_SYMBOL_INFO_DOUBLE列挙体に下記のプロパティを追加しました。

    • SYMBOL_VOLUME_REAL — 最後の約定実行のボリューム
    • SYMBOL_VOLUMEHIGH_REAL — 今日の最高約定ボリューム
    • SYMBOL_VOLUMELOW_REAL — 今日の最低約定ボリューム

    プロパティの取得にはSymbolInfoDouble関数を使用します。

  9. ENUM_MQL_INFO_INTEGER列挙体にMQL_FORWARDプロパティを追加しました(forward testモードフラグ)。
  10. 構造体にpack( integer_value )プロパティを追加しました。これにより、構造体内のフィールド配置のアラインメントを設定できます。これは、DLLを扱う際に必要となります。integer_valueには1、2、4、8、16の値を指定できます。
    プロパティが定義されていない場合は、デフォルトの1バイトのアラインメント(pack(1))が使用されます。

    使用例:
    //+------------------------------------------------------------------+
    //| デフォルトのパッキング                                           |
    //+------------------------------------------------------------------+
    struct A
      {
       char              a;
       int               b;
      };
    //+------------------------------------------------------------------+
    //| パッキングの指定                                                 |
    //+------------------------------------------------------------------+
    struct B pack(4)
      {
       char              a;
       int               b;
      };
    //+------------------------------------------------------------------+
    //| スクリプトプログラム開始関数                                     |
    //+------------------------------------------------------------------+
    void OnStart()
      {
       Print("sizeof(A)=",sizeof(A));
       Print("sizeof(B)=",sizeof(B));
      }
    //+------------------------------------------------------------------+
    結論:
    sizeof(A)=5
    sizeof(B)=8
    構造体内のアラインメントについての詳細は、MSDNをご覧ください。

  11. 列挙型キャストの要件を緩めました暗黙のキャストの場合、コンパイラは自動的に正しい列挙値を代入し、警告を表示します。

    下記のコードで
    enum Main
      {
       PRICE_CLOSE_,
       PRICE_OPEN_
      };
    
    input Main Inp=PRICE_CLOSE;
    //+------------------------------------------------------------------+
    //| 開始関数                                                         |
    //+------------------------------------------------------------------+
    void OnStart()
      {
      }
    コンパイラは下記の警告を表示します。
    implicit conversion from 'enum ENUM_APPLIED_PRICE' to 'enum Main'
    'Main::PRICE_OPEN_' instead of 'ENUM_APPLIED_PRICE::PRICE_CLOSE' will be used
    以前は、この場合、次のエラーが発生しました。
    'PRICE_CLOSE' - cannot convert enum
    関数のパラメータで列挙が不正に使用された場合、コンパイラは引き続きエラーを表示します。

  12. テンプレート関数のコンパイルを修正しました。Now, オーバーロードされたテンプレート関数を使用すると、既存のすべてのテンプレート関数ではなく、必要なオーバーロードのみがインスタンス化されるようになりました。
    class X {  };
    
    void f(int)  {  }
      
    template<typename T>
    void a(T*) { new T(2); }  // 以前はコンパイラがここでエラーを生成した
      
    template<typename T>
    void a()  { f(0); }
      
      
    void OnInit()  { a<X>(); }  

  13. CopyTicks* 関数によるティック履歴アクセスを部分的に最適化しました。
  14. テスト/最適化パスの早期完了を可能にする新しいTesterStop関数を追加しました。これを呼び出すと、通常のテスト/最適化の完了時と同様に、取引統計およびOnTesterの結果全体がクライアント端末に渡されます。
  15. 新しいカスタム指標プロパティ(#property tester_everytick_calculate)を追加しました。これはストラテジーテスターで使用され、各ティックで指標計算を強制することができます。

テスター

  1. 非視覚的なテスト/最適化の場合、すべての使用済み指標(標準およびカスタム指標)はデータ要求中にのみ計算されます。例外は、EventChartCustom関数呼び出しを含み、OnTimerハンドラを適用する指標です。以前は、すべての指標は、ティックが(他の商品からでも)出現するごとにストラテジーテスターで無条件に計算されていました。この新機能により、テストと最適化が大幅に加速されます。

    各ティックで指標計算を強制するには、プログラムの#property tester_everytick_calculateプロパティを追加します。
    以前のコンパイラーバージョンを使用してコンパイルされた指標は、引き続き各ティックで計算されます。

  2. 関連するレポートをテスト/最適化して生成する際の預金通貨の正確度の計算を修正しました。
  3. ストラテジーテスターの操作を最適化して加速しました。
  4. いくつかのテストと最適化のエラーを修正しました。

MetaEditor

  1. 単語全体の検索を修正しました。検索時にアンダースコアは単語区切りではなく通常の文字としてみなされます。

ドキュメントを更新しました。

12345678910111213