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

内蔵ホスティング管理オプションを完全に再設計しました。レンタルした端末に関するすべての情報、および環境の移行、停止関数、開始関数が、[ツールボックス]ウィンドウの個別のタブで利用できるようになりました。

5 10月 2019

ターミナル

  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システムを介して利用できるようになります。