MetaTrader 5 プラットフォームベータ版ビルド1995: サービスとしてのMQL5アプリとR言語API

 

更新された MetaTrader 5 プラットフォームのベータ版が2019年2月15日にリリースされます。更新されたプラットフォームの機能の評価と開発者のエラー修正に役立てるため、トレーダーの皆様のテストへの参加をお待ちしています。

MetaTrader 5 プラットフォームをビルド1995に更新するには、Help \ Check Desktop Updates \ Latest Beta Versionにアクセスしてください。


新しい MetaTrader 5 プラットフォームの最終ビルドは公開ベータ版テストの後にリリースされます。

この新バージョンは次の変更を含みます。


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

    新バージョンでは、時間、優先度、通貨、国ごとに、最新のコンテンツと高度なイベントフィルタが追加されています。
    MQL5プログラムからのカレンダーデータへのアクセスはまもなく実装される予定です。




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

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

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





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

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

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




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

  3. ターミナル: 学習プログラムが実装されました。

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

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

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




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




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

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




    パッケージは特別なコマンドを使ってインストールすることができます。
    R CMD INSTALL --build MetaTraderR
    以下のデータ要求に関連するコマンドが利用可能になりました。

    • MT5InitializeはMetaTrader 5ターミナルとの接続を初期化して確立します。ターミナルは必要に応じてコマンド実行中に起動されます。
    • MT5Shutdownは初期化を解除してMetaTrader 5から切断します。
    • MT5VersionはMetaTrader 5ターミナルバージョンを入手します。
    • MT5TerminalInfoは、ターミナルのブローカーのサーバーへの接続状態とパラメータ(アカウント番号とサーバーアドレス)を取得します。
    • MT5WaitTerminalはMetaTrader 5ターミナルがブローカーのサーバーに接続するまでの2分間の待ち時間を設定します。
    • 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. MQL5: ティックとバーの履歴に関する修正と操作速度の向上。
  10. MQL5: カスタム取引銘柄のティックおよびバー履歴修正関数であるCustomTicks*および CustomRates *の修正と大幅な操作速度の向上。
  11. MQL5: 新しいデータ変換関数。

    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        // 配列での開始位置
       );

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

  13. MQL5: システムソケットを介してリモートホストへの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 (5272): 安全な接続に使用される証明書に関するデータがありません

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

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

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

    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     // 要素数
       );

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

  19. 日付/時刻付きの文字列を日時値に変換する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]

  20. MQL5: ENUM_TERMINAL_INFO_INTEGER列挙型にターミナルがMetaTrader仮想ホストサーバー(MetaTrader VPS)上で実行されていることを示す新しいTERMINAL_VPSプロパティが追加されました。アプリケーションがホストサーバー上で実行されている場合、仮想サーバーにはグラフィカルユーザーインターフェイスがないため、すべての視覚機能を無効にします。
  21. MQL5: ENUM_SYMBOL_INFO_INTEGER列挙型に、対応する名前の銘柄が存在することを意味する新しいSYMBOL_EXISTプロパティが追加されました。
  22. MQL5: テンプレート関数の事前宣言を使用しているときのタイピングを修正しました。
  23. MQL5: 取引口座を偏国するときの指標の最初期化を追加しました。
  24. MQL5: StringSplit関数を最適化しました。
  25. MQL5: 標準ライブラリ操作のエラーを修正しました。
  26. テスター: テストエージェントのエキスパートアドバイザーで早期シャットダウンをルーチン化するTesterStop関数を追加しました。指定された数の負け取引数や事前設定されたドローダウンレベルなどのの基準に達したときに、テストを強制的に停止できるようになりました。

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




  36. MetaEditor: デバッガでの非ANSI文字のサポートを追加しました。変数名がキリル文字で指定されていても、式は正しく表示されるようになりました。
  37. ユーザインターフェイスがクロアチア語でも利用できるようになりました。
  38. ドキュメントが更新されました。

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

理由: