MetaTrader 5ビルド1730: MetaEditorでのプロジェクトと合成金融商品

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

20 12月 2017

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

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

  • クライアント端末: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. テスト結果の表示(為替リスク管理モデル)を修正しました。現在、チャートにはエクイティのみが表示されていて、残高と預金額は表示されていません。そのような口座の取引状況は、エクイティレベルに基づいて評価されます。残高は口座にある金額のみを表示し、トレーダーの資産および負債は無視します。為替計算モードでは証拠金は資産/負債の現在の割引価格と等しく、資本とともに変化するため、預金積み増し(証拠金/エクイティ)は表示されません。

  • ユーザインターフェイスがオランダ語でも利用できるようになりました。
  • ドキュメントを更新しました。