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

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

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)での仮想ホスティングウィザードの表示を修正しました。

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

17 2月 2017
MetaTrader 5 プラットフォームビルド1545:ウィンドウ間の高速切り替えとマウスホイールでの価格変更

ターミナル

  1. 「ツールボックス」と「ストラテジーテスター」ウィンドウ間を高速に切り替えます。



  2. 新しいオプションを使用して、マウスホイールで価格と注文量を編集できます。




  3. モバイルターミナルのダウンロードに切り替えるときにトレードサーバーのリストが記憶されます。その後、iPhoneやAndroidデバイスにMetaTraderをインストールすると、そのサーバーリストが表示されます。既存の取引口座にはすぐに接続することができます。モバイルターミナルでは現在接続されている口座のサーバーが最初に表示されます。




  4. 目に見えない(最小化された)チャートやオブジェクトによって生成されるターミナルへの負荷が大幅に軽減されました。
  5. トレール注文の不正なトリガが修正されました。
  6. 口座取引履歴での銘柄による取引のフィルタリングが修正されました。
  7. ポジション履歴での「タイプ」フィールドの表示が修正されました。
  8. ポジションの形での取引履歴の表示が修正されました。

MQL5

  1. 色にCLR_NONEが使用されている場合の描画タイプがDRAW_COLOR_LINE、DRAW_COLOR_ZIGZAGおよびDRAW_COLOR_SECTIONであるカスタム指標の表示が修正されました。
  2. 定数ポインタを使用したテンプレートの型付けが修正されました。
  3. private及びprotectedクラスメンバへのアクセスの制御が修正されました。

テスター

  1. テスター:注文商品の価格が現在の市場よりも悪い(買値が市場価格よりも高い、または売値が市場価格よりも低い)時の、取引所での指値注文のアクティブ化が修正されました。
  2. 64以上の入力パラメーターを持つカスタム指標のテストに関連する制限が削除されました。
  3. UIのヒンディー語への翻訳を追加しました。

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

9 2月 2017
iOS 版 MetaTrader 5 ビルド1509:FacebookでのMQL5.comへのログイン
  • Facebookを介してMQL5.comアカウントに登録してログインする機能を追加しました。 このソーシャルネットワークにプロファイルを持っている方は、数回のクリックでチャットやMetaTrader 5サービス全体にアクセスできます。‌

  • 改善と修正
27 1月 2017
MetaTrader 5 ビルド1525:ポジションとしての取引履歴の表示とテスターの改善

ターミナル

  1. 取引履歴をポジションの形で表示することができるようになりました。ターミナルは、ポジションに関連した取引データ(ポジションの開始点、追加の数量、部分的および完全決済)を収集し、そのデータを1つのレコードにグループ化します。このレコードには、次の詳細が含まれます。

    • 最初と最後の取引によって決定されるポジションの開閉時間
    • ポジションの数量ポジションの一部が決済されている場合は決済された数量とソース数量
    • 加重平均されたポジションの始値と終値
    • ポジションに関連する取引の結果




    ヘッジアカウントでは、新しい履歴の形式はMetaTrader 4で使用されたアカウント履歴のものと似ています。




  2. 新しいコマンドが追加されました。これにより、銘柄チャートで取引を視覚化することができます。

    • 選択したポジション/銘柄の取引を表示する必要がある場合は「 [銘柄名] の取引を追加」をクリックします。適切な取引は選択された銘柄の現在開いているすべてのチャートに表示されます。銘柄のチャートが1つも開いていない場合は、新しいチャートが開きます。
    • アカウント履歴でのすべての銘柄の取引を表示するには「すべての取引を追加」をクリックします。対応する銘柄の取引がすべての開いているチャートに追加されます。




  3. 契約仕様書での取引製品の国際名の表示と、銘柄管理ダイアログでの国際名での検索を追加しました。




  4. ターミナルウィンドウの解像度設定のためのコマンドが追加されました。この機能は、動画を作成するのに役立ちます。このメニューではYouTubeのようなさまざまなビデオサービスで使用される最も一般的な解像度オプションが用意されています。



  5. チャートテンプレートとプロファイルが「ターミナルデータフォルダ\Profiles」から「ターミナルデータフォルダ\MQL5\Profiles」に移動されました。MQL5ストレージにテンプレートを簡単に追加して、どのPCからでもアクセスできるようになりました。

MQL5:

  1. リソース変数のサポートが追加されました。そのような変数を使用することによって、いくつかのプログラムの開発を大幅に促進することができます。たとえば、OpenCLプログラムのコードを別のCLファイルに記述してMQL5プログラムリソースに文字列として含めることができます。更新前には、そのようなコードは1つの大きな文字列変数として記述される必要がありました。

    リソース変数の宣言
    #resource path_to_resource_file as type_of_resource_variable name_of_resource_variable

    機能
    • 文字列ファイルのエンコーディングはBOM(ヘッダ)に基づいて自動的に決定されます。BOMが存在しない場合、エンコーディングはファイルの内容によって定義されます。ANSI、UTF-8、UTF-16がサポートされています。すべての文字列はUnicodeに変換されます。
    • そのようなリソースのデータは、変数を介してのみアドレス指定することができます。":: <リソース名>"を使用した自動アドレス指定は使用できません。
    • 特別なビットマップリソース変数型は、コンパイラにリソースが画像であることを示します。この場合、リソース変数はuint型をもちます。
    • 24ビット画像を使用する場合、アルファチャンネルコンポーネントはすべての画像ピクセルに対して255に設定されます。
    • アルファチャンネルなしの32ビット画像を使用する場合、アルファチャンネルコンポーネントもまたすべての画像ピクセルに対して255に設定されます。
    • アルファチャンネルを使用して32ビット画像をロードすると、ピクセルはまったく処理されません。
    • ビットマップ型の配列リソース変数は2次元を持つことができます。この場合、配列のサイズは[image_height] [image_width]で定義されます。
    • 配列の1次元が指定されている場合、要素数は image_height*image_width となります。
    • リソースファイルのサイズが配列要素のサイズの倍数でない場合、残りのデータは切り取られます。たとえば、ファイルサイズが14バイトの場合、int 配列の要素数は3になりますが、他の2バイト(14 - sizeof(int)* 3)は捨てられます。

    使用例
    #resource "data.bin" as int ExtData[]             // data.binファイルのデータを含む数値配列の宣言
    #resource "data.bin" as MqlRates ExtData[]        // data.binファイルのデータを含む単純構造配列の宣言
    
    #resource "data.txt" as string ExtCode            // data.txtファイルのデータを含む文字列の宣言
    #resource "data.txt" as string ExtCode[]          // data.txtファイルのデータを含む文字列の宣言
    
    #resource "image.bmp" as bitmap ExtBitmap[]       // BMPファイルからのビットマップを含む1次元配列の宣言、array size = width * height
    #resource "image.bmp" as bitmap ExtBitmap2[][]    // BMPファイルからビットマップを含む2次元配列を宣言する、array size [hight][width]
    

  2. 新しいCHART_SHOWプロパティを使用すると、チャートの表示を無効にできます。プロパティを取得/設定するには、関数ChartGetInteger ChartSetInteger を使用します。

    falseの場合、時間および価格スケール、クイックナビゲーションバー、カレンダーイベントラベル、取引ラベル、インディケータおよびバーツールヒント、インディケータサブウィンドウ、ボリュームヒストグラムなど、価格チャート属性の描画は無効になり、すべてのチャートの境界インデントが削除されます。
    描画の無効化は、グラフィックリソースを使用してカスタムプログラムインターフェイスを作成するための完璧なソリューションです。

    グラフィックオブジェクトはCHART_SHOWプロパティの値に関係なく常に描画されます。

  3. 新しいCHART_KEYBOARD_CONTROLプロパティを使用すると、キーボードを使用してチャートコントロールを有効/無効にすることができます ("Home"、"End"、"PgUp"、"+"、"-"、"上矢印"など)。CHART_KEYBOARD_CONTROLをfalseに設定するとOnChartEvent()でキー押下イベントを受け取ることができますが、チャートのスクロールとスケーリングは無効になります。
    ChartGetIntegerChartSetInteger関数を使用するとプロパティを取得/設定できます。

  4. OpenCLを使用するための新しい関数が追加されました。

    メモリを操作するための新しいプロパティ
    CLGetInfoIntegrer によって、4つの新しいプロパティを受け取ることができます。
    • CL_DEVICE_MAX_WORK_GROUP_SIZE — OpenCLデバイスで使用可能なローカルワーキンググループの総数
    • CL_KERNEL_WORK_GROUP_SIZE — OpenCLプログラムで使用可能なローカルワーキンググループの総数
    • CL_KERNEL_LOCAL_MEM_SIZE — グループ内のすべての並列タスクを解決するためにOpenCLプログラムが使用するローカルメモリのサイズ(バイト単位)(使用可能な最大値を受け取るにはCL_DEVICE_LOCAL_MEM_SIZEを使用)
    • CL_KERNEL_PRIVATE_MEM_SIZE — OpenCLプログラムカーネルの各タスクで使用されるプライベートメモリの最小サイズ(バイト単位)

    bool CLExecutionStatus(int kernel)
    OpenCLプログラム実行ステータスを返します。 OpenCLプログラムのカーネルハンドルはパラメータとして渡されます。

    bool CLSetKernelArgMemLocal(int kernel_handle,int arg_index,ulong local_mem_size)
    ローカルバッファをカーネル関数の引数として設定します。OpenCLプログラムのカーネルハンドル、OpenCL関数の引数数、およびバッファサイズはパラメータとして渡されます。

  5. 新しいTRADE_RETCODE_LIMIT_POSITIONS応答コードが追加されました。口座に同時に存在するポジションの数は、サーバー設定によって制限されます。制限に達すると、サーバーは注文を出そうとするときにTRADE_RETCODE_LIMIT_POSITIONSエラーを返します。この制限の動作は、ポジション会計タイプによって異なります。

    • Netting — ポジション数が考慮されます。限界に達すると、プラットホームはその実行によってポジション数が増加する可能性がある新しい発注を無効にします。実際には、プラットフォームはすでにポジションを持っている銘柄だけを注文することができます。現在の未決注文は、その実行が現在のポジションの変更につながってもその数を増やすことはできないので、考慮されません。
    • Hedging — 未決注文のアクティベーションは常に新しいポジションを開くため、未決注文はポジションとともに考慮されます。制限に達すると、プラットフォームは、ポジションを開けるための成行注文と未決注文の両方を無効にします。

  6. ティック履歴でティックが抜かされるエラーを修正しました。
  7. 間接的なテンプレート入力エラーを修正しました。
  8. 数学統計関数ライブラリを更新しました。

マーケット

  1. デモ版をダウンロードする際に開かれる製品ページを修正しました。

テスター

  1. 最適化完了後、結果が「結果」列で自動的にソートされるようになりました。
  2. 最適化結果タブのコンテキストメニューの新しい「最適化結果に切り替える」コマンドを使用すると、最適化が完了したときに自動的に結果を開くことができます。
  3. ストラテジーテスターは、単一のテストを開始した後、最適化モードのままでいるようになりました。以前のバージョンでは、最適化結果タブから1テストを開始した場合、ストラテジーテスターは単一テストモードに切り替わりました。さらに最適化を行うには最適化モードを有効にする必要がありました。
  4. 入力パラメータのセットは、従来の.setファイルに加えて、コンテキストメニューから便利にアクセスできるローカルストラテジーテスター設定として保存できるようになりました。




  5. モンゴル語、ハンガリー語、ルーマニア語、ウルドゥー語へのUI翻訳を追加しました。
  6. デバッガウィンドウで監視された式の順序を変更する機能が追加されました。式はマウスで必要な位置にドラッグすることができます。




MetaEditor

  1. デバッガウィンドウで監視された式の順序を変更する機能が追加されました。式はマウスで必要な位置にドラッグすることができます。



  2. ソースファイルのエンコーディングの決定を修正しました。
  3. UTF-8エンコーディングのファイルによる検索を修正しました。
  4. テキストがタブを含む場合のマウスによるテキスト選択を修正しました。
  5. ハンガリー語とルーマニア語へのUI翻訳を追加しました。

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

18 1月 2017
Android版 MetaTrader 5 ビルド1506:取引の絞り込みと並び替え
  • 取引タブと履歴タブには、すべての取引を銘柄(金融商品)、注文、および開/閉時間で並べ替えるソート機能が用意されました。並べ替えとは別に、履歴タブでは銘柄によって取引を絞り込むことができます。

  • マルチウィンドウモードでのチャートの操作が最適化されました。メニューは改良されており、新しいウィンドウを開く、古いウィンドウを削除する、ウィンドウを再配置する、希望するレイアウト(垂直、水平、タイル)を選択するといったことが可能になりました。

9 12月 2016
新しい MetaTrader 5 プラットフォームビルド1495:カスタムグラフィックを扱うためのMQL5の改良

MQL5

  1. MQL5: CopyTicksRange 関数が追加されました。
  2. MQL5:CCanvasクラスに改良されたアンチエイリアス関数が追加されました。
  3. MQL5:MQL5リファレンスにグラフィカルライブラリの説明が追加されました。このライブラリは、価格チャート上でヒストグラム、分布グラフ、折れ線グラフを手早く作成することができます。
  4. MQL5:クライアントターミナルプロパティの定数リストにシステムキーの状態を表す識別子が追加されました。TerminalInfoInteger(TERMINAL_KEYSTATE_XXX)の呼び出しは、MSDNのGetKeyState()関数と同じキーの状態コードを返します。
  5. MQL5:string型のboolへのキャストのサポートを無効にしました。文字列をチェックするには、明示的な条件を使用する必要があります。たとえば、新しいビルドでは、次のコードをコンパイルするとエラーになります。
    string str;
    ...
    if(str)                        // 「Cannot convert type 'string' to 'bool(string型はboolに変換できません)」コンパイルエラーが発生する(以前のバージョンではエラーは表示されない)
       Print("str is true");
    明示的な条件の使用が必要です。
    string str;
    ...
    
    //--- 文字列が初期化されているかを確認する
    if(str!=NULL)
       Print("str is true");
    
    または
    
    //--- 文字列の値が「true」かどうかを確認する
    if(StringCompare(str,"true",false))
       Print("str is true");
    
    または
    
    //--- 文字列が整数でゼロと等しいかどうかを確認する「true」かどうかを確認する
    if((int)str!=0)
       Print("str is true");
  6. クラッシュログで修正されたエラーが修正されました。
2 12月 2016
メタトレーダー5 ウェブ・プラットフォーム:二要素認証とパスワード変更
  • ワンタイムパスワードを使用した二要素認証オプションが追加されました。これによって、不正アクセスに対するアカウントの保護が強化されます。二要素認証を有効にするには、メタトレーダー5モバイル版を起動します。ログインして、設定ウィンドウでワンタイムパスワード(OTP)ジェネレータオプションを選択します。OTPジェネレータを使用すると、取引アカウントをすべてバインドして、アカウントごとに固有の6桁のワンタイムパスワードを自動的に生成できます。ウェブ・プラットフォームにログインする際には生成されたパスワードを入力します。





  • あと一つの新しいオプションでは、マスターパスワードと投資家パスワードを変更することができます。この機会に覚えやすい個人IDを作成してください。
  • また、更新されたWebプラットフォームではデモアカウントが自動的に生成されます。メタトレーダー5 ウェブ・プラットフォームをどのブラウザからでも立ち上げ、すぐに外国為替、株、先物やCFDの金融商品の取引を始めることができます。
24 11月 2016
MetaTrader 5 ビルド1485:新しいテストモードと標準ライブラリのグラフィックス

ターミナル

  1. ターミナルとMetaEditorジャーナルのエントリの順序が変更されました。更新前には最新のログエントリが最初に表示されましたが、最も古いエントリーがジャーナルの最初に表示されるようになりました。より一般的な昇順での並べ替えは、ジャーナルの読解を容易にします。




    さらに、ジャーナルのコンテキストメニューを使用して、「時間」および「ソース」列を非表示にすることも可能になりました。

  2. ヘッジモードで、取引履歴の注文と取引に関連して決済されたポジションのチケットが表示されるようになりました。これにより、関連する開閉操作を簡単に見つけることができます。




  3. SL/TPを既存のポジションから同じ製品の新しいポジションにコピーする際に発生したエラーを修正しました。このエラーは(チャートまたは気配値表示ウィンドウなどからの)ワンクリック取引機能をヘッジモードで使用すると発生することがありました。
  4. 超高精細画面(4K)での矢印オブジェクトの表示を修正しました。

MQL5

  1. 新しいArrayPrint 関数が追加され、単純な型と構造体が配列ログに出力されます。
    void  ArrayPrint(
       const void&   array[],             // 出力配列
       uint          digits=_Digits,      // 小数点以下の桁数
       const string  separator=NULL,      // 構造体フィールド間の区切り文字の値
       ulong         start=0,             // 初めに表示される要素のインデックス
       ulong         count=WHOLE_ARRAY,   // 表示される要素の数
       ulong         flags=ARRAYPRINT_HEADER|ARRAYPRINT_INDEX|ARRAYPRINT_LIMIT|ARRAYPRINT_ALIGN    
       );
    
    ArrayPrintは構造体配列のすべてのフィールドをログに出力するものではありません。オブジェクトの配列フィールドとポインタフィールドは抜かされます。すべての構造体のフィールドを出力する必要がある場合は、希望の書式を使用して独自のマス出力関数を記述する必要があります。
    //--- 最後の10バーの値を出力する
       MqlRates rates[];
       if(CopyRates(_Symbol,_Period,1,10,rates))
         {
          ArrayPrint(rates);
          Print("Проверка\n[time]\t[open]\t[high]\t[low]\t[close]\t[tick_volume]\t[spread]\t[real_volume]");
          for(int i=0;i<10;i++)
            {
             PrintFormat("[%d]\t%s\t%G\t%G\t%G\t%G\t%G\t%G\t%I64d\t",i,
             TimeToString(rates[i].time,TIME_DATE|TIME_MINUTES|TIME_SECONDS),
             rates[i].open,rates[i].high,rates[i].low,rates[i].close,
             rates[i].tick_volume,rates[i].spread,rates[i].real_volume);
            }
         }
       else
          PrintFormat("CopyRates failed, error code=%d",GetLastError());
    //--- ログの例
    /*
                        [time]  [open]  [high]   [low] [close] [tick_volume] [spread] [real_volume]
       [0] 2016.11.09 04:00:00 1.11242 1.12314 1.11187 1.12295         18110       10   17300175000
       [1] 2016.11.09 05:00:00 1.12296 1.12825 1.11930 1.12747         17829        9   15632176000
       [2] 2016.11.09 06:00:00 1.12747 1.12991 1.12586 1.12744         13458       10    9593492000
       [3] 2016.11.09 07:00:00 1.12743 1.12763 1.11988 1.12194         15362        9   12352245000
       [4] 2016.11.09 08:00:00 1.12194 1.12262 1.11058 1.11172         16833        9   12961333000
       [5] 2016.11.09 09:00:00 1.11173 1.11348 1.10803 1.11052         15933        8   10720384000
       [6] 2016.11.09 10:00:00 1.11052 1.11065 1.10289 1.10528         11888        9    8084811000
       [7] 2016.11.09 11:00:00 1.10512 1.11041 1.10472 1.10915          7284       10    5087113000
       [8] 2016.11.09 12:00:00 1.10915 1.11079 1.10892 1.10904          8710        9    6769629000
       [9] 2016.11.09 13:00:00 1.10904 1.10913 1.10223 1.10263          8956        7    7192138000
       Check
       [time] [open] [high] [low] [close] [tick_volume] [spread] [real_volume]
       [0] 2016.11.09 04:00:00 1.11242 1.12314 1.11187 1.12295 18110 10 17300175000 
       [1] 2016.11.09 05:00:00 1.12296 1.12825 1.1193 1.12747 17829 9 15632176000 
       [2] 2016.11.09 06:00:00 1.12747 1.12991 1.12586 1.12744 13458 10 9593492000 
       [3] 2016.11.09 07:00:00 1.12743 1.12763 1.11988 1.12194 15362 9 12352245000 
       [4] 2016.11.09 08:00:00 1.12194 1.12262 1.11058 1.11172 16833 9 12961333000 
       [5] 2016.11.09 09:00:00 1.11173 1.11348 1.10803 1.11052 15933 8 10720384000 
       [6] 2016.11.09 10:00:00 1.11052 1.11065 1.10289 1.10528 11888 9 8084811000 
       [7] 2016.11.09 11:00:00 1.10512 1.11041 1.10472 1.10915 7284 10 5087113000 
       [8] 2016.11.09 12:00:00 1.10915 1.11079 1.10892 1.10904 8710 9 6769629000 
       [9] 2016.11.09 13:00:00 1.10904 1.10913 1.10223 1.10263 8956 7 7192138000 
    */
    

  2. S1=S2+S1のように文字列の加算する際のエラーを修正しました。
  3. ArrayResize関数の動作が変更されました。reserve_sizeパラメータとして-1が渡された場合、この関数は配列サイズを増やさない場合にのみ未使用(予約済み)メモリを解放します。reserve_size=-1で新しい配列サイズを0に設定することはArrayFreeを呼び出すことと同じです。この新しい動作によってMQL5プログラムのメモリ使用量が最適化できます。
    void OnStart()
      {
       int arr[];
    //--- 最初に使用されるメモリの量 
       Print("Array size:",ArraySize(arr)," Memory used:",MQLInfoInteger(MQL_MEMORY_USED)," MB");
    //--- サイズ1の配列に使用されたメモリ量(リサーブ(予備)あり)
       ArrayResize(arr,1,1024*1024);
       Print("Array size:",ArraySize(arr)," Memory used:",MQLInfoInteger(MQL_MEMORY_USED)," MB");
    //--- 予備があるため、使用されたメモリの量は要素数の増加後には変更されない
       ArrayResize(arr,1024*512,1024*1024);
       Print("Array size:",ArraySize(arr)," Memory used:",MQLInfoInteger(MQL_MEMORY_USED)," MB");
    //--- メモリサイズは配列を縮小した後にも変更されない
       ArrayResize(arr,1);
       Print("Array size:",ArraySize(arr)," Memory used:",MQLInfoInteger(MQL_MEMORY_USED)," MB");
    //--- 未使用メモリは予備の削除後に解放される
       ArrayResize(arr,1,-1);
       Print("Array size:",ArraySize(arr)," Memory used:",MQLInfoInteger(MQL_MEMORY_USED)," MB");
      }
    

  4. チャート描画関数が標準ライブラリに追加されました。この新機能を使用するには、プロジェクトにMQL5\Include\Graphics\Graphic.mqhを含めます。

    下記はGraphPlotを使用して3つのデータ系列に基づいてチャートをプロットします。
    #include <Graphics/Graphic.mqh>
    
    double Func1(double x) { return MathPow(x,2); }
    double Func2(double x) { return MathPow(x,3); }
    double Func3(double x) { return MathPow(x,4); }
    
    void OnStart()
      {
       GraphPlot(Func1,Func2,Func3,-2,2,0.05,CURVE_LINES);
      }
    
    
    結果:


    下記はGraphPlotを使用してデータ配列に基づいてチャートをプロットします。
    #include <Math/Stat/Binomial.mqh>
    #include <Graphics/Graphic.mqh>
    
    void OnStart(void)
      {
       double    vars[101];
       double    results[101];
       const int N=2000;
    //---  
       MathSequence(0,N,20,vars);
       MathProbabilityDensityBinomial(vars,N,M_PI/10,true,results);
       ArrayPrint(results,4);
       GraphPlot(results);
    //---
      }
    
    結果:



  5. 標準ライブラリの数学統計を扱うための関数を更新しました。MQL5バージョンとソースR言語の両方で、すべての関数の品質と精度が完全に確認されました。精度とパフォーマンスの速度の制御を可能にするために、ユニットテストが静的ライブラリとともに配布されます。これらは\MQL5\Scripts\UnitTests\Statディレクトリにあります。

    • TestStat.mq5 - 計算結果を確認するためのメインテストスクリプト
    • TestPrecision.mq5 — 計算精度のテスト
    • TestBenchmark.mq5 — コンピューティングパフォーマンス測定のテスト

テスター

  1. この更新には、テスト中に実行遅延を設定するための高度な設定機能が加わりました。これで、遅延がない理想的なケースやカスタム遅延セットを含めたさまざまな取引条件でエキスパートアドバイザーをテストすることができます。



    以前のバージョンではランダム遅延モードのみが使用できました。

  2. 「M1ベースのOHLC」モードでのバーのティックボリュームの生成を修正しました。
  3. ヘッジモードで取引する際の注文とポジションの開始時間をミリ秒単位までで指定できるように修正しました。
  4. 「リアルチック」モードでの複数通貨または複数時間枠テストで表示される「古いチック」エラーを修正しました。
  5. 要求されたティックがディスク上にあるデータベースから読み取られる際のCopyTicksのパフォーマンス速度が向上されました。

MetaEditor

  1. ナビゲータとツールボックスのファイルコンテキストメニューに、バージョン管理された MQL5 Storage ソースコードリポジトリを操作するためのコマンドが追加されました。




  2. リポジトリ内で1024を超えるファイルを操作する際にローカルのMQL5ストレージデータベースの整合性を壊す可能性のあったエラーを修正しました。
  3. MQL5 Storageのファイルツリーの表示を修正しました。
  4. 大量のテキストを置換した後のファイルの表示を修正しました。

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

24 11月 2016
MetaTrader 5 iOS build 1425
  • チャート上のワンクリックトレーディングパネルの改善:ポートレートモードでも使用できるようになりました。 リストから所望の値を選択することによって取引量を迅速に変更することができるようになりました。 

  • ウィンドウヘッダーの銘柄名をタップしてチャート銘柄を変更できるようになりました。
  • アプリ設定セクションの改善:現在のアカウントに関する情報が提供されるようになりました。ユニットが適切に配置され、デザインが改良されました。
  • その他複数の改善と修正。
14 10月 2016
MetaTrader 5 build 1445:MQL5数学関数ライブラリ

ターミナル

  1. トレードダイアログの買、売、及び決済ボタンにツールヒントが追加されました。ツールヒントには、初心者が取引プロセスを理解するために、操作中に売買される証券に関する情報が含まれています。




  2. Trade(取引)とHistory(履歴)タブ内で注文、約定及びポジションに新しいアイコンが追加されました。




  3. 更新されたターミナルは最適化されており、板情報、板情報でのティックチャート、Time&Sales infoの表示と更新が(最高4~5倍)より速くなります。
  4. 取引時間外のティック履歴の同期が修正されました。このプロセスは、場合によっては、多量のネットワークトラフィックを消費します。

MQL5

  1. 標準ライブラリにALGLIB数値解析ライブラリのMQL5 版が追加されました。

    ライブラリ機能

    • 線形代数
    • 線形および非線形方程式のシステム
    • 補間
    • 最適化
    • 高速フーリエ変換
    • 数値積分
    • 線形および非線形最小二乗フィッティング
    • 常微分方程式
    • 特殊機能
    • 記述統計と仮説検定
    • データ分析 - 分類、回帰
    • 多倍長演算での線形代数、補間などのアルゴリズムの(MPFRを使用した)実装

    使用法

    ALGLIBファイルは \MQL5\Include\Math\Alglibに位置します。関数を使用するには、メインライブラリファイルをお使いのプログラムに追加なさってください。

    #include <Math\Alglib\alglib.mqh>

  2. 標準ライブラリに数理統計機能が追加されました。R言語機能がMQL5で提供されるようになりました。これは、統計データ処理と解析のための最良なツールのうちの1つです。

    ライブラリ機能

    統計ライブラリには、データの統計的特性を計算するための関数や統計分布と操作のための関数が含まれています。

    • 配列要素の統計的特性を計算するための関数
    • 正規分布、対数正規分布、ベータ分布などの統計分布と操作のためのオプション

    使用法

    統計ライブラリファイルは \MQL5\Include\Math\Stat に位置します。関数を使用するには、下記の例が示すように、必要な関数を含むファイルをお使いのプログラムに追加します。

    #include <Math\Stat\Binomal.mqh>
    #include <Math\Stat\Cauchy.mqh>
    
    
    

    ライブラリ関数の詳細はStatistical Distributions in MQL5 - Taking the Best of R(MQL5での統計的分布 - Rの活用)稿で説明されています。


  3. 標準ライブラリにファジィライブラリのMQL5 版が追加されました。ファジィライブラリはマムダニ及び菅野ファジィ推論法を実装します。

    ライブラリ機能

    • 13のメンバーシップ関数
    • ファジィシステムルールを開発するための柔軟なフォーム
    • マムダニ<ファジィ推論法
    • 菅野ファジィ推論法
    • 5つのマムダニシステムの非ファジィ化メソッド
    • 無制限の量の入力/出力変数

    使用法

    ファジィライブラリファイルは\MQL5\Include\Math\Fuzzyに位置します。関数を使用するには、下記の例が示すように、必要な関数を含むファイルをお使いのプログラムに追加します。

    #include <Math\Fuzzy\mamdanifuzzysystem.mqh>
    #include <Math\Fuzzy\sugenofuzzysystem.mqh>
    
    
    

    ライブラリの詳細はコードベースのファジィ - ファジィモデル開発のためのライブラリで参照できます。


  4. 新しいCHART_QUICK_NAVIGATIONプロパティが、チャートのナビゲーションバーの迅速な有効/無効化を可能にします。プロパティの状態を変更/アクセスする必要がある場合にはChartSetInteger及びChartGetInteger関数が使用されます。




    ナビゲーションバーは、Enterキーまたはスペースキーを押すことによって開かれます。チャート上での指定した日付への迅速な移動だけでなく、銘柄と時間枠の切り替えも可能です。お使いのMQL5プログラムがEnterキーまたはスペースキーの押下を処理する場合は、ターミナルによるこれらのイベントの傍受を避けるために CHART_QUICK_NAVIGATIONプロパティを無効になさってください。クイックナビゲーションバーは、ダブルクリックでも開くことができます。

  5. FileLoad及びFileSave関数が追加されました。これらは、ファイルの読み取りおよびファイルへに配列を保存する簡単な方法を提供します。FileRead*やFileWrite*と異なり、これらの関数は指標ハンドルを必要としません。FileLoadとFileSaveは数値型の配列ならびに文字列、動的配列やクラスオブジェクトを持たないシンプルな構造体の配列と動作します。
    long  FileLoad(
       const string filename,      // [in] ファイル名
       void         &buffer[],     // [out] ファイルが読み込まれる配列
       uint         common_flag=0  // [in] 0 - 端末のFilesフォルダでファイルを探す、FILE_COMMON - 端末の共通ディレクトリでファイルを探す
       );
    
    bool  FileSave(
       const string filename,      // [in] ファイル名
       const void   &buffer[],     // [in] ファイルが保存される配列
       uint         common_flag=0  // [in] 端末のFilesフォルダでファイルを作成する、FILE_COMMON - 端末の共通ディレクトリでファイルを作成する
       );
    
    
    ファイルにティックを書き込んでから読み取るメソッドの例:
    //--- 入力パラメータ
    input int      ticks_to_save=1000; // ティック数
    //+------------------------------------------------------------------+
    //| スクリプトプログラム開始関数                                    |
    //+------------------------------------------------------------------+
    void OnStart()
      {
       string  filename=_Symbol+"_ticks.bin";
       MqlTick ticks[];
    //---
       int copied=CopyTicks(_Symbol,ticks,COPY_TICKS_ALL,0,ticks_to_save);
       if(copied!=-1)
         {
          PrintFormat(" CopyTicks(%s) copied %d ticks",_Symbol,copied);
          //--- ティック履歴が同期されている場合はエラーコードは0に等しい
          if(!GetLastError()==0)
             PrintFormat("%s: Ticks are not synchronized. Error=",_Symbol,copied,_LastError);
          //---  ファイルにティックを書き込む
          if(!FileSave(filename,ticks,FILE_COMMON))
             PrintFormat("FileSave() failed, error=%d",GetLastError());
         }
       else
          PrintFormat("Failed CopyTicks(%s), Error=",_Symbol,GetLastError());
    //--- ファイルにティックを読み返す
       ArrayFree(ticks);
       long count=FileLoad(filename,ticks,FILE_COMMON);
       if(count!=-1)
         {
          Print("Time\tBid\tAsk\tLast\tVolume\tms\tflags");
          for(int i=0;i<count;i++)
            {
             PrintFormat("%s.%03I64u:\t%G\t%G\t%G\t%I64u\t0x%04x",
             TimeToString(ticks[i].time,TIME_DATE|TIME_SECONDS),ticks[i].time_msc%1000,
             ticks[i].bid,ticks[i].ask,ticks[i].last,ticks[i].volume,ticks[i].flags);
            }
         }
      }
    
    

  6. DRAW_CANDLES描画モードを使用したカスタム指標の表示を修正しました。このモードでは1つから3つの色を設定することが可能です。ローソク足の表示は設定されている色の数に依存します。

    1色のみが指定されている場合はチャートのすべてのローソク足はこの色で塗られています。
    //--- 同じ色で塗られたローソク足 
    #property indicator_label1  "One color candles"
    #property indicator_type1   DRAW_CANDLES
    //--- 1色のみが設定されたのでローソク足の色はすべて同じ
    #property indicator_color1  clrGreen  
    
    
    2色が指定された場合は1番目の色がローソク足の輪郭、2番目が実体に適用されます。
    //--- ローソク足の実体の色は髭の色と異なる
    #property indicator_label1  "Two color candles"
    #property indicator_type1   DRAW_CANDLES
    //--- ローソクの輪郭と髭は緑で実体は白
    #property indicator_color1  clrGreen,clrWhite 
    
    
    3色が指定された場合は1番目の色がローソク足の輪郭、2、3番目の色が強気/弱気ローソク足の実体に適用されます。
    //--- ローソク足の実体の色は髭の色と異なる
    #property indicator_label1  "One color candles"
    #property indicator_type1   DRAW_CANDLES
    //--- ローソクの輪郭と髭は緑、強気ローソク足の実体は白、弱気ローソク足の実体は赤
    #property indicator_color1  clrGreen,clrWhite,clrRed
    
    
    DRAW_CANDLESスタイルはカスタムキャンドル着色を可能にします。また、すべての色はPlotIndexSetInteger function (composition_index_DRAW_CANDLES, PLOT_LINE_COLOR, modifier_index, color)関数を使用してインディケータの動作中に動的に変更することができ、ここでmodifier_indexの持つ値は次のいずれかです。
    • 0 – 輪郭と髭の色
    • 1 – 強気ローソク足の実体の色
    • 2 – 弱気ローソク足の実体の色
    //--- 輪郭と髭の色の設定
    PlotIndexSetInteger(0,PLOT_LINE_COLOR,0,clrBlue);
    //--- 強気ローソク足の実体の色の設定
    PlotIndexSetInteger(0,PLOT_LINE_COLOR,1,clrGreen);
    //--- 弱気ローソク足の実体の色の設定
    PlotIndexSetInteger(0,PLOT_LINE_COLOR,2,clrRed);
    
    
  7. CopyTicks関数を使ったティック履歴操作がバグの修正とともに改善されました。
  8. この新しいビルドでは、インターフェイスでの演算子の使用が可能になりました(以前は不可能)。

マーケット

  1. マーケットからの製品購入の際の繰り返したMQL5.communityへのサインインリクエストの原因となっていたエラーを修正しました。

テスター

  1. UIのギリシャへ語、マレー語とヘブライ語への翻訳を追加しました。

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

29 9月 2016
メタトレーダー5 ウェブ・プラットフォームがより速くより便利に
  1. Market Watch(気配値表示)と価格チャートウィンドウなどのWebアプリケーションブロックのサイズを変える機能が追加されました。
  2. Toolbox (ツールボックス)ウィンドウのTrade(取引)とHistory(履歴)タブ内で列をソートする機能が追加されました。列の幅の変更も可能です。
  3. Details(詳細)タブと素早く銘柄を追加する機能が追加されました。
  4. コードの最適化によってウェブターミナルの動作速度を全体的に上げました。アカウントの初期化、銘柄の追加、そして取引自体がより高速に実行されるようになりました。


26 9月 2016
iOS 版 MetaTrader 5 ビルド1403
  • トレードセクションの表示を変更しました - 取引データの表示は、取引口座のリスク管理システムに依存するようになりました:小売外国為替、CFD、先物またはエクスチェンジモデル。

  • インターフェース言語の選択を一般設定で別々のメニュー項目に移動しました。
  • 修正と改善。
26 9月 2016
Android版 MetaTrader 5 ビルド1372
  • トレーダーが同時に複数銘柄の価格の変化を同時にモニターするためのマルチウィンドウモードがサポートされています。
  • インディケータサブウィンドウの高さを変更する機能が追加されました。
  • チャート画面におけるメニューバーに表示銘柄の変更アイコンならびにチャート設定画面用アイコンが追加されました。


  • PC版と同様にインディケータのレベルを編集する機能も追加され、インターフェイスはブルガリア語にも翻訳されました。
    16 9月 2016
    MetaTrader 5 build 1430: Exposureタブの更新

    ターミナル


    1. 株式市場の為の『資産』タブを形成する新しいアルゴリズムが実装されました。今後は、ターミナルは取引口座に使用されているリスク管理システムに応じて資産の表示を行います(リテールFX、CFD、先物または取引モデル)。

      『資産』セクションは、取引所でFXまたは先物取引をする方が、 市場での自分の現在の状況を理解するのに役立ちます。同じ通貨が様々なツールで見られます(通貨ペアのうちの1つとしてや基礎通貨としてなど)。例とし て、GBPUSD、USDJPY、GBPJYで多方向にポジションを保有することができます。この状況において、最終的にどの通貨をいくつ保有していて、 保有する必要があるのかを理解するのは非常に問題です。もっと難しいのは、このようなポジションが3つどころか、遥かに多く保有している場合です。このよ うな状況の口座の最終的な状態は、『資産』タブで簡単に参照することができます。
      これらの3つのポジションでの例を見てみましょう:

      Buy GBPJPY 1 lot at 134.027 — 100 000 GBPを買い、134 027 000 JPYを売りました
      Sell USDJPY 1 lot at 102.320 — 100 000 USDを売り、102 320 000 JPYを買いました
      Sell GBPUSD 1 lot at 1.30923 — 100 000 GBPを売り、103 920 USDを買いました

      私 達は同時に100 000 GPBを買い、売りました。合計としてGBPが0の場合、『資産』タブはこの通貨を表示しません。この場合ではUSDを売り、別の時に買いました。証拠金 通貨はUSDなので、資産タブは現在の残高で計算し合計をします。JPYは2つの取引に入っているので、タブも合計値を表示します。




      このセクションは取引モデルに沿って取引をする方が、資金の運用法を理解するのに役立ちます。前のモデルとの違いは、取引実行 時に資金がすぐに引き落とし/入金される点です。例えば、EURRUBの購入時にすぐにユーロを取得し、残高からは相当する額のルーブルが引き落とされま す。取引時に口座残高はマイナスになることがあります(借りている資金で取引を行っている場合に、補てんに取得した資産が使われる)。このような場合『資 産』タブで、口座の取引状況を簡単に理解することができます。

      ここでは追加でリクイディティ価格(口座上の資金の合計や市場価格による現在のポジション決済の価格/結果)が表示されます。





    2. 取引操作履歴での取引タイプの表示エラーを修正しました。
    3. 取引口座への再接続時にリスクに関する通知ウィンドウが再表示されるエラーを修正しました。
    4. 多数のシンボル(数千またはそれ以上)がある場合の取引銘柄の選択ダイアログの動作が修正および最適化されました。
    5. 移動平均をベースに計算を行う内蔵インディケータ(Bollinger Bands、Adaptive Moving Averageなど)のレベル表示が修正されました。サブウィンドウでインディケータを表示した際にエラーが発生していました。
    6. いくつかのケースで先物取引の発注を行うことができなくなるエラーを修正しました。注文価格が取引価格の上限/下限価格と一致する場合にエラーが発生していました。

    MQL5

    1. MQL5プログラムのコンパイルが高速化および最適化されました。
    2. クラス、構造体、関数の為のfinalとoverrideの修飾子のサポートが追加されました。

      クラスと構造体の為のfinal修飾子
      final 修飾子は、クラスまたは構造体の宣言時にそこからのさらなる継承を禁止します。クラス(構造体)がそこへ更なる変更を加える必要がないものである、または セキュリティ上の理由で変更が許可されていない場合は、それをfinal修飾子で宣言してください。また、全てのクラスのメソッドも暗黙的にfinalと みなされます。
      class CFoo final
        {
        //--- クラス本体
        };
       
      class CBar : public CFoo
        {
        //--- クラス本体
        };
      final修飾子を使用したクラスからの継承を試行すると、上記の例で示したように、コンパイルはエラーを出します。
      cannot inherit from 'CFoo' as it has been declared as 'final'
      see declaration of 'CFoo'

      関数の為のoverride修飾子
      override修飾子は、宣言される関数は必ず親クラスのメソッドをオーバーライ ドする必要があるということを意味しています。この修飾子を使用することで、オーバーライド時のメソッドシグネチャのランダムな変更といったエラーを回避 することができます。例として、基底クラスで引数としてint型変数を取るfuncメソッドを定義します。
      class CFoo
        {
         void virtual func(int x) const { }
        };
      次にメソッドを派生クラスでオーバーライドします:
      class CBar : public CFoo
        {
         void func(short x) { }
        };
      しかしエラーによって引数の型がintからshortに変わります。実際には、このような場合、オーバーライドではなくメソッドのオーバーロードが起こります。オーバーロードされた関数定義のアルゴリズムに従い、特定のケースにおいてコンパイラがオーバーライドされたメソッドの代わりに基底クラスで定義されたメソッドを選択することがあります。

      このようなエラーを回避する為には、明示的にオーバーライドメソッドにoverride修飾子を追加する必要があります。
      class CBar : public CFoo
        {
         void func(short x) override { }
        };
      オーバーライド時にメソッドシグネチャが変更された場合、コンパイラは親クラスで全く同じシグネチャを見つけることができず、コンパイルエラーを出します。
      'CBar::func' method is declared with 'override' specifier but does not override any base class method

      関数の為のfinal修飾子

      final修飾子は逆に、派生クラスでのメソッドのオーバーライドを禁止します。メソッドの実装が十分であり、完全に禁止されている場合、派生クラスで変更されないようにするためにfinal修飾子を使って宣言してください。
      class CFoo
        {
         void virtual func(int x) final { }
        };
       
      class CBar : public CFoo
        {
         void func(int) { }
        };
       
      final修飾子を使用したメソッドのオーバーライドを試行すると、上記の例で示したように、コンパイルはエラーを出します。
      'CFoo::func' method declared as 'final' cannot be overridden by 'CBar::func'
      see declaration of 'CFoo::func'
    3. デフォルトのパラメータを持つテンプレート関数のコンパイルエラーを修正しました。

    マーケット

    1. マーケットの製品のソートにおける一連のエラーを修正しました。

    テスター

    1. ビジュアルテストモードでの保有注文/ポジションの現在の市場価格の更新を修正しました。
    2. 取引銘柄でのテスト時のBuy LimitとSell Limit注文実行のスリッページが削除されました。
    3. いくつかのケースで『始値のみ』モードで、間違った価格が生成されていたエラーを修正しました。
    4. テスト時のOnTradeTransactionイベントの形成が修正されました。
    5. リアルティックに基づくテストの際に、既存の分足バーのlowまたはhighの数値とティック価格(bidかlastかはどの価格にバーが形成されているかによる)の不一致についての情報がテスターの操作ログに表示されます。

    メタエディター

    1. ソースコードのファイル上のデータプロファイリングの表示エラーが修正されました。

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

    19 8月 2016
    MetaTrader 5 build 1395:取引操作のスピードアップとビジュアルテストの改良

    ターミナル

    1. クライアントターミナルでの取引コマンドの送信が最適化され、大幅にスピードアップしました。
    2. Windows 10(build 1607)の32bit版での動作時にターミナルでMQL5プログラムの実行ができないエラーが修正されました。
    3. ナビゲーターに取引口座の動作モード(両建機能取引またはネッティング取引)の表示が追加されました。
    4. 選択した口座でウェブターミナルへ接続する為のコンテキストメニューのコマンドがナビゲーターに追加されました。
    5. 『ヘルプ』メニューが再編され、チュートリアルビデオのリンクが追加されました。
    6. 高解像度の画面での動作時の一連のインターフェイスのエラーを修正しました。
    7. ユーザーインターフェイスのペルシャ語の翻訳の誤りを修正しました。

    MQL5

    1. 抽象オブジェクトのコレクションを作成する'void *'ポインタが追加されました。このタイプの変数に任意のクラスのオブジェクトへのポインタを格納することができます。
      逆変換にはdynamic_cast<クラス名 *>演算子(void *ポインタ)を使用することをお勧めします。キャストができない場合、結果はNULLとなります。
      class CFoo { };
      class CBar { };
      //+------------------------------------------------------------------+
      //| Script program start function                                    |
      //+------------------------------------------------------------------+
      void OnStart()
        {
         void *vptr[2];
         vptr[0]=new CFoo();
         vptr[1]=new CBar();
      //---
         for(int i=0;i<ArraySize(vptr);i++)
           {
            if(dynamic_cast<CFoo *>(vptr[i])!=NULL)
               Print("CFoo * object at index ",i);
            if(dynamic_cast<CBar *>(vptr[i])!=NULL)
               Print("CBar * object at index ",i);
           }
         CFoo *fptr=vptr[1];  // ポインタを与えるエラー、vptr[1]はCFooオブジェクトではありません
        }
      //+------------------------------------------------------------------+
    2. インデックスの文字列からシンボルを取得する、文字列の為の[ ]演算子のサポートが追加されました。指定したインデックスが文字列の範囲外である場合、結果は0となります。
      string text="Hello";
      ushort symb=text[0];  // シンボル'H'のコードを返します
      
    3. INIT_SUCCEEDED (0)またはINIT_FAILED(もしくは任意のゼロの値)のコードを返す、int OnTesterInit(void)シグネチャを伴うTesterInitイベントハンドラの第二バージョンが追加されました。 OnTesterInitがゼロを返す場合、最適化は開始されません。
    4. ChartGetString関数の異なる負荷が異なる結果をもたらしていたエラーを修正しました。

    テスター

    1. ビジュアルテストの為の追加コマンドとホットキーが追加されました。これからはビジュアルテストのチャートをターミナルでも調整することができます(色の変更、各種項目の表示の管理、テンプレートの使用など)。




    2. 『始値のみ』モードでのSleep機能の動作が修正されました。
    3. W1やMN1の時間軸での動作時にバーの不正なステータスの形成をもたらしていたエラーを修正しました。

    メタエディター

    1. ユーザーインターフェイスの翻訳に繁体中国語が追加されました。

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

    8 8月 2016
    MetaTrader 5 iOS build 1371
    • メッセージの外観が一新されました。これからはMQL5.communityでのメッセージのやり取りやデスクトッププラットフォームからの通知は、人気のモバイルメッセンジャーで見慣れたチャット仕様で表示されます。
    • プラットフォームは23か国語に切り替えることができます。トレードで英語を好む場合には、デバイス全体の言語を切り替えることなく、『プログラムについて』のページで英語を有効にしてください。


    前へ1234567891011