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

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

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

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

6 7月 2018
MetaTrader 5プラットフォームビルド 1880:合成銘柄の完全な履歴

ターミナル

  1. 合成銘柄の価格履歴を利用可能なデータ全体での計算を追加しました。

    プラットフォームでは、その数式に適用された商品の分足に基づいて、分足の履歴を計算します。以前は、過去2ヶ月の履歴のみが計算されていました。より長い履歴は、明示的な要求(チャートを左にスクロールするまたはコピー関数を呼び出す)によって作成できました。履歴はすべての利用可能なデータで無条件に計算されるようになりました。




    合成式で使用される各銘柄の価格履歴期間は異なることができます。したがって、計算は最短有効期間に実行されます。たとえば、式で3つの金融商品が使用されるとします。

    • EURUSD(2009.01.01 以後)
    • USDJPY(2012.06.01 以後)
    • EURJPY(2014.06.01 以後)

    この場合、合成銘柄の履歴は、2014.06.01から現在までで計算されます。計算の完全性を保証するために、この日から100分がさらに捨てられます(履歴で分足が利用できない場合は、前の分のバーが計算に使用されます)。

    銘柄の長期間の履歴が利用可能な場合、合成銘柄履歴の計算にはかなりの時間がかかります。即時に合成銘柄チャートの表示を有効にするには、最初の2か月間の履歴が最初に計算されます(以前のバージョンの計算と同様)。初期の履歴の計算はそれ以降に始まります。

MQL5

  1. 新しい ACCOUNT_CURRENCY_DIGITS プロパティ — 口座の預金通貨の小数点以下の桁数プロパティの取得には AccountInfoInteger 関数を使用します。このプロパティは利益計算で結果を正規化するのに使用できます。
  2. 週時間枠でのコピー関数i-functionsの実行の遅れを修正しました。
  3. WebRequest関数の動作を修正しました。

テスター

  1. キャッシュファイルからの最適化結果をダウンロードした後、単一のエキスパートアドバイザーテストを実行する機能を追加しました。
  2. 新しいバージョンは、ローカルエージェントによる価格履歴のより早い初期ダウンロードを特徴とします。

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

26 6月 2018
MetaTrader 5 ビルド 1870: ISIN による気配値表示への銘柄の追加

ターミナル

  1. ISIN (国際証券識別番号) による取引銘柄の検索を気配値表示ウィンドウに追加しました。これで銘柄は名前、説明、ISINによって追加できます。



  2. 取引口座のパスワードを変更するとユーザーインターフェイスの速度が遅くなる問題を修正しました。
  3. クライアント端末による CPU 負荷増加の問題を修正しました。

MQL5

  1. WebRequest関数でのカスタム HTTP ヘッダの受け渡しを修正しました。
  2. 範囲の開始日と終了日が同じ場合のBars関数の動作を修正しました。バーがある場合、関数は 1 を返します。以前のバージョンでは、関数は無条件に 0 を返しました。

テスター

  1. フォワード最適化の後の、ビジュアルモードでのテストの開始を修正しました
  2. 最適化結果のソートを修正しました。現在のソートでは、誤った入力パラメータ(INIT_INCORRECT_PARAMETERS)と利益率のないパスを考慮に入れています。
  3. 最適化基準を変更した後の遺伝子最適化グラフの再計算を修正しました。

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

15 6月 2018
MetaTrader 5プラットフォームビルド1860:MQL5バー操作関数とストラテジテスターの改善

ターミナル

  1. 口座開設ダイアログが完全に再設計されました。リストからブローカーを選択し、希望の口座タイプを選択することができるようになりました。利用可能なすべてのサーバではなく会社名のみが表示されるようになったため、ブローカーリストがよりコンパクトになりました。

    検索をより簡単かつ効率的にするために、会社のロゴがリストに追加で表示されます。望まれるブローカーがリストに表示されていない場合は、検索ボックスに会社名またはサーバーアドレスを入力し、[ブローカーを検索]をクリックします。




    初心者が正しい口座を選択できるように、ダイアログに口座タイプの説明が追加されました。また、一般データ保護規則(GDPR)に準拠するために、更新されたダイアログにはブローカーのアグリーメントおよびデータ保護ポリシーへのリンクが含まれている場合があります。




    実際の口座開設の可能性は大幅に拡大しました。前から携帯端末にあったIDと住所確認書類をアップロードする機能が、デスクトップ版で利用できるようになりました。MiFID規制ブローカーは、雇用、所得、取引経験などの情報を含む、必要なクライアント識別データを要求することができるようになりました。この新しい機能によって、実際の口座を不必要な官僚的手続きなしにより迅速かつ簡単に開けるようになります。




  2. 取引履歴がストップロスとテイクプロフィットの値を表示するようになりました。エントリのストップロス/テイクプロフィットの値と反対の取引はこれらの取引の元となった注文のストップロス/テイクプロフィットに基づいて設定されます。該当するポジションの決済時のストップロス/テイクプロフィットの値が決済に使われます。後者は、決済の時点でポジションのストップロスとテイクプロフィットに関する情報を保存して表示することができます。取引終了後にポジションが消滅し、ターミナルのポジション履歴は取引に基づいて生成されていたため、この情報は、以前のバージョンでは格納されていませんでした。




  3. ポジション履歴がストップロスとテイクプロフィットの値を表示するようになりました。適切なポジションを開いたり閉じたりする取引のストップロス/テイクプロフィットがポジションに指定されます。




  4. チャートに最初に要求されたボリュームではなく現在の未決注文量が表示されるようになりました。




  5. 拡張モードで板情報機能の最適化された高速レンダリングが可能になりました。
  6. 取引要求実行結果の処理を最適化しました。この最適化により、場合によっては処理がはるかに高速になります。
  7. 同じポジションに複数のストップロス変更要求が送信されることがあるというトレール注文操作のエラーを修正しました。
  8. 最小および最大ボリュームの設定とカスタム銘柄設定のボリュームステップを修正しました。
  9. テンプレートを銘柄チャートに適用するときに、「フィックススケール」オプションが無視されることがあるというエラーを修正しました。
  10. ティック履歴の蓄積の誤りを修正しました。

MQL5

  1. コンパイル時のソースコードの最適化によってMQL5アプリケーションがスピードアップしました。より高速な実行には、新しいMetaEditorバージョンでプログラムを再コンパイルします。
    残念ながら、この新しい最適化により、新しいプログラムは以前のターミナルバージョンとの互換性がありません。MetaEditorバージョン1860以降でコンパイルされたプログラムは、1860以下のターミナルバージョンでは起動できません。古いバージョンのMetaEditorでコンパイルされたプログラムは、新しいターミナルでも実行できます。

  2.  新しい関数: iTime、iOpen、iHigh、iLow、iClose、iVolume、iBars、iBarShift、iLowest、iHighest、iRealVolume、iTickVolume、iSpreadこれらの関数は、MQL4で使用される関数に似ており、取引アプリケーションのコードを第5世代のプラットフォームに簡単に転送できますs。

    以前は、これらの関数を使用して実行されたタスクのほとんどは、Copy *関数を使用して実装できましたが、チャート上のHigh/Low値を検索し、その時間に基づいてバーを検索するためには独自の関数を実装する必要がありました。これらのタスクはiHighest、iLowest、iBarShiftの各関数を使って簡単に実行できるようになりました。

    iTime
    対応するチャートのバー( 'shift'パラメータで示されます)の開いた時間を返します。
    datetime  iTime(
       string           symbol,          // 銘柄
       ENUM_TIMEFRAMES  timeframe,       // 期間
       int              shift            // シフト
       );

    iOpen
    対応するチャートのバー( 'shift'パラメータで示されます)の始値を返します。
    double  iOpen(
       string           symbol,          // 銘柄
       ENUM_TIMEFRAMES  timeframe,       // 期間
       int              shift            // シフト
       );

    iHigh
    対応するチャートのバー( 'shift'パラメータで示されます)の高値を返します。
    double  iHigh(
       string           symbol,          // 銘柄
       ENUM_TIMEFRAMES  timeframe,       // 期間
       int              shift            // シフト
       );

    iLow
    対応するチャートのバー( 'shift'パラメータで示されます)の安値を返します。
    double  iLow(
       string           symbol,          // 銘柄
       ENUM_TIMEFRAMES  timeframe,       // 期間
       int              shift            // シフト
       );

    iClose
    対応するチャートのバー( 'shift'パラメータで示されます)の終値を返します。
    double  iClose(
       string           symbol,          // 銘柄
       ENUM_TIMEFRAMES  timeframe,       // 期間
       int              shift            // シフト
       );

    iVolume
    対応するチャートのバー( 'shift'パラメータで示されます)のティックボリュームを返します。
    long  iVolume(
       string           symbol,          // 銘柄
       int              timeframe,       // 期間
       int              shift            // シフト
       );

    iBars
    履歴で使用可能な、対応する銘柄と期間のバーの数を返します。
    int  iBars(
       string           symbol,          // 銘柄
       ENUM_TIMEFRAMES  timeframe        // 期間
       );

    iBarShift
    時間によってバーを探します。この関数は、指定された時間に対応するバーのインデックスを返します。
    int  iBarShift(
       string           symbol,          // 銘柄
       ENUM_TIMEFRAMES  timeframe,       // 期間
       datetime         time,            // 時間
       bool             exact=false      // モード
       );

    iLowest
    対応するチャートで見つかった最小の値のインデックスを返します(現在のバーとの相対的な移動)。
    int  iLowest(
       string           symbol,          // 銘柄
       ENUM_TIMEFRAMES  timeframe,       // 期間
       int              type,            // 時系列ID
       int              count,           // 要素数
       int              start            // インデックス
      );

    iHighest
    対応するチャートで見つかった最大の値のインデックスを返します(現在のバーとの相対的な移動)。
    int  iHighest(
       string           symbol,          // 銘柄
       ENUM_TIMEFRAMES  timeframe,       // 期間
       int              type,            // 時間series identifier
       int              count,           // 要素数
       int              start            // インデックス
      );

    iRealVolume
    対応するチャートのバー( 'shift'パラメータで示されます)の実のボリュームを返します。
    long  iRealVolume(
       string           symbol,          // 銘柄
       ENUM_TIMEFRAMES  timeframe,       // 期間
       int              shift            // シフト
       );

    iTickVolume
    対応するチャートのバー( 'shift'パラメータで示されます)のティックボリュームを返します。
    long  iTickVolume(
       string           symbol,          // 銘柄
       ENUM_TIMEFRAMES  timeframe,       // 期間
       int              shift            // シフト
       );

    iSpread
    対応するチャートのバー( 'shift'パラメータで示されます)のスプレッドボリュームを返します。
    long  iSpread(
       string           symbol,          // 銘柄
       ENUM_TIMEFRAMES  timeframe,       // 期間
       int              shift            // シフト
       );
  3. 新しいTesterHideIndicators関数が追加されました。エキスパートアドバイザーで使用される指標の表示/非表示モードを設定します。この関数は、テスト中にのみ指標の可視性を管理するために使用されます。作成した指標を非表示にする必要がある場合はtrueに設定します。そうでなければfalseを使用します。
    void  TesterHideIndicators(
       bool      hide     // フラグ
       );
  4. チャート上の取引レベルのクリックによるCHARTEVENT_CLICKイベントの生成が追加されました。
  5. CopyTicks関数の動作を修正し、最適化しました。
  6. SymbolInfoDouble関数がSYMBOL_TRADE_LIQUIDITY_RATEプロパティのために返す値を修正しました。
  7. 重複するメモリを持つ文字列配列のコピーを修正しました。
  8. FileReadArray配列で文字列配列の割り当てを修正しました。
  9. MQL5標準ライブラリのエラーを修正しました。

テスター

  1. 最適化キャッシュを使用するためのシステムを更新しました。キャッシュには、以前に計算された最適化パスに関するデータが格納されます。ストラテジーテスターは、一時停止後に最適化を再開できるようにデータを保存し、すでに計算されたテストパスの再計算を回避します。

    最適化キャッシュ保存形式の変更
    以前のバージョンでは、最適化キャッシュは1つのXMLファイルとして保存されていました。すべてのエキスパートアドバイザー最適化パスが指定されたテスト設定でこのファイルに追加されました。したがって、同じファイルには、異なる入力パラメータを使用した最適化結果が格納されています。
    最適化キャッシュは、最適化されたパラメータのセットごとに別々のバイナリファイルとして格納されるようになりました。ストラテジーテスターの最適化キャッシュに関する操作は、新しい形式とファイルサイズの縮小により大幅に高速化されています。加速は、一時停止した最適化パスを再開すると特に顕著になります。

    以前の最適化の結果を表示
    以前の最適化の結果をストラテジーテスターですぐに見ることができるようになったため、サードパーティのソフトウェアを使用して巨大なXMLファイルを分析する必要がなくなりました。[最適化結果]タブを開き、エキスパートアドバイザーと最適化キャッシュを含むファイルを選択します。



    このリストには、選択したエキスパートアドバイザーのディスクに存在するすべての最適化キャッシュファイルが含まれています。各ファイルの最適化の日付、テスト設定(銘柄、時間枠、間隔)および入力パラメータが表示されます。最適化結果は、結果が得られた取引サーバによってさらにフィルタリングすることができます。

    オンザフライでの最適化基準の再計算
    最適化基準はある可変パラメータで、その値によって、テストされた入力セットの品質が決定されます。最適化基準の値が高ければ高いほど、与えられたパラメータセットによるテスト結果は良好であると考えられます。

    以前は、最適化中には最適化開始前に選択された基準が1つしか計算されませんでした。結果を見るときに最適化基準を即座に変更し、ストラテジーテスターは自動的にすべての値を再計算するようになりました。




    最適化キャッシュの手動使用
    以前のバージョンでは、最適化キャッシュはXMLファイルとして保存されており、このファイルは、サードパーティのソフトウェアを使用して開いて分析することができました。これが、閉じたバイナリファイルに保存されるようになりました。データをXML形式で取得するには、[最適化結果]タブのコンテキストメニューを使用してデータをエクスポートします。

  2. テスト通貨と最適化のために預金通貨とレバレッジを手動で設定する可能性が追加されました。以前のバージョンでは、通貨は接続された口座に従って設定されていたため、通貨を変更するには、他の口座に接続する必要がありました。レバレッジサイズは、以前は事前に定義されたリストからのみ選択することができましたが、任意の値を指定できるようになりました。

    適切なテストを確実に行うためには、利益と証拠金を特定の預金通貨に変換するためのクロスレートがアカウントで利用可能でなければならないことに注意してください。




  3. テスターエージェントでOpenCLを使用できるようになりました。以前、OpenCLデバイスはローカルエージェントでテストするときにのみ使用できました。エージェントは、ローカルネットワークやMQL5クラウドネットワークで作業するときに、利用可能なすべてのOpenCLデバイス(プロセッサ、ビデオカードなど)を使用することができるようになりました。

MetaEditor

  1. MQL5ストレージでの作業を最適化してスピードアップしました。
  2. MQHファイルの一時停止後のデバッグプロセスの再開を修正しました。
  3. エディタでのコード強調表示を修正しました。
  4. 検索結果のナビゲーションを修正しました。
  5. 大量テキスト置換機能を修正しました(すべてではなく最初のオカレンスだけが置き換えられている場合がありました)。

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

18 1月 2018
MetaTrader 5 プラットフォームビルド1755

ターミナル

  1. ターミナルとMetaEditorがWindowsのシャットダウンと再起動をブロックするエラーを修正しました。
  2. テンプレート適用の際のチャートのずれを修正しました。

MQL5

  1. 一部の条件でコンパイルが遅くなるエラーを修正しました。

クラッシュログで報告されたエラーを修正しました。

12 1月 2018
MetaTrader 5 プラットフォームビルド1745

MetaTrader 5ビルド1745は、Microsoft Windows XP /2003/Vistaをサポートする最後のプラットフォームバージョンとなります。

当社は数ヶ月前に古いオペレーティングシステムサポートの終了(英語)を発表しました。Windows 2003、Windows Vista、特にMicrosoft Windows XPは、古いオペレーティングシステムです。技術的な制限によってWindows XPでの潜在的なハードウェア機能の実現が難しくなったため、マイクロソフトは3年前にこのオペレーティングシステムのサポートを終了しました。

MetaTrader 5ビルド1745およびそれ以前のバージョンは、上記のオペレーティングシステムで引き続き動作しますが、アップデートを受け取ることはできません。また、インストーラはこれらのオペレーティングシステムでは動作しなくなります。

MetaTrader 5を実行するために最低限必要なオペレーティングシステムのバージョンはWindows 7となりますが、Windows 10の64ビット版の使用が強く推奨されます。

ターミナル

  1. インストーラに/autoキーが追加されました。これにより、追加の操作を必要とせずに自動モードでプログラムをインストールできるようになります。このキーを使用してインストーラを起動すると、インストール設定がユーザに表示されず、ターミナルは標準のスタートメニューフォルダ名で標準パスにインストールされます。下記は起動例です。
    C:\mt5setup.exe /auto
  2. オペレーティングシステムのユーザに適切な権限がない場合のインストーラの動作を修正しました。
  3. 端末で何も処理が行われていないとき(開いているチャートがなく、ユーザーが何もしていないとき)にCPUリソースが過剰に消費される問題を修正しました。
  4. 新しいバージョンは、* .logファイルをファイルシステムレベルで自動的に圧縮します。この新機能により、ログで使用されるディスク容量を削減できます。

テスター

  1. 1回のテスト実行でのキャッシュを増やしました。これにより、64ビットオペレーティングシステムでのテストが高速になります。
  2. MQL5クラウドネットワークによる自動売買ロボットの最適化を修正しました。問題はMetaTraderマーケットから購入した製品で発生する可能性がありました。
  3. 「全ティック」テストモードで生成されたバーのスプレッドの計算を修正しました。
  4. ストラテジーテスターのOpenCLデバイス選択を修正しました。ビジュアルテスターは、利用可能なすべてのOpenCLデバイスにアクセスできるようになりました。
  5. 新しいバージョンは、* .logファイルをファイルシステムレベルで自動的に圧縮します。この新機能により、ログで使用されるディスク容量を削減できます。

MQL5

  1. CustomRatesDeleteメソッドを使用したカスタム銘柄バーの削除を修正しました。
  • クラッシュログで報告されたエラーを修正しました。
  • ドキュメントが更新されました。
20 12月 2017
MetaTrader 5ビルド1730: MetaEditorでのプロジェクトと合成金融商品

古い端末バージョンのサポートの終了

旧バージョンのデスクトップおよびモバイル端末のサポートは、新しいプラットフォームバージョンのリリースによって終了します。

  • クライアント端末:730(2012年9月23日)以前のバージョン
  • iPhone用モバイル端末:1171(2015年11月11日)以前のバージョン
  • Android用モバイル端末:1334(2016年8月5日)以前のバージョン

サポートされていない端末のビルドは、新しいサーバーバージョンに接続することはできません。事前に端末を更新することを強くお勧めします。

MQL5ストレージ運用プロトコルの変更

新しい共有プロジェクトをサポートするため、MQL5ストレージの運用プロトコルを更新しました。したがって、プラットフォームの更新後にはストレージからすべてのデータのチェックアウトを実行してください。更新中にMQL5ストレージに保存されたデータが失われたり影響を受けたりすることはありません。
プラットフォームを新しいバージョンに更新する前に、Commit操作を実行してすべてのローカル変更をMQL5ストレージに送信することをお勧めします。

ターミナル

  1. 取引プラットフォームで合成金融商品(1つまたは複数の既存の商品に基づく銘柄)を作成することができるようになりました。クオーツの計算式を設定すると、プラットフォームは実時間で合成製品のティックと分足の履歴を作成します。


    仕組み

    • 合成製品を作成し、価格計算の数式を設定します。
    • 数式で使用される少なくとも1つの製品の価格が変更された場合、プラットフォームは1秒あたり10回の頻度でティックを計算します。
    • プラットフォームはまた、過去2ヶ月間の分足の履歴を、数式で使用される製品の分足に基づいて計算します。合成製品の生成されたティックに基づいて、新しいバー(現在およびそれ以降のもの)はすべて実時間で描画されます。

    例えば ドルインデックス(USDX)を示す製品の作成が可能です。それには下記の数式が使われます。

    50.14348112 * pow(ask(EURUSD),-0.576) * pow(USDJPY,0.136) * pow(ask(GBPUSD),-0.119) * pow(USDCAD,0.091) * pow(USDSEK,0.042) * pow(USDCHF,0.036)

    注:元のドルインデックス式でUSDEURとUSDGBPのペアが使用されます。プラットフォームでは逆ペアのみが使用可能であるため、合成銘柄式は負のパワーと、ビッドの代わりにアスクが使用されます。

    プラットフォームは、ブローカーによって提供された他の6銘柄のクオーツに基づいて、新しい製品の価格を実時間で計算します。価格の変更は[気配値表示]ウィンドウとチャートで視覚化されます。




    新しいカスタム銘柄を作成し、その仕様を開き、式を入力します。




    便宜上、数式エディタには銘柄や関数の名前を入力するときに可能なオプションのリストが表示されます。
    合成製品が[気配値表示]に追加されると、そのティックと分足バーの計算が開始されます。また、合成価格計算に必要な銘柄は自動的に[気配値表示]に追加されます。計算開始のエントリ("Synthetic Symbol USDX: processing started")がプラットフォームの操作ログに追加されます。
    • 合成製品が[気配値表示]から取り除かれると、その計算は停止されます。
    • 合成銘柄価格の計算に現在使用されている銘柄は、[気配値表示]で非表示にすることはできません。

    クオーツの実時間計算
    計算に使用される銘柄の価格が100ミリ秒ごとに(すなわち毎秒10回)確認されます。それらのうちの少なくとも1つが変更されると、合成銘柄の価格が計算され、新しいティックが生成されます。計算は、3つのスレッドで並列に実行され、ビッド、アスク、及びラストの価格で実行されます。たとえば、計算式がEURUSD*GBPUSDの場合、合成銘柄の価格は次のように計算されます。
    • Bid = bid(EURUSD)*bid(GBPUSD)
    • Ask = ask(EURUSD)*ask(GBPUSD)
    • Last = last(EURUSD)*last(GBPUSD)

    変更の可用性は価格ごとに個別に確認されます。たとえば、元の製品のビッドのみが変更された場合、合成製品の適切な価格だけが計算されます。

    分足の履歴の作成
    プラットフォームは、ティックを実時間で収集するだけでなく、合成製品の分足の履歴も作成します。通常の製品と同様に、合成製品チャートを表示したりオブジェクトや指標を使用してテクニカル分析を行うことができます。

    [気配値表示]に合成製品が追加されると、プラットフォームは計算された分足の履歴が存在するかどうかを確認します。存在しなければ、過去60日間の履歴が作成され、これには約5万のバーが含まれます。プラットフォーム設定の[Max. bars in chart](チャートでのバーの最大数) パラメータに値が指定されている場合は、その値が適用されます。

    この期間の一部のバーが既に作成された場合、プラットフォームは新しいバーを追加生成します。ユーザがより古い期間のチャートを表示しようとする(スクロールしたり、MQL5プログラムからアクセスしたりする)と、より古い履歴が作成されます。
    合成製品の分足の履歴は、その数式で使用される製品の分足(ティックではない)に基づいて計算されます。たとえば、合成銘柄の分足の始値を計算するには、プラットフォームはその数式で使用されている銘柄の始値を使用します。高値、安値、終値も同じように計算されます。
    必要なバーがいずれの製品でも利用できない場合、プラットフォームは前のバーの終値を使用します。たとえば、EURUSD、USDJPY、GBPUSDの3つの製品が使用されるとします。12:00に対応するバーの計算でUSDJPYの必要なバーが利用できない場合、以下の価格が計算に使用されます。

    • 始値:EURUSD Open 12:00, USDJPY Close 11:59, GBPUSD Open 12:00
    • 高値:EURUSD High 12:00, USDJPY Close 11:59, GBPUSD High 12:00
    • 安値:EURUSD Low 12:00, USDJPY Close 11:59, GBPUSD Low 12:00
    • 終値:EURUSD Close 12:00, USDJPY Close 11:59, GBPUSD Close 12:00

    数式で使用されているすべての製品での分足が使用できない場合、合成製品の分足は計算されません。

    新しい分足の描画
    合成製品の新しいバー(現在および次のもの)はすべて生成されたティックに基づいて作成されます。バーを構築するのに使われる価格は[Chart mode](チャートモード)パラメーター値に基づきます。



    銘柄式で可能な操作
    ブローカーが提供する既存銘柄の価格データといくつかのプロパティは、合成価格の計算に使用できます。下記を指定します。
    • Symbol name - 計算する合成価格に応じて、指定された製品のビッド、アスク、またはラストが使用されます。たとえば、EURUSD*GBPUSDが指定されている場合、ビッドはbid(EURUSD)*bid(GBPUSD)として計算され、アスクはask(EURUSD)*ask(GBPUSD)となります。
    • bid(symbol name) - 指定された銘柄のビッド価格は強制的に、合成銘柄のビッド価格の計算に使用されます。このオプションは、前のタイプ(価格タイプが指定されていない場合)に似ています。
    • ask(symbol name) - 指定された銘柄のアスク価格が合成銘柄のアスク価格の計算に使用されます。指定された製品のビッド価格がアスクの計算に使用されます。指定された銘柄のラスト価格が、ラストの計算に使用されます。ask(EURUSD)*GBPUSDが指定されている場合は次の計算が使用されます。
      • Вid = ask(EURUSD)*bid(GBPUSD)
      • Ask = bid(EURUSD)*ask(GBPUSD)
      • Last = last(EURUSD)*last(GBPUSD)
    • last(symbol name) — 指定された銘柄のラスト価格は、合成楽器のすべての価格(ビッド、アスク、ラスト)の計算に使用されます。last(EURUSD)*GBPUSDが指定されている場合は次の計算が使用されます。
      • Вid = last(EURUSD)*bid(GBPUSD)
      • Ask = last(EURUSD)*ask(GBPUSD)
      • Last = last(EURUSD)*last(GBPUSD)
    • volume(symbol name) — 指定された銘柄のティック数量が計算式で使用されます。ブローカーがこの銘柄の数量情報を提供していることを確認してください。
    • point(symbol name) — 指定された製品の最低価格の変更が計算に使用されます。
    • digits(symbol name) — 指定された銘柄価格の小数点以下の桁数が数式で使用されます。

    銘柄名が複雑(ハイフン、ドットなどを含む)な場合は、引用符で囲みます(例:"RTS-6.17")。
    加算(+)、減算( - )、乗算(*)、除算(/)、除算残差(%)の演算では、以下の算術演算を使用できます。例えば、EURUSD+GBPUSDは価格がEURUSD及びGBPUSDの価格の和として計算されていることを意味します。また、単項マイナス演算子を使用して符号を変更することもできます(例:-10*EURUSD)。
    算術演算の計算優先順位に気を付けてください。
    • 乗算、除算、および剰余の演算が最初に実行され、次に加減算が実行されます。
    • 演算は左から右に実行されます。数式で同じ優先順位を持つ複数の演算(たとえば、乗算と除算)が使用されている場合は、左の演算が最初に実行されます。
    • 演算の優先獣医は括弧( と )を使用して変更できます。括弧内の演算の優先順位が計算の中で最も高くなります。左から右の原則もそれらに適用されます。左の括弧内の演算が最初に計算されます。

    数式で定数を使うことができます。

    • 数値(整数と浮動小数点数)(例:EURUSD*2+GBPUSD*0.7)。
    • _Digits 及び _Point.銘柄プロパティ:仕様からカスタム銘柄の適切な特性を数式に追加します。_Digitsは、銘柄価格の小数点以下の桁数を意味します。 _Pointは銘柄価格の最小変化を意味します。

    MQL5でサポートされた数学関数はMathSrand、 MathRand及びMathIsValidNumberを除いてすべて使用することができます。 fabs()、 acos()、asin()など、すべての関数の短い名前のみが使用されます。

  2. 新しいオプションが導入され、実時間でカスタム製品のクオーツを追加できます。指定したカスタム銘柄のクオーツを提供するMQL5エキスパートアドバイザーを開発することが可能になりました。これにはCustomTicksAdd関数が使用されます。
    int  CustomTicksAdd(
       const string           symbol,       // Symbol name
       const MqlTick&         ticks[]       // カスタム銘柄に適用する必要があるティックデータを持つ配列
       );
    CustomTicksAdd関数は、これらのクオーツがブローカーサーバから受信されたかのように提供することができます。データはティックデータベースに直接書き込まれるのではなく、[気配値表示]ウィンドウに送られます。ターミナルは次に、ティックを[気配値表示]からデータベースに保存します。1つの呼び出しで大量のデータが渡されると、リソースを節約するために関数の動作が変わります。256ティック以上送信された場合、データは2つの部分に分割されます。大きな部分はチックデータベースに直接記録されます(CustomTicksReplace同様)。最後の128ティックからなる第2の部分は[気配値表示]に送られ、そこからデータベースに保存されます。

  3. [気配値表示]ウィンドウに、高値と安値が追加されました。これらの列はデフォルトで非表示になっていて、コンテキストメニューを使用して有効にすることができます。



    銘柄チャートがビッド価格(仕様設定ごとに)を使用して作成されている場合、この銘柄の高ビッドと低ビッド価格が表示されます。ラスト価格を使用して作成されている場合、この銘柄の高ラストおよび低ラスト価格が表示されます。

    [気配値表示]にラストに基づいてチャートが描かれた銘柄が少なくとも1つ含まれている場合、高値と引く値に加えてラスト列も自動的に有効になります。
  4. カスタム金融商品のティック履歴を編集することができるようになりました。[気配値表示]のコンテキストメニューで[Symbols](銘柄)をクリックし、カスタム銘柄を選択し、[ティック]タブで必要なデータ間隔を要求します。

    • 値を変更するには、ダブルタップします。
    • エントリはコンテキストメニューを使用して追加または削除します。
    • 一度に複数のバー/ティックを削除する場合は、ShiftキーまたはCtrl + Shiftキーを押しながらマウスで選択します。




    便宜上、変更されたエントリは以下のように強調表示されます。

    • 緑色の背景 - 変更されたエントリ
    • 灰色の背景 - 削除されたエントリ
    • 黄色の背景 - 追加されたエントリ

    変更を保存するには、ウィンドウの下部にある[変更を適用]をクリックします。

  5. ナビゲータツリーに予備口座の表示を追加しました。

    実口座を開設するためのブローカーへの依頼はデスクトップターミナルから送信することができます。このためには、連絡先の詳細を記載した簡単なリクエストフォームに記入します。その後、トレーダーのために特別な予備口座が作成されます。ブローカーはトレーダーに連絡して関係を公式化し、予備口座を実口座に振り替えます。




  6. [Quotes](クオーツ)ウィンドウに時間のミリ秒表示を追加しました。



  7. 新規アカウントをを開くダイアログで利用可能なサーバーをスキャンする速度が向上しました。
  8. Ray LeftおよびRay Rightオプションが有効になっているときのトレンドライングラフィックスオブジェクトの表示を修正しました。
  9. 大量(数十万)の内部電子メールを伴う操作を最適化しました。
  10. 多数(5万以上)の取引商品を伴うターミナル操作を最適化しました。
  11. 履歴編集後に実行されるカスタム金融商品のティック履歴の最適化を追加しました。

MetaEditor

  1. MetaEditorでフル機能のプロジェクトを利用できるようになりました。プログラム開発プロセスがより便利になりました。
    現在、メインMQ5プログラムファイルはプロジェクトとして表示されません。このプロジェクトは、プログラム設定、コンパイルパラメータ、および使用されているすべてのファイルに関する情報を格納する別個の "MQPROJ"ファイルです。メインプロジェクト設定は別のダイアログボックスからアクセスできるため、ソースコードで#propertyで指定する必要はありません。

    プロジェクト内の作業で便利なように、[ナビゲータ]で別のタブが用意されています。インクルード、リソース、ヘッダー、その他のファイルなどのすべてのファイルが、カテゴリに整理されています。すべてのファイルが自動的にプロジェクトナビゲータに追加されます。たとえば、新しくインクルードしたMQHファイルは、ナビゲータの[Dependencies](依存ファイル)セクションに自動的に表示されます。.

    新規プロジェクトのサポートは、更新されたMQL5ストレージオンラインリポジトリにも実装されています。MQL5.comコミュニティの他のメンバーとのコラボレーションを通じた大規模なプロジェクトの開発がはるかに便利になりました。

    グループプロジェクトには新しい共有プロジェクトセクションが用意されています。このセクションで作成されたプロジェクトはすぐにストレージに送信されるため、他のユーザーに権限を与えればすぐにコラボレーションを開始できます。




    共有プロジェクトでプロジェクトをコンパイルすると、実行可能なEX5ファイルは、プログラムの種類に応じて自動的にローカルのエキスパート、指標またはスクリプトディレクトリにコピーされます。このため、手動でファイルをコピーすることなく、簡単にチャート上でプログラムを起動できます。


    MQL5ストレージ操作の新機能

    新しい共有プロジェクトのサポートを実装するために、MQL5ストレージ操作プロトコルを変更しました。したがって、プラットフォームの更新後にはストレージからすべてのデータのチェックアウトを実行してください。更新中にMQL5ストレージに保存されたデータが失われたり影響を受けたりすることはありません。

    プラットフォームを新しいバージョンに更新する前に、Commit操作を実行してすべてのローカル変更をMQL5ストレージに送信することをお勧めします。

    [Checkout from Storage](ストレージからチェックアウト)コマンドは使用できません。代わりに、[Activate MQL5 Storage](MQL5ストレージをアクティブ化)と [Update from Storage](ストレージからファイルを更新)コマンドを使用してデータを受け取ります。

    • 現在のMetaEditorインスタンスでMQL5ストレージが使用されていない場合は、ナビゲータウィンドウのコンテキストメニューで[Activate MQL5 Storage](MQL5ストレージをアクティブ化)をクリックします。ストレージ内で利用可能なすべてのカタログとファイルはローカルコンピュータにアップロードされます。
    • すでにストレージで作業している場合は、ナビゲータのルートMQL5要素のコンテキストメニューで[Update files from Storage](ストレージからファイルを更新)をクリックして、ストレージからデータを受け取ります。

    新規プロジェクト:作成および操作の詳細の例

    MetaEditorに新規プロジェクトエンティティが追加されました。プロジェクトとは、一般的なプログラムのプロパティと、使用されているすべてのファイルに関する情報を格納するmqprojファイルのことです。ソースコードで#propertyディレクティブを使用して手動で変更するのではなく、別のMetaEditorダイアログから便利にプログラムプロパティを管理できるようになりました。

    利用可能なコードがあれば、 [ソースから新規プロジェクトを作成]コマンドを使って簡単に新しいプロジェクトをテストすることができます。



    選択したファイルがあるディレクトリに、同じ名前とmqproj拡張子を持つ新しいプロジェクトファイルが作成されます。#propertyを介してソースコードで指定されたメインプログラムの名前、著作権、バージョン、開発者のサイトへのリンク、プログラムの説明などのプロパティは、プロジェクトに自動的に追加されます。

    プロジェクトファイル内のプログラムプロパティのセットの優先度は、プログラムコードで指定されたプロパティよりも高くなります。プロパティがプロジェクトとソースファイルの両方に指定されている場合は、プロジェクトのプロパティが使用されます。




    MQL5プログラムをコンパイルするための新しいオプションが2つ追加されました。

    • Enable additional optimization(追加の最適化を有効化):最適化を無効にしたアプリケーションのコンパイルは速くなりますが、実行は遅くなります。
    • Check floating point dividers(浮動小数点除数を確認):確認が無効になっていると、コード実行中にゼロ除算エラーが確認されないためアプリケーションは少し速く動作します。

    プロジェクトを操作するには、ナビゲータウィンドウで[プロジェクト]タブを使用します。このタブでは、プロジェクトで使用されるすべてのファイルが便利な形式で表示されます。プロジェクトがソースファイルから生成されると、使用されているすべてのインクルードファイル(メインのMQ5ファイルとインクルードファイルの#includeディレクトリを使用して指定)が自動的に[Dependencies](依存関係)セクションに追加されます。

    ソースコードに追加された新しいインクルードファイルは、プロジェクトナビゲータにも表示されます。使用されたヘッダーファイルはヘッダーセクションに追加されます。 プロジェクトでリソースとして使用される画像、音声、および他のMQL5プログラムは[リソース]セクションに追加されます。ソースコードを含むMQ5ファイルは[ソース]セクションに表示されます。[設定とファイル]セクションでは、テスト用のファイルとチャートテンプレートなど、他のファイルを追加できます。

    プロジェクトに既存のファイルを追加したり、そこからファイルを削除するには、コンテキストメニューコマンドを使用します。プロジェクトからファイルを削除する(バインディングを削除する)ことと、ハードディスクからファイルを完全に削除することが両方できるので、ファイルを削除するときは注意してください。




    新規プロジェクトの作成は、通常のMQL5プログラムの作成と同じくらい簡単です。[新しいプロジェクト]をクリックし、新しいプログラムのタイプを選択し、MQL5ウィザードでプロパティ(名前、イベントハンドラなど)を指定します。

    実行可能なEX5ファイルを作成するには、プロジェクトを開いてF7(コンパイルコマンド)を押すか、プログラムのメインMQ5ファイルを開いてコンパイルします。


    MQL5ストレージでの共有プロジェクト:操作の詳細

    共有プロジェクトは別の[共有プロジェクト]セクションから管理されます。まだストレージを接続していない場合は、目的のフォルダのコンテキストメニューから[Activate MQL5 Storage](MQL5ストレージをアクティブ化)コマンドを実行してください。MetaEditorは、ストレージに保存されたデータが含まれているかどうか、そして共有プロジェクトがあるかどうかを確認します。利用可能なすべてのデータがストレージから取得され、コンピュータにアップロードされます(チェックアウト操作)。 使用可能なグループプロジェクトが[共有プロジェクト]セクションに表示されます。プロジェクトを取得するには、コンテキストメニューの[Checkout from Storage](ストレージからチェックアウト)を実行します。

    新しいグループプロジェクトを作成するには、[共有プロジェクト]フォルダを選択して[新しいプロジェクト]をクリックします。





    次に、標準的なMQL5のステップを完了します。目的のプログラムのタイプ、名前、プロパティを設定します。グループプロジェクトの場合、他の参加者が簡単に見つけられるように、わかりやすくわかりやすい名前を使用する必要があります。 プロジェクト名にはスペースのないラテン文字のみ使用できます。

    作成されたオブジェクトはすぐにMQL5ストレージに追加されます。プロジェクトで使用されている標準ライブラリファイルはストレージに追加されないので、手動で追加することができます。

    他の参加者がプロジェクトで作業できるようにするには、そのプロパティを開きます。ここから、MQL5.communityログインを指定し、グループ作業の共通パラメータを設定することによって、選択したユーザに権限を与えることができます。

    • プライベートプロジェクト
    • 自由参加プロジェクト
    • リクエストによる参加プロジェクト




    グループプロジェクトをコンパイルすると、実行可能なEX5ファイルは、プログラムの種類に応じて自動的にローカルのエキスパート、指標またはスクリプトディレクトリにコピーされるため、適切なディレクトリに手動でそれをコピーすることなく、すぐにターミナルでプログラムを実行することができます。


    MQL5ストレージのパブリックプロジェクト:開発への参加

    上記のように、MQL5ストレージの各グループプロジェクトには共有設定があり、プロジェクトはプライベートにすることも、他のユーザーに公開することもできます。これで、自由に参加できるすべてのプロジェクトが別の[パブリックプロジェクト]タブに表示されます。

    誰もがエキサイティングなプロジェクトを見つけ、その開発に参加することができます。[Join](参加)をクリックし、ストレージからプロジェクトを受信するだけです。



    参加した各ユーザは読み取り専用権限を取得します。コードを送信するには、プロジェクトの作成者に連絡してください。作成者のログイン名は、コンテキストメニューからプロジェクトのプロパティを開くとわかります。

  2. プロパティとリソースをプログラムコードに簡単に挿入する機能が追加されました。たとえば、インクルードされたファイルをコードにすばやく追加することができます。"Insert—MQH as #incude"コマンドを使用して、所望されたインクルードファイルを選択します。選択したファイルへの正しいパスを含む#include指令がプログラムコードに挿入されます。



    同じメニューを使ってバイナリまたはテキスト配列の形式でプログラムコードファイルを追加することができます。とりわけ、エキスパートアドバイザーまたはインジケータを使用してチャートテンプレートを転送することができます。テンプレートをプログラムコードに配列として挿入し、ディスクに保存してからFileSave関数を使用します。その後、テンプレートは、ChartApplyTemplate関数を使用してエキスパートアドバイザーから適切なチャートに直接適用することができます。
    //+------------------------------------------------------------------+
    //| スクリプトプログラム開始関数                                     |
    //+------------------------------------------------------------------+
    void OnStart()
      {
    //--- バイナリ配列としてのテンプレートファイル
       unsigned char my_template[]=
         {
          0xFF,0xFE,0x3C, ... ,0x00 // この例のデータ配列は短くされている
         };
    //--- 保存及びテンプレートの適用
       if(FileSave("my_template.tpl",my_template))
         {
          Print("Custom template saved in \\MQL5\\Files");
          if(ChartApplyTemplate(0,"\\Files\\my_template.tpl"))
             Print("Custom template applied to the current chart");
          else
             Print("Failed to apply custom template");
         }
       else
          Print("Failed to save custom template");
      }

  3. ASCII、HEX、およびBase64形式の間で文字列を変換するためのオプションを追加しました。ソースコード内の行を選択し、[編集 - 変換]メニューで目的のコマンドをクリックします。




  4. ファイル内の大文字と小文字を区別しない検索を修正しました。
  5. x.y[0][1].zと似た式を計算するときに発生する可能性のあるデバッガエラーを修正しました。
  6.  進むボタンと戻るボタンを使用したコードナビゲーションを修正しました。

MQL5:

  1. カスタム金融製品を使うための新しい関数を追加しました。

    関数 アクション
    CustomSymbolCreate 指定されたグループに指定された名前を持つカスタム銘柄を作成する
    CustomSymbolDelete 指定された名前を持つカスタム銘柄を削除する
    CustomSymbolSetInteger カスタム銘柄の整数型プロパティ値を設定する
    CustomSymbolSetDouble カスタム銘柄のreal型プロパティ値を設定する
    CustomSymbolSetString カスタム銘柄の文字列型プロパティ値を設定する
    CustomSymbolSetMarginRate 注文の種類と方向に応じてカスタム銘柄の証拠金率を設定する
    CustomSymbolSetSessionQuote 指定した銘柄と曜日の指定されたクオーツセッションの開始時刻と終了時刻を設定する
    CustomSymbolSetSessionTrade 指定した銘柄と曜日の指定された取引セッションの開始時刻と終了時刻を設定する
    CustomRatesDelete 指定された時間間隔でカスタムシンボルの価格履歴からすべてのバーを削除する
    CustomRatesReplace 指定された時間間隔内のカスタム銘柄の価格履歴を、MqlRates型配列のデータで完全に置き換える
    CustomRatesUpdate カスタム銘柄履歴に不足しているバーを追加し、既存のデータをMqlRates型配列のものに置き換える
    CustomTicksAdd MqlTick型の配列からカスタム銘柄の価格履歴にデータを追加する(カスタム銘柄は[気配値表示]ウィンドウで選択)
    CustomTicksDelete 指定された時間間隔でカスタムシンボルの価格履歴からすべてのティックを削除する
    CustomTicksReplace 指定された時間間隔内のカスタム銘柄の価格履歴を、MqlTick 型配列のデータで完全に置き換える

  2. 新しいオンラインサービスMQL5クラウドプロテクターがMQL5プログラムの追加保護を提供するために追加されました。保護は、売り手によって提出されたEX5製品ファイルがネイティブコードにさらにコンパイルされるという、最大規模の取引アプリケーションストア MetaTraderマーケットで使用されるオプションと同様です。

    この種の保護がすべてのプラットフォームユーザーによって利用できるようになりました。ファイルを保護するには、MetaEditorで [ツール]—[MQL5 Cloud Protector]コマンドを実行します。マーケットで使用されているメカニズムとの唯一のMQL5クラウドプロテクターの違いは、ファイルがユーザーのコンピュータにリンクされていないことです。MQL5クラウドプロテクターで保護されたファイルは、一般的なEX5ファイルと同様にコンピュータで実行できます。
    MQL5クラウドプロテクターは安全なサービスです。 追加の保護は、コンパイルされたファイルにのみ適用されます。ソースコードはこのサービスに渡されません。最初のステップでは、プログラムはユーザーのコンピュータ上のEX5ファイルにコンパイルされます。 その後、コンパイルされたファイルが暗号化されたチャネルを介してサービスに送信され、そこで保護され、ユーザに返されます。



  3. 標準ライブラリにジェネリックデータコレクションを追加しました。これにはテンプレートに基づいてコレクションを定義するためのクラスとインターフェイスが含まれています。この新しい厳密に型指定されたコレクションによって、アプリケーション開発の利便性と高いデータ処理パフォーマンスが提供されます。

    ライブラリは、ターミナル作業ディレクトリのInclude\Genericフォルダにあります。

  4. unionデータ型テンプレートのサポートを追加しました。
  5. SYMBOL_VISIBLE取引製品プロパティを追加しました。SymbolInfoInteger(symbol, SYMBOL_VISIBLE) の呼び出しは、指定された銘柄が[気配値表示]に表示されない場合にfalseを返します。
  6. 新しい CHARTEVENT_MOUSE_WHEELプロパティを追加しました。このイベントは、チャート上でマウスホイールがスクロールまたは押されると呼び出されます(チャートの CHART_EVENT_MOUSE_WHEEL=trueの場合)。
  7. 下記のチャートプロパティを追加しました。

    • CHART_EVENT_MOUSE_WHEEL — CHARTEVENT_MOUSE_WHEEL(マウスのスクロールとチャートのクリックイベント)の生成を有効/無効にします(可能な値は0と1)。
    • CHART_CROSSHAIR_TOOL — 中クリックでカーソルを十字線モードに切り替える機能を有効/無効にします(可能な値は0と1)。
    • CHART_CONTEXT_MENU — チャートのコンテキストメニューを表示するための右クリックの使用を有効または無効にします(可能な値は0と1)。

  8. DRAW_NONEスタイルの描画バッファは、指標ウィンドウのスケールを計算する際には考慮されないようになりました。
  9. チャートのCHART_SCALEFIX(固定スケール)プロパティを設定するときのCHARTEVENT_CHART_CHANGEイベント生成を追加しました。
  10. ArraySwap関数を追加し、動的配列の内容をすばやく交換することができるようにしました。
    bool  ArraySwap(
       void&  array1[],      // 1番目の配列
       void&  array2[]       // 2番目の配列
       );
    この関数は、同じ型および同じ次元の動的配列を受け入れます。多次元配列の場合、最初の次元を除くすべての次元の要素の数は一致する必要があります。

  11. 新しいプロパティTERMINAL_RETRANSMISSIONを追加しました。これは、TCP/IPプロトコル内の特定のコンピュータ上のすべての実行中のアプリケーションとサービスの再送ネットワークパケット(再送信)の割合です。パケットロスは、最速かつ正しく設定されたネットワークでも発生します。この場合、受信者と送信者との間のパケット配信の確認はありません。したがって、失われたパケットが再送信されます。

    ターミナルはこの値を計算しません。1分に1回オペレーティングシステムから要求されます。これは特定のターミナルと取引サーバー間の接続品質を示すものではありません。これは、システムとバックグラウンドのアクティビティを含むネットワークアクティビティ全体の割合が計算されるためです。

    TERMINAL_RETRANSMISSIONプロパティがENUM_TERMINAL_INFO_DOUBLE列挙体に追加され、 TerminalInfoDouble関数によって取得されます。
  12. 取引操作の操作を最適化しました。

シグナル

  1. シグナルに従って開かれたポジションの強制決済の場合の注文タイプの表示を修正しました。シグナルのコピーオプションに[Stop if the account is lower than XXX USD](アカウントがXXX USDより低い場合は停止する)オプションを用意しました。エクイティが特定のレベルを下回ると、取引シグナルのコピーが自動的に終了し、すべてのポジションが決済されます。以前は、強制決済の場合にポジションを決済する注文に対して誤ったタイプが設定されていました。ターミナルは、銘柄設定において許容されるタイプを確認し、適切なオプションを指示するようになりました。

Tester

  1. ストラテジーテスターのHistoryOrderSelect関数の動作がクライアント端末の同じ関数に対応するようになりました。
  2. ストラテジーテスターのCopyTicks関数とCopyTicksRange関数の動作がクライアント端末の同じ関数に対応するようになりました。
  3. 視覚テスト中のグラフィックオブジェクトの表示を最適化しました。
  4. テスト結果の表示(為替リスク管理モデル)を修正しました。現在、チャートにはエクイティのみが表示されていて、残高と預金額は表示されていません。そのような口座の取引状況は、エクイティレベルに基づいて評価されます。残高は口座にある金額のみを表示し、トレーダーの資産および負債は無視します。為替計算モードでは証拠金は資産/負債の現在の割引価格と等しく、資本とともに変化するため、預金積み増し(証拠金/エクイティ)は表示されません。

  • ユーザインターフェイスがオランダ語でも利用できるようになりました。
  • ドキュメントを更新しました。
  • 23 8月 2017
    iOS版MetaTrader 5ビルド1649、金融商品の市場統計

    この新しいバージョンでは、取引実行モードで取引されている金融商品の市場統計を表示することができます。統計を表示するには、気配値表示で任意の銘柄のメニューを開いて「統計」を選択します。


    「取引」タブでのポジション操作がより便利になりました。ポジションや注文をシングルタップすると、ポジション銘柄のチャートを開くだけでなく、ポジションボリュームを決済する、変更する、または増やすなどの詳細な情報と利用可能なアクションが表示されます。

    2 8月 2017
    MetaTrader5 Android build 1642: ライブ口座のかんたんなリクエスト方法

    Android用のMetaTrader5では、予備の口座を簡単に作成できます。 メニューから"ライブアカウントを開設"を選択し、サーバーのリストの中からブローカーを見つけてください。 IDの書類と銀行口座の明細の二つが必要です。 リクエストはブローカーに送信され、口座開設に必要な追加情報を求められます。




    21 7月 2017
    MetaTrader 5プラットフォームビルド1640:カスタムシンボルの作成とテスト

    ターミナル

    1. ターミナルにカスタム金融商品を作成することができるようになりました。この新しいオプションを使用すると、任意のシンボルを作成してその設定を構成し、シンボルに価格データをインポートしてチャートを表示できます。

      カスタムシンボルの作成
      板情報コンテキストメニューを使用してシンボル管理ウィンドウを開き「カスタムシンボルの作成」をクリックします。


      多数のシンボルパラメータの設定が可能です。パラメータとその説明の完全なリストは ドキュメントでみられます。カスタムシンボルは、同様のシンボルのパラメータをコピーして変更することで素早く設定することができます。「コピー元」フィールドで既存のシンボルを選択します。
      カスタムシンボルの名前は、ブローカーによって提供されるシンボルの名前と同じであってはなりません。同じ名前のシンボルが存在するサーバーに接続すると、カスタムシンボルが削除されます。
      ここではパラメータのインポートとエクスポートのコマンドも利用できます。カスタムシンボルはターミナル間で簡単に共有または転送することができます。設定はJSONテキストファイルにエクスポートされます。
      カスタムシンボルの管理
      すべてのシンボルは、個別のカスタムグループに表示されます。シンボルを変更または削除する必要がある場合は、リストのコンテキストメニューを使用します。



      価格履歴のインポート
      価格データは、任意のテキストファイル、およびMetaTrader履歴ファイル(HSTとHCC )からカスタムシンボルにインポートすることができます。シンボルを選択して「バー」タブに移動します。


      インポートダイアログで、ファイルへのパスを指定し、必要なパラメータを設定します。

      • Separator — テキストファイルの要素セパレータ
      • Skip columns and rows — インポート中にスキップされる列(左から右)と行(上から下)の量
      • Shift — 時間単位の時間シフト。このオプションは、異なるタイムゾーンに保存されたデータをインポートするときに使用されます。
      • Use selected only — 行ビュー領域で強調表示された行のみをインポートします。行はCtrlキーまたはShiftキーを長押しすると強調表示できます。

      分足のファイルは「日付 時刻 始値 高値 安値 終値 ティックボリューム ボリューム スプレッド」の形式を持つはずです。例:
      2016.06.27    00:01:00    1.10024    1.10136    1.10024    1.10070    18    54000000    44
      2016.06.27    00:02:00    1.10070    1.10165    1.10070    1.10165    32    55575000    46
      2016.06.27    00:03:00    1.10166    1.10166    1.10136    1.10163    13    13000000    46
      2016.06.27    00:04:00    1.10163    1.10204    1.10155    1.10160    23    51000000    41
      カスタムシンボルでは任意の既存製品のデータを使用することができます。データをエクスポートし(このオプションは以前のプラットフォームのバージョンで追加されました)、必要に応じて変更し、データをインポートし直します。
      価格履歴はMetaTrader 5に分足バーの形で保存され、他のすべての時間枠は、これらのバーに基づいて作成されます。また、より長い時間枠のデータをインポートすることもできますが、より短い時間枠のチャートではギャップが生じます。たとえば、時間足のデータをインポートすると、1時間に1つのバーがM1チャートに表示されます。
      カスタムシンボルの価格データは、下記のような別のカスタムディレクトリに保存されます(取引サーバのデータが保存されているディレクトリではありません)。
      C:\Users\[windows account]\AppData\Roaming\MetaQuotes\Terminal\[instance id]\bases\Custom

      カスタムシンボルの使用
      カスタムシンボルの使用は、ブローカーが提供する製品の使用に似ています。カスタムシンボルは板情報ウィンドウに表示され、 シンボルのチャートを開いたり、その上に指標や分析オブジェクトを適用することができます。カスタムシンボルは取引できません。

      カスタムシンボルのテスト戦略
      カスタムシンボルはストラテジーテスターでの自動売買ロボットや指標のテストに使用できます。これにより、ブローカーが現在提供できない銘柄についても戦略の最適化が可能になります。履歴を正しくインポートし、カスタムシンボルのプロパティを設定するだけです。



      ストラテジーテスターは証拠金と利益を計算するときには自動的に利用可能なクロスレートを使用します。 Forexタイプの証拠金計算を使用してAUDCAD.customシンボルを作成し、口座通貨をUSDにしたとします。この場合、テスターはForexシンボル名に基づいて次の順序で必要なシンボルを検索します。
      1.     まず、AUDUSD.custom(証拠金計算用)とUSDCAD.custom(取引利益計算用)のシンボルの検索が実行されます。
      2.     これらのシンボルがいずれも存在しない場合、必要な通貨ペアに対応する最初のシンボル(名前はそれぞれAUDUSDおよびUSDCAD)の検索が実行されます。たとえば、AUDUSD.bとNZDUSD.bのシンボルが見つかると、証拠金と利益を計算するためにはそれらのレートが使用されます。

      他種の証拠金計算を持つ製品(先物取引および証券取引所)では、商品通貨を預金通貨に変換するために通貨ペアが必要です。預金通貨がCHFであり、利益および証拠金通貨がGBPで表されるカスタムシンボルを作成したとします。この場合、テストシンボルの検索は次の順序で実行されます。
      1. GBPCHF(GBP対CHF)に対応する取引シンボルの存在が確認される。
      2. そのようなシンボルが存在しない場合、GBPCHFに対応する最初の取引シンボル(GBPCHF.bまたはGBPCHF.defなど)が検索される。

      カスタム製品を使用してアプリケーションをテストする場合は、取引口座に必要な通貨ペアがすべてあることを確認してください。ペアが欠如している場合、テスト中の取引結果と証拠金の計算は不可能です。

      今後のプラットフォームでは可能性がさらに広がる
      カスタムシンボルの開発はまだ完了しておらず、次のビルドでも多くの機能が追加される予定です。エキスパートアドバイザーからカスタムシンボルに直接履歴をインポートできるだけでなく、そのようなシンボルのデータ(クオーツを追加)を実時間でインポートすることもできます。

    2. Time&Sales機能にボリュームによるフィルタリングを追加しました。

      指定された値未満のボリュームを持つ取引は、Time&Salesテーブルから非表示にすることができます。このフィルタが適用されていると「Time&Sales」ウィンドウには大きな取引だけが表示されます。
      Time&Salesウィンドウの最初の行をダブルクリックして最小ボリュームを指定し、板情報の他の領域をクリックします。取引がフィルタリングされ、現在のフィルタ値がボリューム列ヘッダーに表示されます。


      Time&Salesのコンテキストメニューを使用して最小ボリュームを指定することもできます。

    3. 板情報をアクティブチャートにバインドするオプションを追加しました。金融商品のチャートに切り替えるたびに、板情報ウィンドウで同じ商品が自動的に有効になります。したがって、新しいシンボルごとに板情報ウィンドウを開く必要はありません。



    4. ターミナルウィンドウを最小化/最大化した後のツールバーのリフレッシュを修正しました。
    5. 取引チケットとポジションチケットが重なった場合のポジション取引履歴の生成を修正しました。

    MQL5

    1. MQL5プログラムを価格履歴でプロファイリングするオプションが追加されました。このオプションを使うと、新しいティックを待たずにプログラムの性能を確認することができます。
      実際のデータに基づいてプロファイリングする場合、プログラムはターミナルの通常のチャートで起動されます。多くのプログラム、特に指標は、新しいティックの到着時にのみ計算を実行するため(OnTickOnCalculate)、その性能を評価するためには、実時間で新しいティックを待たなければなりません。履歴データを使用したプログラムのテストでは、必要な負荷をすぐに提供できます。プロファイリングはストラテジーテスターのビジュアルモードで開始され、一度に多くの新しいティックイベントが受信されます。



    2. unionサポートを追加しました。unionは、同じメモリ領域を共有する複数の変数からなる特別なデータ型で、同じビットシーケンスを2つ(またはそれ以上)の異なる方法で解釈する能力を提供します。unionの宣言は 'union'キーワードで始まります。
      union LongDouble
      {
        long   long_value;
        double double_value;
      };
      構造体とは異なり、さまざまなunionメンバは同じメモリ領域に属します。この例では、LongDoubleのunionは、long型とdouble型の値が同じメモリ領域を共有するように宣言されています。long_valueとdouble_value変数が(メモリ内で)重複しているので、構造体とは異なり、long型の値とdouble型の実数値を同時に格納することはできません。一方、MQL5プログラムは、unionからのデータをいつでも整数(long)または実数(double)として 処理することができるため、unionでは、同じデータシーケンスを表す2つ(またはそれ以上)のオプションを受け取ることができます。

      unionの宣言中に、コンパイラは、変数unionに最大(サイズ)の型を格納するのに十分なメモリ領域を自動的に割り振ります。union要素にアクセスするためには、構造体要素にアクセスするのと同じ構文(点演算子)が使用されます。
      union LongDouble
      {
        long   long_value;
        double double_value;
      };
      //+------------------------------------------------------------------+
      //| スクリプトプログラム開始関数                                    |
      //+------------------------------------------------------------------+
      void OnStart()
        {
      //---
         LongDouble lb;
      //--- 無効な-nan(ind)番号を取得して表示する
         lb.double_value=MathArcsin(2.0);
         printf("1.  double=%f                integer=%I64X",lb.double_value,lb.long_value);
      //--- 正規化された最大値l(DBL_MAX)
         lb.long_value=0x7FEFFFFFFFFFFFFF;
         printf("2.  double=%.16e  integer=%I64X",lb.double_value,lb.long_value);
      //--- 正規化された最小正 (DBL_MIN)
         lb.long_value=0x0010000000000000;    
         printf("3.  double=%.16e  integer=%.16I64X",lb.double_value,lb.long_value);
        }
      /*  実行結果
          1.  double=-nan(ind)                integer=FFF8000000000000
          2.  double=1.7976931348623157e+308  integer=7FEFFFFFFFFFFFFF
          3.  double=2.2250738585072014e-308  integer=0010000000000000
      */

    3. 構造物やクラスオブジェクトに対する暗黙のコピー演算子の自動生成を追加しました。コンパイラは自動的にコピー演算子を作成します。これにより、b = aのようなオブジェクトの単純なエントリを書くことができます。
      class Foo
        {
         int               value;
      public:
         string Description(void){return IntegerToString(value);};
         //--- デフォルトコンストラクタ
                           Foo(void){value=-1;};
         //--- パラメータ付きのコンストラクタ
                           Foo(int v){value=v;};
        };
      //+------------------------------------------------------------------+
      //|  Foo型オブジェクトを持つ構造体                           |
      //+------------------------------------------------------------------+
      struct MyStruct
        {
         string            s;
         Foo               foo;
        };
      //+------------------------------------------------------------------+
      //| スクリプトプログラム開始関数                                    |
      //+------------------------------------------------------------------+
      void OnStart()
        {
      //---
         MyStruct a,b;
         Foo an_foo(5);
         a.s="test";
         a.foo=an_foo;
         Print("a.s=",a.s," a.foo.Description()=",a.foo.Description());
         Print("b.s=",b.s," b.foo.Description()=",b.foo.Description());
      //---
         Print("b=a");
         b=a;
      //---
         Print("a.s=",a.s," a.foo.Description()=",a.foo.Description());
         Print("b.s=",b.s," b.foo.Description()=",b.foo.Description());
      /*
         Execution result;
         a.s=test a.foo.Description()=5
         b.s= b.foo.Description()=-1
         b=a
         a.s=test a.foo.Description()=5
         b.s=test b.foo.Description()=5
      */
        }
      オブジェクトメンバ単位のコピーは暗黙の演算子で実行されます。

      • メンバがオブジェクトの場合、このオブジェクトに対応するコピー演算子が呼び出されます。
      • メンバがオブジェクトの配列である場合、各要素に対して適切なコピー演算子を呼び出す前に、ArrayResizeを使用して受信配列が必要なサイズに増減されます。
      • メンバが単純型の配列である場合、コピーにはArrayCopy関数が使用されます。
      • メンバがオブジェクトへのポインタである場合、コピーされるのはポインタでそれが指しているオブジェクトではありません。

      必要に応じて、オーバーロードを使用して暗黙のコピー演算子の代わりに動作をオーバーライドして独自のオプションを作成することができます。

    4. Copy*関数を使用してエキスパートアドバイザーから価格履歴にアクセスする際のメモリ使用量を最適化しました。大量のデータを扱う場合、メモリ消費量は何倍も削減されます。

    5. datetimeのMqlDateTimeへの変換が成功したかどうかをTimeToStruct関数が返すブール値で確認できるようになりました。
    6. 文字列、動的配列、オブジェクト、ポインタを含む構造体の FileWriteStruct および FileReadStruct 関数の使用を禁止しました。
    7. 以下の応答コードが追加されました。

      • TRADE_RETCODE_REJECT_CANCEL — 未決注文をアクティブにする要求が拒否され、注文がキャンセルされました。
      • TRADE_RETCODE_LONG_ONLY — シンボル に"Only long positions are allowed(買いポジションのみ)"が設定されているため、リクエストが拒否されました。
      • TRADE_RETCODE_SHORT_ONLY — シンボルに"Only short positions are allowed(売りポジションのみ)"が設定されているため、リクエストが拒否されました。
      • TRADE_RETCODE_CLOSE_ONLY — シンボルに"Only closing of existing positions is allowed(既存ポジションの決済のみ)"が設定されているため、リクエストが拒否されました。

    8. SYMBOL_ORDER_MODE パラメータを持つSymbolInfoInteger関数の新しい戻り値を追加しました。SYMBOL_ORDER_CLOSEBY — Close By操作(反対方向のポジションによるポジションの決済)の許可。
    9. SYMBOL_CUSTOMブール値プロパティがENUM_SYMBOL_INFO_INTEGER列挙に追加されました。このプロパティは、シンボルがカスタムであるかどうかを調べることができます。プロパティを取得するにはSymbolInfoInteger 関数を使用します。
    10. 注文、取引、ポジションの作成理由を取得できるようになりました。

      新しいプロパティ


      注文、取引、ポジション作成の理由
      取引操作の作成理由を得るための3つの変数が追加されました。
      ENUM_POSITION_REASON ENUM_DEAL_REASON ENUM_ORDER_REASON 理由の詳細
      POSITION_REASON_CLIENT DEAL_REASON_CLIENT ORDER_REASON_CLIENT この操作は、デスクトップターミナルから出された注文がアクティブ化された結果として実行されました。
      POSITION_REASON_MOBILE DEAL_REASON_MOBILE ORDER_REASON_MOBILE この操作は、モバイルアプリケーションから出された注文がアクティブ化された結果として実行されました。
      POSITION_REASON_WEB DEAL_REASON_WEB ORDER_REASON_WEB この操作は、Webプラットフォームから出された注文がアクティブ化された結果として実行されました。
      POSITION_REASON_EXPERT DEAL_REASON_EXPERT ORDER_REASON_EXPERT この操作は、MQL5プログラム(エキスパートアドバイザーまたはスクリプト)から出された注文がアクティブ化された結果として実行されました。
      - DEAL_REASON_SL ORDER_REASON_SL この操作は、ストップロスのアクティブ化の結果として実行されました。
      - DEAL_REASON_TP ORDER_REASON_TP この操作は、テイクプロフィットのアクティブ化の結果として実行されました。
      - DEAL_REASON_SO ORDER_REASON_SO この操作は、ストップアウトイベントの結果として実行されました。
      - DEAL_REASON_ROLLOVER - この約定は、ロールオーバのために実行されました。
      - DEAL_REASON_VMARGIN - この約定は、変動証拠金を課金した後に実行されました。
      - DEAL_REASON_SPLIT - この約定は、スプリットが公表された時にポジションが存在した株式または他の資産のスプリット(低下)の後に実行されました。

    11. 同期とティック履歴へのアクセスを最適化しました。
    12. CopyTicksRange関数でティックを統計配列に返すよう修正しました。以前のバージョンでは、この場合、常に0個のティックが返されました。
    13. ファジー論理ライブラリにさまざまな修正を加えました。

    シグナル

    1. 取引口座の接続がない場合、ウェブサイトからのシグナルが開かれる問題を修正しました。

    テスター

    1. 注文履歴及び約定履歴による作業を最適化して加速化しました。大量のデータ(数万回の履歴エントリ)を扱う場合の操作速度は何倍も向上しました。
    2. テストレポートのポジション保持時間の計算を修正しました。

    MetaEditor

    1. デバッガでの静的クラスメンバ配列の内容の表示を修正しました。
    2. デバッグされたプログラムにブレークポイントのリストを追加しました。このリストは「デバッグ」タブのコンテキストメニューを使用して開くことができます。


      ブレークポイントにジャンプするには、ブレークポイントをダブルクリックします。
    ドキュメントを更新しました。
    8 6月 2017
    iOS 版 MetaTrader 5 ビルド1605:仮取引口座の開設

    iOS版 MetaTrader 5 ビルド1605では仮取引口座を簡単に開設することが可能です。口座を新規開設するには、メニューから「リアル口座を開く」を選択し、ブローカーをサーバーのリストから探し、個人情報を記入して身元と住所を確認するための2つの書類を添付して送信します。ブローカーはリアル口座を開設して必要に応じて追加情報を要求します。


    この新バージョンのもう一つの特徴は、最適化され再設計された電子メールセクションです。

    • 関連する電子メールはスレッドにまとめられ、電子メールのリストに単一のアイテムとして表示されます。
    • 電子メール添付ファイルのプレビューも追加されました。
    • 現在1通の電子メールで最大5つの添付ファイルを(ファイルサイズは8MB以下)送信することができます。
    26 4月 2017
    MetaTrader 5プラットフォームビルド1596:価格履歴へのアクセス

    ターミナル

    1. バーとティック履歴へのアクセスを追加しました。現在、MQL5言語を使用するだけでなく、サーバーからトレーディングプラットフォームインターフェイスを介して完全な1分およびティック履歴をダウンロードすることも可能です。価格データへのアクセスは、カスタムデータフィード機能の開始の準備の一環として拡大されています。近い将来、プラットフォームはユーザーの価格データに基づいてチャートを作成し、合成銘柄を作成し、オフラインチャートを使用する可能性を提供します。
      データをダウンロードするには「気配値表示」ウィンドウのコンテキストメニューから銘柄管理ダイアログを開きます。


      このダイアログには "バー"と "ティック"の2つの新しいタブがあります。銘柄と希望の時間間隔を選択し「Request」をクリックします。プラットフォームはサーバーから利用可能なすべてのデータを要求し、既にダウンロードされている場合はすぐにデータを表示します。保存された価格データはCSVファイルにエクスポートできます。

    2. ポジション、取引、注文のミリ秒単位の時間表示を追加しました。



    3. 取引ダイアログで、Close Byリクエストの実行拒否に関する通知を修正しました。

    MQL5

    1. PositionSelect関数を修正しました。この関数は、最も低いチケット番号を有するものとは異なるポジションを時々選択することがあります。
    2. 非常に詳細なティック履歴データを要求するときCopyTicksおよびCopyTicksRange機能の動作を固定しました。

    シグナル

    1. 既存のポジションのサイズを増やす操作のコピーが修正されました。このエラーは、ネット決済の時折発生する可能性があります。

    テスター

    1. テスター:取引所製品のリミット注文の処理を修正しました。買値が市場価格よりも低い、または売値が市場価格を上回る注文は、スリッページなしで実行されます。市場価格より悪い注文は、直ちに注文時の市場価格で実行されます

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

    8 4月 2017
    Android版 MetaTrader 5 ビルド1576:取引履歴でのポジション

    Android版 MetaTrader 5は取引履歴をポジションの形で表示することができるようになりました。履歴タブには今までには注文と約定のみが表示されていましたが、取引がポジションの形で分析できるようになりました。1つのポジションの全ての取引データが1つのレコードに結合されて、下記が表示されます。

    • ポジションの開閉時間(最初と最後の取引によって決定)
    • ポジションボリューム(ポジションが部分的に決済された場合には決済ボリュームと初期ボリューム)
    • 加重平均されたポジションの始値と終値
    • ポジションの約定の全体的な結果


    30 3月 2017
    MetaTrader 5 iOS 新ビルド1547 とポジション履歴

    このビルドで一番革新的なのは、ポジションの形での取引履歴の表示です。履歴タブには今までには注文と約定のみが表示されていましたが、これにポジションが加わりました。取引プラットフォームは、ポジションの取引データを収集し、そのデータを1つのレコードに結合します。レコードには以下が含まれます。

    • 最初と最後の取引によって決定されたポジションの開閉時間
    • ポジションの数量ポジションが部分的に決済された場合には決済ボリュームと初期ボリューム
    • ポジションの加重平均始値及び終値
    • ポジションの約定の全体的な結果



    24 3月 2017
    MetaTrader 5プラットフォームビルド1570:マーケットショーケースの改善とMQL5テンプレート関数の拡張

    ターミナル

    1. アプリケーションの MetaTraderマーケットストアでのショーケースを更新しました。売買ロボットやテクニカル指標がより便利にブラウズできます。デザインが更新され、製品の選択が追加されました。

      • メインページには人気の高いエキスパート、指標、マーケットでの新製品、トップ無償アプリが登場するようになりました。
      • エキスパート、指標、ユーティリティのセクションには、グリッドとヘッジのロボット、トレンド指標と多通貨指標などのサブセクションが追加されました。




    2. Windowsアカウントの権限が限られている場合の、クライアント端末更新とマーケット、シグナル、仮想ホスティングでの内蔵された購入を修正しました。
    3. 時折見られたポジション履歴の間違った並び替えを修正しました。
    4. 「資産(Exposure)」タブの表示を修正して最適化しました。

    MQL5

    1. パラメータを使用したテンプレート関数オーバーロードのサポートを追加しました。例は、型キャストを使用して第1パラメータに第2パラメータの値を書き込むテンプレート関数です。MQL5はstringをboolに型キャストすることはできません。しかし、自分でやることは可能です。テンプレート関数のオーバーロードを作成しましょう。
      //+------------------------------------------------------------------+
      //| テンプレート関数                                                   |
      //+------------------------------------------------------------------+
      template<typename T1,typename T2>
      string Assign(T1 &var1,T2 var2)
        {
         var1=(T1)var2;
         return(__FUNCSIG__);
        }
      //+------------------------------------------------------------------+
      //| bool+stringのための特別のオーバーロード                             |
      //+------------------------------------------------------------------+
      string Assign(bool &var1,string var2)
        {
         var1=(StringCompare(var2,"true",false) || StringToInteger(var2)!=0);
         return(__FUNCSIG__);
        }
      //+------------------------------------------------------------------+
      //| スクリプトプログラム開始関数                                        |
      //+------------------------------------------------------------------+
      void OnStart()
        {
         int i;
         bool b;
         Print(Assign(i,"test"));
         Print(Assign(b,"test"));
        }
      コード実行の結果、Assign()テンプレート関数はint+stringのペアで使用され、オーバーロードされたバージョンは2回目の呼び出しでbool+stringペアですでに使用されていることがわかります。
      string Assign<int,string>(int&,string)
      string Assign(bool&,string)

    2. テンプレート関数を明示的に特殊化しました。これを行うには、呼び出しパラメーターのリストの前に型定義パラメーターを指定します。
      template<typename T>
      T Func() { return (T)0; }
        
        
      void OnInit()
        {
         Func<double>();   // 明示的テンプレート関数の特殊化
        }
      したがって、型定義は、呼び出しパラメータを使用するのではなく、型の明示的な指定によって実行されます。

    3. DRAW_ZIGZAG描画タイプを使用したカスタム指標の表示を最適化しました。
    4. ENUM_DEAL_TYPE取引タイプ列挙に新しい値を追加しました。

      • DEAL_DIVIDEND — 配当金操作
      • DEAL_DIVIDEND_FRANKED — フランク(課税対象外)配当操作(税金はクライアントではなく会社によって支払われます)
      • DEAL_TAX — 課税

    5. 描画タイプがDRAW_FILLINGのカスタム指標の表示が修正されました。上下の線の座標が一致する場合は、細い線が引かれます。
    6. CHART_SHOWパラメータが 'false'に設定されたときのBitmap Labelオブジェクトの座標計算が修正されました。このパラメータはChartSetInteger関数で設定され、すべての価格チャート要素を非表示にしてカスタムプログラムインターフェイスを作成できます。
    7. 24ビット画像をMQL5アプリケーションリソースに配置する際にの再エンコードを修正しました。
    8. ArrayPrint関数を使用した構造体の出力を修正しました。
    9. MQL5標準ライブラリを更新しました。

    MetaEditor

    1. マレー語へのUI翻訳を追加しました。

    シグナル

    1. 取引口座に接続されていない状態でMQL5.communityのWebサイトから移動したさいに端末のシグナルページを開くことを修正しました。

    テスター

    1. ストラテジーテスターのCopyTicks関数の操作を修正しました。
    2. レポートを生成する際の出金取引の並び替えを修正しました。
    3. 修正中の未決注文を修正しました。

    ホスティング

    1. 超高解像度スクリーン(4kb)での仮想ホスティングウィザードの表示を修正しました。

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

    前へ12345678910111213