MetaTrader 5クライアント端末の更新リスト

 

MetaTrader 5プラットフォームの新バージョン build 1200:ティックヒストリーの取得とサービスの支払いが直に

2015年10月23日金曜日、MetaTrader 5プラットフォームの更新が行われます。更新には以下の内容が含まれます。
  1. ター ミナル:マーケットウォッチにティックヒストリーが7追加されました。もし以前にティックチャートが、動作時間にターミナルに溜まった履歴しか表示してい なかったとしたら、これからは取引サーバーにある全てのティックヒストリーを利用することができます。通常の価格チャートでそうなっているように、不足し ている履歴があるので、それを取引サーバーからインストールする為に、オートスクロールを無効にし、マウスでティックチャートを過去の方へスクロールして ください。新しい機能は、価格変動の詳細チャートを最大限に受け取りたいトレーダーにとって有益なものになります。



    より深いティックヒストリーを自動で受け取る為には、 CopyTicks()の機能を使ってください。不足している履歴が取引サーバーにある場合、それを照会、およびインストールするように機能が変更されます。

  2. ホスティングとシグナル:これからはバーチャルホスティングと取引シグナルへの購読に対して、支払システムを通じて直に支払うことができます。
    ホスティングの支払いの為に、MQL5.communityを開いたり、アカウントに入金しなくても大丈夫です。これからは、プラットフォームの支払いシステムの中から、すぐにサービスへのお支払が可能です。



    お客様に合ったシステムを選択し、支払いを行ってください。




    同様に、お客様に合った支払システムを選択していただくだけで、直にターミナルから、有料取引シグナル購読の手続きが行えます。




    必要な金額がお客様のMQL5.communityのアカウントに入金され、その後、そこから支払いが行われます。このようにして、ホスティングレンタル やシグナル購読の履歴を常に明瞭にすることができます。また、MQL5.communityのサービスに自身が行った全ての支払いを見ることができます。

  3. MQL5:新しい最適なコンパイラーが始動しました64ビットのプラットフォーム上のプログラムの実行が5倍まで加速しています。MQL5-プログラムは、最新バージョンのMetaEditorで再コンパイルする必要があります。

  4. ターミナル1:チャート上の『ワンクリック取引』のパネルのそばに、素早くマーケットデプスのオン/オフができるアイコンが追加されました。同様に、新しいホットキーAlt+Bでも使用できます。また、これはチャート内だけではなく、Market Watchウィンドウでも動作し、この際は、マーケットウォッチ内で選ばれたシンボルのマーケットデプスが開きます。





  5. ターミナル:コンピュータの性能とOSの記録が、クライアントターミナルに追加されました。例:
    2015.10.14 14:48:18.486	Data Folder: C:\Program Files\MetaTrader 5
    2015.10.14 14:48:18.486	Windows 7 Professional (x64 based PC), IE 11.00, UAC, 8 x Intel Core i7  920 @ 2.67GHz, RAM: 8116 / 12277 Mb, HDD: 534262 / 753865 Mb, GMT+03:00
    2015.10.14 14:48:18.486	MetaTrader 5 build 1190 started (MetaQuotes Software Corp.)
  6. ターミナル:『マーケットウォッチ』内のシンボルとの動作が改良されました。

    • マーケットウォッチにシンボル数の表示がマーケットウォッチに、また総利用可能シンボル数が取引サーバーに追加されました。
    • 選択の為のスマートセレクションリストと新しいシンボル追加の列が追加されました。
    • 追加列では検索はシンボル名で行われるだけでなく、その記述やインターナショナル名でも検索されます。




  7. ターミナル:数か国語での経済情勢カレンダーサポートが追加されました。
  8. ターミナル:経済カレンダーに不足している国のアイコンが追加されました。
  9. ターミナル:マーケットウォッチのシンボル管理画面呼出の為のホットキーCtrl+Uが追加されました。
  10. ターミナル:『ウィンドウ』メニューのコマンドによる、開いているチャートウィンドウの配列が修正されました。
  11. ターミナル:強化認証使用の際に、ターミナルが時折、証明書ファイルを見つけられない不具合を修正しました。
  12. ターミナル:時折、価格履歴の同期化ループが起こる不具合を修正しました。
  13. ターミナル:機器がRequest Executionモードで取引をしている場合に、すでに開いているポジションのサイズを大きくした時、StopLoss/TakeProfitのレベルが無効化される不具合を修正しました。
  14. ターミナル:"Long only"モードの機器でロングポジションの際に、売り注文を出すことが可能かのチェックがマーケットデプスで修正されました。
  15. ターミナル:Trailing Stop機能の動作が修正されました。稀に保護されたStop Lossが、オープンポジションの為に誤って動く事がありました。
  16. ターミナル:高解像度の画面での動作へのインターフェースの適応作業を続けています。
  17. ターミナル:MQL5プラグラムのデータに定期的に訴えているにも関わらず、履歴データが使われていないものとしてアンロードされる不具合を修正しました。
  18. ターミナル:Windows 10での動作時のユーザーインターフェイスの要素の表示を修正しました。
  19. ターミナル:ユーザーインターフェイスの翻訳が更新されました。
  20. マーケット:MQL5マーケットの製品データベースの動作が改良および最適化されました。
  21. マーケット:VPSでのターミナル使用による、MQL5.communityのアカウントを持たない購入が禁止されました。今後はターミナルの設定内でMQL5.communityのアカウントを表示する必要があります。ツール―オプション―コミュニティ
  22. マーケット:支払システムUnionPayでの直接の製品購入ができるようになりました。
  23. マーケット:MQL5マーケットでの製品購入時のログが強化されました。
  24. ホスティング:クライアントターミナルの32ビットバージョンでの動作時のバーチャルホスティング(移行を除く)の管理が追加されました。
  25. ホスティング:FTPによる公開許可に関係なく、バーチャルホスティングへのFTPエクスポート設定の移行が修正されました。
  26. MQL5:MqlTick構造のフォーマットが拡張されました。これからは、その中でティックのミリ単位の到来時間が伝達され、同様にどのようなティックのパラメータが変わったのかを確かめることができるフラッグがあります。
    struct MqlTick
      {
       datetime     time;          // 価格の最終更新時間
       double       bid;           // 現在のBid価格
       double       ask;           // 現在のAsk価格
       double       last;          // 最終取引の現在価格(Last)
       ulong        volume;        // 現在のLast価格の為の容量
       long         time_msc;      // ミリ秒単位での最終価格更新時間
       uint         flags;         // ティックフラッグ
      };
    全てのフラッグは、前回のティックと比べデータが変わったかどうかに関わらず、いつも全てのパラメータで埋められます。ティックヒストリーごとに前回の数 値を検索することなく、あらゆる瞬間の現在の価格状態をいつも見ることができます。例えば、ティックと共にBid価格だけ変わることができましたが、構造 体の中では新しい価格の他に、前回のAsk価格、容量など、他のパラメータも表示されます。現在のティックのデータとどう変わったかを知るためには、その フラッグを分析してください。

    • TICK_FLAG_BID - ティックがBid価格を変更した
    • TICK_FLAG_ASK  - ティックがAsk価格を変更した
    • TICK_FLAG_LAST - ティックが最終取引価格を変更した
    • TICK_FLAG_VOLUME - ティックが容量を変更した
    • TICK_FLAG_BUY - 買い取引の結果にティックが発生した
    • TICK_FLAG_SELL - 売り取引の結果にティックが発生した

    MqlTick構造体は2つのメソッドにて使用されます。
    • CopyTicks - メソッドは構造体の古いフォーマットを保っていません。ティックの古いフォーマットを使用する、以前にコンパイルされたEX5ファイルは、 CopyTicksの機能呼出時に、エラー4006を返します。(ERR_MQL_INVALID_ARRAY)
    • SymbolInfoTick - メソッドは構造体の古いフォーマットも、新しいフォーマットも保っています。

  27. MQL5: C++のようにパラメータ化されたクラスを作成することができるクラステンプレートが追加されました。これは、より多く抽出したり、一様に異なるクラスのオブジェクト操作の為に同じコードを使用することを可能にするものです。使用例:
    //+------------------------------------------------------------------+
    //|                                                    TemplTest.mq5 |
    //|                        Copyright 2015, MetaQuotes Software Corp. |
    //|                                             https://www.mql5.com |
    //+------------------------------------------------------------------+
    #property copyright "Copyright 2015, MetaQuotes Software Corp."
    #property link      "https://www.mql5.com"
    #property version   "1.00"
    //+------------------------------------------------------------------+
    //| クラステンプレートを指定                                               |
    //+------------------------------------------------------------------+
    template<typename T>
    class TArray
      {
    protected:
       T                 m_data[];
    
    public:
    
       bool              Append(T item)
         {
          int new_size=ArraySize(m_data)+1;
          int reserve =(new_size/2+15)&~15;
          //---
          if(ArrayResize(m_data,new_size,reserve)!=new_size)
             return(false);
          //---
          m_data[new_size-1]=item;
          return(true);
         }
       T                 operator[](int index)
         {
          static T invalid_index;
          //---
          if(index<0 || index>=ArraySize(m_data))
             return(invalid_index);
          //---
          return(m_data[index]);
         }   
      };
    //+------------------------------------------------------------------+
    //| ポインター配列は                                                    |
    //| デストラクタで保存されたオブジェクト、ポインターを削除します。                   |
    //|                                                                  |
    //| クラステンプレートのTArrayからの継承にご注意ください。                       |
    //+------------------------------------------------------------------+
    template<typename T>
    class TArrayPtr : public TArray<T *>
      {
    public:
       void             ~TArrayPtr()
         {
          for(int n=0,count=ArraySize(m_data);n<count;n++)
             if(CheckPointer(m_data[n])==POINTER_DYNAMIC)
                delete m_data[n];
         }
      };
    //+------------------------------------------------------------------+
    //| クラスを指示し、そのオブジェクトへのポインターは配列に保管されます。             |
    //+------------------------------------------------------------------+
    class CFoo
      {
       int               m_x;
    public:
                         CFoo(int x):m_x(x) { }
       int               X(void) const { return(m_x); }
      };
    //+------------------------------------------------------------------+
    //|                                                                  |
    //+------------------------------------------------------------------+
    TArray<int>     ExtIntArray;   // TArrayテンプレートをインスタンス化 (int型によってTArrayテンプレートを専門化する)
    TArray<double>  ExtDblArray;   // TArrayテンプレートをインスタンス化 (double型によってTArrayテンプレートを専門化する)
    TArrayPtr<CFoo> ExtPtrArray;   // TArrayPtrテンプレートをインスタンス化 (CFoo型によってTArrayPtrテンプレートを専門化する)
    //+------------------------------------------------------------------+
    //| Script program start function                                    |
    //+------------------------------------------------------------------+
    void OnStart()
      {
    //--- 配列にデータを入れる
       for(int i=0;i<10;i++)
         {
          int integer=i+10;
          ExtIntArray.Append(integer);
          
          double dbl=i+20.0;
          ExtDblArray.Append(dbl);
          
          CFoo *ptr=new CFoo(i+30);
          ExtPtrArray.Append(ptr);
         }
    //--- 配列の内容を出力
       string str="Int:";
       for(int i=0;i<10;i++)
          str+=" "+(string)ExtIntArray[i];      
       Print(str);   
       str="Dbl:";
       for(int i=0;i<10;i++)
          str+=" "+DoubleToString(ExtDblArray[i],1);
       Print(str);   
       str="Ptr:";
       for(int i=0;i<10;i++)
          str+=" "+(string)ExtPtrArray[i].X();      
       Print(str);
    //--- TArrayPtr<CFoo>のオブジェクトのデストラクタで削除されるので、newを通して作成されたCFooのオブジェクトは削除しなくても良い。  
      }
    実行結果:
    TemplTest (EURUSD,H1)    Int: 10 11 12 13 14 15 16 17 18 19
    TemplTest (EURUSD,H1)    Dbl: 20.0 21.0 22.0 23.0 24.0 25.0 26.0 27.0 28.0 29.0
    TemplTest (EURUSD,H1)    Ptr: 30 31 32 33 34 35 36 37 38 39

  28. MQL5: 新しい操作*と&が追加され、参照による変数の受信や変数への参照の受信が可能になりました。
  29. MQL5:オーバーロード形式の機能ObjectsDeleteAllが追加されました。チャートウィンドウ内で指定されたタイプの全てのオブジェクトを名前の接頭辞によって削除します。
    int  ObjectsDeleteAll(
       long           chart_id,   // チャートID
       const string     prefix,   // オブジェクト名の接頭辞
       int       sub_window=-1,   // ウィンドウインデックス
       int      object_type=-1    // 削除の為のオブジェクトタイプ
       );

  30. MQL5:ObjectGetValueByTime機能の動作が修正されました。 以前、時折(例えば水平トレンドラインのため)チャート内の時間ごとの価格の数値が誤って戻ることがありました。
  31. MQL5:サーバーに履歴データがない場合の、Copy*機能の動作が修正されました。 以前はサーバーにデータがない場合に、これらの機能の呼出は、制御が戻る前に30~50秒の遅滞を起こすことがありました。
  32. MQL5: MQL5のスタンダードライブラリにいくつかの改良がくわえられました。
  33. MQL5: スタンダードライブラリのドキュメントがドイツ語、フランス語、中国語、トルコ語、スペイン語、ポルトガル語に翻訳されました。
  34. MQL5: MQL5の日本語版ドキュメントが追加されました。
  35. Tester: ストラテジーテスターで実行の為のプログラム選択がとても便利になりました。アドバイザーとインディケーターがあるディレクトリと適合するツリー形式でリストが表示されます。




  36. Tester: 可視テスト時、クライアントターミナルに応じたいくつかのインディケーターの表示が導入されました。
  37. Tester: ストラテジーテスターを経由してMQL5プログラムのデバッグ時に、レバレッジとタイムフレームチャートが出る不具合を修正しました。
  38. Tester: ヒストリーデータにおけるテスト時のインディケータのデバックが修正されました。
  39. クラッシュログで報告された不具合を修正しました。
  40. ドキュメントが更新されました。


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

 

MetaTrader 5プラットフォームの新バージョン build 1210:マーケットデプスの強化と一般の修正

2015年10月30日金曜日、MetaTrader 5プラットフォームの更新が行われます。更新には以下の内容が含まれます。

  1. ターミナル: マーケットデプスで市場よりも良くないリミットオーダーをだすことが可能になりました。これによって、株式取引市場における指定金額でのオーダーの実行の保障が得られます。
    リミットオーダーが買いと売りの注文のボーダーを超えて移される時は、ストップオーダーになります。(Buy LimitはBuy Stopに代わり、Sell LimitはSell Stopに代わります)これからは、リミットオーダーがストップオーダーに代わらない為には、ドラッグの際にCrtlキーを押してください。




  2. ターミナル: チャートの設定に『クイック注文ボタンを表示する』のオプションが追加されました。これにより、クイック注文とマーケットデプスのパネルを呼び出すボタンを隠すことができます。



  3. ターミナル: 時折、他のアプリケーションと共に現れるプロンプトの紛争につながる不具合を修正しました。
  4. MQL5: AS_SERIESフラグを持つ動的配列の履歴データのコピー関数Copy*の動作が修正されました。フラグはArraySetAsSeries関数によって設定され、配列要素の指数化が時系列で実行されることを示します。
  5. MQL5: ChartSetIntegerとChartGetIntegerを使用する動作の為に、CHART_SHOW_ONE_CLICKの性能が変更されました。以前は、それでチャート上のクイック注文パネルを表示したり隠したりすることができました。これからは、この性能は追加でクイック注文パネル呼出ボタンやマーケットデプスボタンをチャート上に表示したり隠したりします。(チャート設定の中の『クイック注文ボタンを表示する』オプションと同様)
  6. MQL5: テンプレートの動作の不具合を修正しました。
  7. ドキュメントが更新されました。

LiveUpdateシステムを介して更新されます。
 

MetaTrader 5プラットフォームの新バージョン build 1240: 動作速度の改善と内蔵ビデオ

2015年12月17日(木)、MetaTrader 5プラットフォームの更新が行われます。更新には以下の内容が含まれます。

  1. ホスティング: 仮想サーバのダイアログにチュートリアルビデオ『仮想プラットフォームをレンタルする方法』へのリンクが追加されました。このビデオは2分程度です。是非ご覧いただき、いかに年中無休のコピートレードや取引ロボットの起動が簡単かを知ってください。


    このビデオや、その他のビデオはYoutubeのMetaQuotes Software Corp.公式チャンネルにてご覧いただけます。
  2. ターミナル: 高周波の取引操作(1秒に50以上の操作)を実行する際、開いている注文とポジションのリストの更新速度が速くなりました。
  3. ターミナル: 多くの(数万の)取引ツール数の時の取引サーバとターミナルの初期同期化が最適化され、遥かに速くなりました。これからは、接続後、もっと素早く活動を始めることができます。
  4. ターミナル: ターミナルのメモリの消費が遥かに少なくなり、最適化されました。
  5. ターミナル: ターミナルの開閉時にマーケットデプスの設定の保存と復元される機能が追加されました。
  6. ターミナル: ターミナルのウィンドウをドラッグする際、Windows 10で起こっていたアーティファクトを修正しました。
  7. ターミナル: コマンドやダイアログの為のコンテキストヘルプの動作が修正されました。ヘルプの呼出には、実際のエレメントにカーソルを合わせF1キーを押してください。
  8. ターミナル:高解像度の画面での動作へのインターフェースの適応作業を続けています。
  9. MQL5: 注文と取引情報を取得する関数、OrderGetStringとHistoryOrderGetString、HistoryDealGetStringに新しいプロパティが追加されました。

    • ORDER_EXTERNAL_ID - 外部取引システムにおける注文の識別子。(株式市場)
    • DEAL_EXTERNAL_ID - 外部取引システムにおける取引の識別子。

  10. MQL5: 構造体とクラスを伴う動作時の、関数ZeroMemoryの動作が修正されました。時折、メモリの解放が行われませんでした。
  11. MQL5: 関数SendFTPの動作時のエラーコードが追加されました。関数は、設定ウィンドウの『FTP』タブで指定されたアドレスへファイルを送信します。

    • ERR_FTP_NOSERVER - 設定でftpサーバが指定されていません。
    • ERR_FTP_NOLOGIN - 設定でftpログインが指定されていません。
    • ERR_FTP_FILE_ERROR - ファイルが存在しません。
    • ERR_FTP_CONNECT_FAILED - ftpサーバへの接続に失敗しました。
    • ERR_FTP_CHANGEDIR - ftpサーバ上にファイルのアップロードの為のディレクトリが見つかりません。
    • ERR_FTP_CLOSED - ftpサーバへの接続が閉じています。

  12. MQL5: 継承による継承先から継承元へのオブジェクトの移行の検証が修正されました。
  13. MQL5: クラステンプレートの一連のエラーを修正しました。
  14. MQL5: 関数CopyTicksによるティックの照会時のエラーを修正しました。連続同一取引ティック(1つのオブジェクトと1つのLast価格)のためのパラメータCOPY_TICKS_TRADE指定時(取引ティックのみコピー)にそれらの内の始めのものだけが反応していました。
  15. MQL5: カスタムタイプの変数のサイズ決定におけるエラーを修正しました。
  16. MQL5: 開梱の無限サイクルを引き起こしていた、関数CryptDecodeのZLib使用時のエラーを修正しました。
  17. テスター: テストの主要ツールとは異なる取引ツールによる価格履歴同期化のエラーを修正しました。
  18. テスター: OnTradeTransactionの処理での取引トランザクションTRADE_TRANSACTION_DEAL_ADD(取引の履歴への追加)のバックアップが修正されました。
  19. MetaEditor: MQL5マスターにチュートリアルビデオ『MQL5マスターでの取引ロボットの作成方法』のリンクが追加されました。この3分程のビデオをご覧いただき、1つのコード配列を書くことなく、取引ロボットを作成してみてください。


    このビデオや、その他のビデオはYoutubeのMetaQuotes Software Corp.公式チャンネルにてご覧いただけます。
  20. テスター: 遺伝的最適化の際のフォワードテストの実行が変更されました。これからは、フォワードテストには遺伝的最適化の後で得られたすべての唯一無二の結果が関係します。以前は4分の1の結果しか使われていませんでした。
  21. MetaEditor: ウィンドウのうちの1つが完全に展開している場合に、開いているウィンドウの整理コマンドの動作を修正しました。『ウィンドウ』メニューから、開いているファイルをモザイク、垂直、水平、直列に配置することができます。
  22. ターミナル:インターフェースの高解像度の画面(4K)での動作の適応作業を続けています。
  23. ホスティング: エキスパートアドバイザから呼び出されるカスタムインディケータのEX5ライブラリ、またはカスタムインディケータの呼出時のホスティングへの移行のエラーを修正しました。
  24. ドキュメントが更新されました。

LiveUpdateシステムを介して更新されます。

 

MetaTrader 5プラットフォームの新バージョン build 1325:ヘッジ取引と実際のティックによるテスト

2016年4月22日金曜日、MetaTrader 5プラットフォームの更新が行われます。更新には以下の内容が含まれます。

  1. ターミナル:リテールFXの可能性を拡大する為に、プラットフォームに2つ目の計算システムであるヘッジングが追加されました。これからは、シンボルごとに、反対方向のものを含む、多数のポジションを持つことができます。これによって、いわゆる『ロック』を使った取引戦略を実装することができ、つまり、もし価格がトレーダーに反する方向へ向かった場合、反対方向にポジションを開くことができます。

    新しい計算システムは、MetaTrader 4で使用されているものと同様なので、トレーダーに馴染みのあるものです。また、トレーダーは、複数の取引の実行(部分的なものも含む)や、MQL5 Cloud Networkのサポートを持つ多通貨・マルチスレッドテスターなど、第五世代プラットフォームの全ての長所を使用することができます。

    これからは、一つのシンボルにつき一つのポジションしか持つことができない、ネッティングを使用しているアカウントと同じアカウントで、株式取引を行うことができます。また、同じプラットフォームの他のアカウントで、FX取引やヘッジングを使用することもできます。

    ヘッジアカウントの取得方法とポジション計算タイプの参照場所
    ポジション計算のタイプはアカウントレベルで設定され、これはターミナルウィンドウのヘッダやログに表示されます。



    ヘッジングのデモアカウントを開設する為には、対応するオプションを有効にしてください。




    ネッティングシステム
    この計算システムは、アカウント上では一度に1つのシンボルにつき1つのポジションのみ開くことができるということを念頭に置いています。

    • ポジションを持っている場合、同じ方向での取引実行時にこのポジションのボリュームを増加させます。
    • 逆方向に取引が実行された場合、既存のポジションのボリュームを小さくし、これを閉じたり(現在のポジションボリュームと等しいボリュームでの取引実行時)反転させます(もし反対方向の取引のボリュームが現在のポジションよりも大きい場合)。


    この時、どのようなアクションの結果、反対方向に取引が行われるかや、市場の注文や指値注文の実行の結果は重要ではありません。

    以下に、0.5ロットのボリュームでのEURUSDの二つの買い取引の実行例を引用しました。


    これらの取引の実行結果は、1ロットのボリュームの1つの共通ポジションになりました。

    ヘッジングシステム
    この計算システムはアカウントに、同じシンボルに対し反対方向のものを含む、複数の取引ポジションを持つことを可能にします。

    取引シンボルに開いているポジションがあり、トレーダーが新しい取引を実行する(または指値注文が作動する)場合、新しいポジションが開かれます。既存のポジションは変化しません。

    以下に、0.5ロットのボリュームでのEURUSDの二つの買い取引の実行例を引用しました。


    これらの取引が実行された結果、2つの別個のポジションが開かれました。

    新しい取引操作タイプ Close By
    ヘッジングポジション計算のアカウントの為に、反対のポジションを閉じる新しいタイプの取引操作が追加されました。この操作によって、同じシンボルでの反対方向の2つのポジションを同時に閉じることができます。もし相対するポジションが様々なロット数を持っている場合、2つのうちの1つの注文のみが開いたまま残ります。このボリュームは、2つのクローズポジションのロット差と等しくなり、ポジションの方向とオープン価格は、クローズポジションのうちの(ボリューム的に)大きい方と等しくなります。

    2つのポジションの単一のクローズと比較すると、相対クローズでは、トレーダーは1つのスプレッドを節約することができます。

    • 単一クローズの場合、トレーダーは2回スプレッドを払うことになります。より低い価格(Bid)で買いを閉じ、より高い価格(Ask)で売りを閉じます。
    • 最初のポジションを閉じる為の相対クローズでは、2つ目のポジションのオープン価格を使用し、2つ目のポジションには最初のポジションのオープン価格が使用されます。


    相対ポジションのクローズ時に、『close by』のタイプの注文が設定されます。閉じられるポジションのチケットが、コメントで指定されます。相対ポジションのペアのクローズは、『out by』タイプの2つの取引によって行われます。両方のポジションのクローズの結果によって得られる取引の利益/損失のサイズは、1つの取引でのみ指定されます。



  2. テスター:取引ロボットとテクニカルインディケータの実際のティックヒストリーでのテストが可能になりました。

    実際ティックでのテストと最適化は実際の条件に最大限に近くなります。分足データをベースに生成されたものの代わりに金融商品ごとに証券会社によって収集された実際ティックが使用されます。これらのティックは、取引所や流動性プロバイダーからのものです。

    実際のティックによるテストもしくは最適化を開始する為には、ストラテジーテスターで適切なモードを選択してください。



    ティックデータは分足データよりも遥かに大きいサイズを持っています。初めにテストを起動する際には、これらのダウンロードに時間がかかる場合があります。ダウンロードされたティックデータは、月ごとにTKSファイル\bases\[取引サーバ名]\ticks\[シンボル名]に保存されます。

    実際ティックでのテストの特徴
    実際ティックでのテストの際には、スプレッドは分足バーの領域内で変わることがあり、その場合、1分間の中でのティックティック生成時に相応するバーで決まっているスプレッドが使用されます。

    もしシンボルによってマーケットデプスが中継される場合、バーはきっちりと最終取引(Last)実行価格で構築されます。他の場合では、テスターは初めにLastの価格でバーを構築しようと試みますが、それがない場合にのみBid価格を使用します。そこにLast価格があったかどうかに関係なく、OnTickの発生は全てのティックで起こります。

    チャートがLast値で構築されていたとしても、取引操作はいつもBidとAskの価格によって行われる点にご注意ください。例えば、バーの始値を使用するエキスパートアドバイザは一つの価格(Last)に基づいてシグナルを取得しますが、取引の実行は他の価格(BidまたはAsk)で行われます。『全ティック』生成モード使用時には、バーはBid価格で構築され、取引はBidやAsk価格で実行されます。この時Askは、Bid+分足バーに相応する固定スプレッドで計算されます。

    もしシンボルの履歴に分足バーがあるが、その分に対するティックデータがない場合、テスターは『全ティック』モードでティックを生成します。これによって、ブローカーに完全なティックデータがない場合の、計画した期間中におけるエキスパートアドバイザのテストをすることが可能になります。もしシンボルの履歴に分足バーがないが、その分に対するティックデータがある場合、これらのティックは無視されます。分足データはより信頼性が高いと考えられています。

    MQL5 Cloud Networkでの実際ティックによるテスト
    実際ティックでのテストは、ローカルやリモートエージェントだけでなく、MQL5 Cloud Networkを介しても利用することができます。数か月かかるストラテジーの最適化も、数千のコンピュータの計算能力を用いることで数時間で実行することができます。

    ネットワークを介したテストを行うには、クラウドエージェントの使用をオンにしてください。



    MQL5 Cloud Networkを介した実際ティック上でのテストでは、大量のインターネットトラフィックが転送されることがあります。これは、コンピュータネットワークの使用に対する最終コストに大きく影響を与えます。


  3. ターミナル:プラットフォームのヘッジングサポートの、MetaTrader 4からのアカウントの転送機能が拡張されました。これからは、ブローカーはMetaTrader 5のアカウントを全ての操作と一緒に自動モードで転送することができます。(建玉、指値、全ての取引履歴)

    MetaTrader 4から転送されたアカウントへの最初の接続時に、ウェルカムページが表示されます。転送は安全に行われます。作業を開始する前に、以前にMetaTrader 4で使用していたアカウントのパスワードを入力し、それから新しいパスワードを設定してください。



    接続後は、MetaTrader 5で始めからアカウントを開いていたかのように通常モードで作業することができ、MetaTrader 4の全ての取引履歴は自動的に新しいアカウントに保存されます。

    インポート時に、注文とポジションのチケット(注文履歴を含む)は、MetaTrader 4の取引履歴の一つの記録は、MetaTrader 5の取引履歴の4つの記録までに相応するので保存されません。全ての取引記録には、新しいチケットが割り当てられます。

    アカウント番号は、ブローカーがインポートをする方法に応じて、保存されるか、または新しいものに置き換えられます。


  4. ターミナル:チャットが追加されました。これからは、取引プラットフォームで直にMQL5.communityの友人や仲間と交流することができます。チャットでは、MQL5アカウントの全ての個人メッセージが表示されます。交流の前に、チャット画面やプラットフォームの設定から自分のアカウントにログインしてください。(サービス->設定->コミュニティ)




  5. ターミナル:デモアカウント開設のダイアログが簡素化され、ヘッジ機能付きアカウントを開設することができるようになりました。これからは、長いアンケートを記入する必要はなく、主要データを表示し取引パラメータを選択するだけで十分です。



  6. ターミナル:プラットフォームを使った作業の迅速な開始の為に、デモアカウントの自動割り当てが追加されました。もし、プラットフォームにまだ一つもアカウントがない場合、起動時に最初の利用可能な取引サーバでデモアカウントを割り当てます。開設に成功した後、アカウントはすぐに接続されます。

  7. ターミナル:これからは、各ポジションにはチケット(ユニークナンバー)があります。通常、ポジションが開かれた注文のチケットと一致します(サーバーでの操作の結果チケットが変更された場合を除く)。例えば、ポジションの再オープンによるスワップの加算です。ターミナルの新しいバージョンへのアップデート後、以前に開かれたポジションには、チケットが自動的に割り当てられます。




  8. ターミナル:ポジションの方向転換をもたらす市場発注の際のストップロスとテイクプロフィットのレベル設定が修正されました。以前は、新しいポジションでは適切なレベルが設定されませんでした。
  9. ターミナル:ワンクリック注文パネルのコントロール要素で、小数点以下4桁以上を持つ価格の表示が修正されました。
  10. ターミナル:印刷前のプレビューウィンドウのニュース表示のエラーを修正しました。
  11. ターミナル:ティックチャートの表示エラーを修正しました。
  12. ターミナル:ターミナルの強制終了後のマーケットデプスの開始が修正されました。
  13. ターミナル:ワンクリック注文パネルのコントロール要素の表示の際に、成行注文の許可のチェックが追加されました。
  14. ターミナル:多数の開かれた注文やポジションがある場合の、マージンと利益の計算が最適化されました。
  15. ターミナル:ユーザーインターフェースのマレー語への翻訳が追加されました。
  16. ターミナル:マニュアルが全体的に更新されました。新しいデザイン、インタラクティブなスクリーンショット、そして内蔵されたビデオなど、これらは全てMetaTrader 5を使った取引の学習を最大限に簡単で便利なものにする為にあります。




  17. ターミナル:『上からのチャート』モードでのグラフィックオブジェクトの表示が修正されました。

  18. MQL5:MQL5言語の新しい機能の追加とMetaTrader 5プラットフォームにヘッジングが登場したことに関連し、実行されるEX5ファイルのフォーマットが変更されました。以前のビルドのMetaEditorでコンパイルされた全ての古いEX5プログラムは、更新後に正常に動作するため、上位互換性は完全に確保されます。

    この時、1325以降のビルドでコンパイルされたEX5プログラムは、古いビルドのターミナルでは動作せず、下位互換性はありません。
  19. MQL5:抽象クラスと純粋仮想関数のサポートが追加されました。

    抽象クラスは、将来におけるより具体的な派生クラスを作成する一般的なエンティティを作成する為に作られています。抽象クラスは、いくつかの他のクラスの為に基底クラスとして使用することができるだけなので、抽象クラスのオブジェクトタイプを作成することはできません。

    純粋仮想関数を一つでも含むクラスは、抽象クラスとなります。したがって、抽象クラスから派生したクラスは、その純粋仮想関数を実装する必要があり、そうしないと、これらは同様に抽象クラスになります。

    仮想関数は、純粋指定子構文を使用し、『純粋』として宣言されます。例として、共通機能を提供する為だけ型に作成されるCAnimalクラスを見てみましょう。CAnimalのオブジェクト自体は、実際の使用には一般的すぎます。したがって、CAnimalクラスは、抽象クラスの為の良い例となります。
    class CAnimal
      {
    public:
                          CAnimal();     // 構造
       virtual void       Sound() = 0;   // 純粋仮想関数
    private:
       double             m_legs_count;  // 足数
      };
    ここでのSound()関数は、純粋仮想関数PURE(=0)の指定子で宣言されている為、純粋仮想となります。

    (=NULL)または(=0)と純粋指定子PUREが指定されている仮想関数のみが純粋仮想関数となります。抽象クラスの使用と宣言例:
    class CAnimal
      {
    public:
       virtual void       Sound()=NULL;   // PUREメソッドは派生クラスでオーバーライドする必要があり、CAnimalクラス自体は抽象クラスになり、作成されません
      };
    //--- 抽象クラスからの子孫
    class CCat : public CAnimal
     {
    public:
      virtual void        Sound() { Print("Myau"); } // PUREは再定義され、CCatクラスは抽象ではなく作成されません
     };
    
    //--- 誤用例
    new CAnimal;         // エラー『CAnimal』-コンパイラはエラー"cannot instantiate abstract class"を出します
    CAnimal some_animal; // エラー『CAnimal』- コンパイラはエラー『cannot instantiate abstract class』を出します
    
    //--- 正しい使用例
    new CCat;  // エラーはありません。CCatクラスは抽象ではありません
    CCat cat;  // エラーはありません。CCatクラスは抽象ではありません
    抽象クラス使用の制限
    純粋仮想関数(直接または間接)の抽象クラスのコンストラクタによる呼び出しの際、結果は未定義になります。
    //+------------------------------------------------------------------+
    //| 抽象基底クラス                                                     |
    //+------------------------------------------------------------------+
    class CAnimal
      {
    public:
       //--- 純粋仮想関数
       virtual void      Sound(void)=NULL;
       //--- 関数
       void              CallSound(void) { Sound(); }
       //--- コンストラクタ
       CAnimal()
        {
         //--- 仮想メソッドの明示的呼び出し
         Sound();
         //--- 暗黙的呼び出し(第三関数を介して)
         CallSound();
         //--- コンストラクタまたはデストラクタでは、常に自分の関数が呼び出されます
         //--- 仮想性や子孫を呼び出す関数に関わりません
         //--- もし呼び出される関数が純粋仮想である場合、
         //--- 呼び出しは重大な実行エラー"pure virtual function call"をもたらします
        }
      };
    しかしながら、抽象クラスのコンストラクタとデストラクタは、他のメンバー関数を呼び出すことができます。

  20. MQL5:イベントモデルの構成の簡素化の為に、関数へのポインターのサポートが追加されました。

    関数へのポインターを宣言する為には、『関数へのポインター』のタイプを明確にしてください。
    typedef int (*TFunc)(int,int);
    これで、TFuncがタイプとなり、変数の関数ポインターを宣言することができます。
    TFunc func_ptr;
    func_ptr変数に、以後の呼び出しの為に、関数のアドレスを保存することができます。
    int sub(int x,int y) { return(x-y); }
    int add(int x,int y) { return(x+y); }
    int neg(int x)       { return(~x);  }
    
    func_ptr=sub;
    Print(func_ptr(10,5));
    
    func_ptr=add;
    Print(func_ptr(10,5));
    
    func_ptr=neg;           // エラー: negはint (int,int)型を持っていません
    Print(func_ptr(10));    // エラー: 二つのパラメータが存在する必要があります
    関数のポインターを保存し、パラメータとして引き渡すことができます。クラスの非静的メソッドにポインターを取得することはできません。

  21. MQL5:MqlTradeRequestの取引リクエスト構造体に、二つの新しいフィールドが追加されました。

    • position — ポジションチケット。ヘッジ取引の際やポジションのクローズや変更時に、その明確な識別の為に記入する必要があります。ポジションの識別が取引シンボルの名前で行われる為、ネッティング計算システムでの取引時には、この欄の記入は意味を持ちません。
    • position_by — 相対ポジションのチケット。同じシンボルで、かつ反対方向に開かれた相対ポジションのクローズ時に使用されます。ヘッジポジション計算システムにのみ使用されます。

  22. MQL5:ENUM_TRADE_REQUEST_ACTIONSの取引操作タイプにTRADE_ACTION_CLOSE_BY(相対ポジションクローズ)が追加されました。ヘッジポジション計算システムにのみ使用されます。

  23. MQL5:注文、取引、ポジションのプロパティに、取引操作に相応するチケットが追加されました。

    • ENUM_ORDER_PROPERTY_INTEGERにORDER_TICKET(注文のチケット)が追加されました。固有の番号が各注文に割り当てられます。
    • ENUM_DEAL_PROPERTY_INTEGERにDEAL_TICKET(取引のチケット)が追加されました。固有の番号が各取引に割り当てられます。
    • ENUM_POSITION_PROPERTY_INTEGERにPOSITION_TICKET(ポジションのチケット)が追加されました。固有の番号が各ポジションに割り当てられます。通常、ポジションが開かれた注文のチケットと一致します(サーバーでの操作の結果チケットが変更された場合を除く)。例えば、ポジションの再オープンによるスワップの加算です。その注文によってポジションが開かれた注文を見つけるには、POSITION_IDENTIFIERを使用する必要があります。POSITION_TICKETはMqlTradeRequest::positionと一致します。

  24. MQL5:ENUM_ORDER_TYPEにORDER_TYPE_CLOSE_BY(相対するポジションによるポジションクローズ注文)が追加されました。
  25. MQL5:ENUM_ORDER_PROPERTY_INTEGERに(ORDER_POSITION_BY_IDORDER_TYPE_CLOSE_BY注文の為の相対ポジションの識別子)が追加されました。
  26. MQL5:ENUM_DEAL_ENTRYにDEAL_ENTRY_OUT_BY(相対ポジションをクローズした結果取引が行われた)が追加されました。
  27. 取引トランザクションの構造体MqlTradeTransactionに、2つの同様のフィールドが追加されました。

    • position — トランザクションによって影響を受けるポジションのチケット。市場注文の処理に関わるトランザクション(TRADE_TRANSACTION_ORDER_* ポジションチケットがまだ割り当てられていないTRADE_TRANSACTION_ORDER_ADD以外)と注文履歴(TRADE_TRANSACTION_HISTORY_*)の為に記入します。
    • position_by — 相対ポジションのチケット。同じシンボルで、かつ反対方向に開かれた相対ポジションのクローズ時に使用されます。相対ポジションのクローズの注文(close by)と相対ポジションのクローズの為の取引(out by)の為のみに記入されます。

  28. MQL5:PositionGetTicket関数が追加されました。これはオープンポジションリスト内のインデックスによるポジションチケットを返し、PositionGetDouble、PositionGetInteger、PositionGetString関数を使用し、今後の作業の為に自動的にこの関数を選択します。
    ulong  PositionGetTicket(
       int  index      // ポジションリスト内の番号
       );

  29. MQL5:PositionSelectByTicket関数が追加されました。これは、指定されたチケットによって、今後の作業の為にオープンポジションを選択します。
    bool  PositionSelectByTicket(
       ulong   ticket     // ポジションのチケット
       );

  30. MQL5:ENUM_SYMBOL_INFO_DOUBLEにSYMBOL_MARGIN_HEDGED(カバーされたポジション(一つのシンボルに異なる方向へのポジション)の一つのロットの契約またはマージンのサイズ)が追加されました。

    • 最初のマージンがシンボルの為に指定されている場合(SYMBOL_MARGIN_INITIAL)、ヘッジマージンは絶対値(金額での)として指定されます。
    • 最初のマージンが指定されていない(0と等しい)場合、SYMBOL_MARGIN_HEDGEDに、取引タイプ(SYMBOL_TRADE_CALC_MODE)に相応する式に基づくマージンの計算時に使用される契約サイズが表示されます。

    ヘッジポジションの為のマージン計算の特徴は、 MetaTrader 5取引プラットフォームのユーザーガイドに書かれています。

  31. MQL5:ENUM_ACCOUNT_INFO_INTEGERに、ACCOUNT_MARGIN_MODE(現在の取引アカウントの為のマージン計算モード)が追加されました。

    • ACCOUNT_MARGIN_MODE_RETAIL_NETTINGは、『ネッティング』モード(1つのシンボルに対し、1つのポジションのみ)でのポジション計算をする子場外市場の為に使用されます。シンボルタイプをベースにマージンが計算されます。(SYMBOL_TRADE_CALC_MODE)
    • ACCOUNT_MARGIN_MODE_EXCHANGEは、株式市場の為に使用されます。シンボル設定で指定された割引に基づいてマージンが計算されます。割引はブローカーによって設定されますが、取引所によって決められた値よりも低くなることはありません。
    • ACCOUNT_MARGIN_MODE_RETAIL_HEDGINGは、独立したポジション計算(『ヘッジング』は1つのシンボルに対し、複数のポジションを有することができる)の際、市場外取引の為に使用されます。マージン計算はシンボルタイプ(SYMBOL_TRADE_CALC_MODE)とヘッジマージンのサイズ計算(SYMBOL_MARGIN_HEDGED)をベースに行われます。

  32. MQL5:クライアントターミナルのプロパティENUM_TERMINAL_INFO_INTEGERにTERMINAL_SCREEN_DPI(画像の情報出力解像度は、DPIで測定される)が追加されました。このパラメータを知ることで、異なる解像度のモニターで同じように表示されるように、グラフィックオブジェクトのサイズを指定することができます。

  33. MQL5:クライアントターミナルのプロパティENUM_TERMINAL_INFO_INTEGERにTERMINAL_PING_LAST(マイクロ秒単位の取引サーバーまでのPingの最新の既知値)が追加されました。1秒は100万マイクロ秒です。

  34. MQL5:SendFTP関数呼び出し結果の送信が修正されました。以前は、送信に成功した際に、TRUEの代わりにFALSEが返されていました。
  35. MQL5:幾つかのケースで、"Access violation"エラーに繋がっていたStringConcatenate関数内のエラーを修正しました。
  36. MQL5:テンプレート関数の動作のエラーを修正しました。
  37. MQL5:Print、Alert、Comment関数は、4000以上の文字サイズの列を出力することができるようになりました。
  38. MQL5:配列同士(開始からの初期ポジションの異なるオフセット)の比較の際に起こっていたArrayCompare関数内のエラーを修正しました。
  39. MQL5:スタンダードライブラリにヘッジ取引のヘルプが追加されました。

    CPosition
    以下のメソッドが追加されました。:

    • SelectByMagicは、以後の作業の為のシンボルとマジックナンバーによってポジションを選択します。
    • SelectByTicketは、以後の作業の為のチケットでポジションを選択します。

    CTrade
    以下のメソッドが追加されました。

    • RequestPositionは、ポジションのチケットを取得します。
    • RequestPositionByは、相対ポジションのチケットを取得します。
    • PositionCloseByは、反対方向のポジションチケットの指定によってポジションを閉じます。
    • SetMarginModeは、現在のアカウントの設定に応じて、マージンの計算モードを設定します。

    メソッドのオーバーロードを追加しました。

    • PositionCloseは、チケットによってポジションを閉じます。
    • PositionModifyは、チケットによってポジションを変更します。

    CAccountInfo
    以下のメソッドが変更されました。

    • MarginModeは、今後はマージンの計算モードを取得します。以前は、StopoutMode新メソッドと同様に動作しました。
    • MarginDescriptionは、今後は文字列としてマージン計算モードを取得します。以前は、StopoutModeDescription新メソッドと同様に動作しました。

    以下のメソッドが追加されました。

    • StopoutModeは、最小保証金レベルの指定モードを取得します。
    • StopoutModeDescriptionは、最小保証金レベルの指定モードを文字列として取得します。

    CExpert
    以下のメソッドが追加されました。

    • SelectPositionは、それを使用した今後の作業の為のポジションを選択します。

  40. MQL5:MQL5のスタンダードライブラリにいくつかの改良が加えられました。
  41. MQL5:DLLライブラリのアンロードエラーを修正しました。
  42. MQL5:コンストラクタクラスのテンプレートサポートを修正しました。
  43. シグナル:取引シグナルのリスト表示のエラーを修正しました。
  44. テスター:取引シンボルの幾つかのタイプで手数料が計算されるエラーを修正しました。
  45. テスター:対応するポジションのExpert欄の数値に応じた、SL/TPが作動した結果に起こる、取引注文のExpert欄の記入が修正されました。以前は記入されませんでした。
  46. テスター:通常およびフォワード最適化の結果タブへの切り替えが修正されました。
  47. テスター:"Envelopes"インディケータの表示と計算が修正されました。
  48. テスター:ビジュアルテストの実行が最適化されました。
  49. ターミナル:多数の開かれた注文やポジションがある場合の、マージンと利益の計算が最適化されました。
  50. テスター:高頻度取引での取引操作の実行が最適化されました。
  51. テスター:今後は履歴の同期は、現在の相場を必要としない、非主要シンボルのプロパティのリクエスト時に行われません。例えば、SYMBOL_SELECT、SYMBOL_DIGITS, SYMBOL_SPREAD_FLOAT、SYMBOL_TRADE_CALC_MODE、SYMBOL_TRADE_MODE、SYMBOL_TRADE_STOPS_LEVEL、SYMBOL_TRADE_FREEZE_LEVEL、SYMBOL_TRADE_EXEMODEなどです。以前は非主要シンボルのプロパティの任意のリクエスト時に現在のシンボルでの履歴の同期化が行われていました。
  52. テスター:年率でのスワップ計算が修正されました。
  53. MetaEditor:『完全なワードのみ』モードにおけるファイルごとのワード検索が修正されました。
  54. MetaEditor:対応するファイルのコンパイル結果の列をダブルクリックすることでファイルへ移動することができるようになりました。
  55. MetaEditor:Windows XPの幾つかのコントロールエレメントの表示が修正されました。
  56. ドキュメントが更新されました。

LiveUpdateシステムを介して更新されます。

 

MetaTrader 5プラットフォームの新バージョンbuild 1340:モバイルへの便利な証明書の移動とテスターの改善

2016年5月13日金曜日、MetaTrader 5プラットフォームの更新が行われます。更新には以下の内容が含まれます。

  1. ターミナル:高度なセキュリティモードへ接続する為の、デスクトップターミナルからモバイルターミナルへの証明書の移動が快適になりました。

    取引プラットフォームには拡張認証がサポートされています。パスワードに加えて、口座は特別なSSL証明書によって保護されています。証明書は、口座の為に取引サーバーで生成されたファイルです。このファイルは固有のものであり、これなしで口座へ接続することはできません。

    以前は、もし証明書がデスクトップターミナルを通じて要求および生成された場合、iPhone/iPadまたはAndroidでMetaTrader 5の口座を使用するには、そのファイルを手動でデバイスへ移動し、それからインストールする必要がありました。これからは証明書は快適に移動されます。

    どのように移動が行われるか
    証明書の移動は取引サーバーを介して行われます。

    • はじめに証明書はデスクトップターミナルで暗号化されます。口座の所有者は、証明書が安全なアルゴリズムAES-256を使用して暗号化されるパスワードを指定します。このパスワードはユーザーのみが知り得るもので、サーバーには送信されません。
    • 次に暗号化された証明書は、モバイルターミナルを介して取得されるまでの間(1時間以内)保存される取引サーバーに送信されます。
    • 証明書の取得の為には、ユーザーはモバイルターミナルを介して口座へ接続する必要があります。接続後すぐに証明書のインポートが提案されます。この為には、デスクトップターミナルで暗号化されたパスワードを入力する必要があります。

    証明書の移動は安全に行われます。取引サーバーは中間ストレージとして使用され、暗号化はクライアント側で行われ、証明書のパスワードは送信されたり、取引サーバーに保存されることはありません。

    証明書の移動方法
    デスクトップターミナルで口座へ接続し、コンテキストメニューの『証明書の移動』を選択してください。



    あなたが指示したことを承認する為に、口座のマスターパスワードを入力してください。次に、サーバーへの送信前に証明書が保護されるパスワードを設定してください。パスワードは8桁以上である必要があります。

    サーバーへの証明書の送信が成功した後、モバイルターミナルを開き口座へ接続してください。するとすぐに証明書のインポートを求められます。同意をして、デスクトップターミナルで指定したパスワードを入力してください。



    インポートした証明書は、『プログラムについてー証明書』で表示することができます。
    証明書の移動がサポートされた、iPhone/iPadまたはAndroid版MetaTrader 5モバイルターミナルは、近日リリースされます。
  2. テスター:より正確なテストの為に、指値注文やストップロス/テイクプロフィット注文の実行および作動アルゴリズムが変更されました。ビジュアルテストの機能が拡張されました。

    株式商品に対して何が変わったのか
    実際の市場では、株式商品のチャートの構築と注文の実行は、取引の終値(Last)で行われます。リミットオーダーの作動は、Bid/Ask価格で行われます。全てのタイプの注文は、常に現在のBid/Ask価格で行われます。より実際の条件に近づけるようにストラテジーテスターに変更が加えられました。
      以前
    現在
    作動 Bid/Askによる全てのタイプの指値注文とストップロス/テイクプロフィット
    Bid/Askによるリミットオーダー
    Lastによるストップ、ストップリミット、ストップロス/テイクプロフィット注文
    実行 注文で指定された価格による全てのタイプの指値注文とストップロス/テイクプロフィット
    作動時のBid/Ask価格による全てのタイプの指値注文とストップロス/テイクプロフィット

    Si-6.16での例を見てみましょう。現在価格が、Bid=72570、Ask=72572、Last=72552で、バイストップオーダーが72580で発注されました。価格変動で新しい現在価格は、以下のようになりました。

    • Bid=72588
    • Ask=72590
    • Last=72580


    株式商品では、ストップオーダー作動のトリガーはLast価格です。従って、Last価格が72580になったことで、バイストップオーダーが有効になりました。以前では、この72580という価格は、この注文の実行に使用されました。買い操作の実行の為のAsk=72580という価格は市場にはないので、このような動作は正しくないものでした。


    更新されたテスターでは、現在の買い価格はAsk=72590で、バイストップオーダーはこの価格で実行されます。このように、テスターの新しい取引実行アルゴリズムは、より正確に実際の市場に対応しています。以前のアルゴリズムでは、取引操作は非市場価格で実行され、不正確なテスト結果に繋がっていたことでしょう。

    株式商品以外に対しては何が変わったのか
    株式以外の商品に対しては、アルゴリズムは以前のまま作動します。全てのタイプの指値注文とストップロス/テイクプロフィットにBidとAsk価格を使用します。実行モードが変更されました。以前は注文で指定された価格で行われていましたが、これからは注文作動時の現在のBidとAsk価格が使用されます。

    ビジュアルテストの新しい機能
    ビジュアルテストでは、これからはバーのAskの最大価格とBidの最小価格のラインが表示されます。このようなチャートでは、バーの構築と注文の作動がLast価格で行われ、注文の実行はBidやAsk価格で行われる、株式商品でのエキスパートアドバイザーのテストが簡単になります。



    ビジュアルテストのチャートには、指定した日付へのナビゲーションの機能が登場しました。チャート上でダブルクリックをし、必要な日付と時間を指定してください。また、チャートはあらゆる注文や取引に移動させることができます。取引操作の『取引』、『履歴』または『操作』でダブルクリックをしてください。

  3. MQL5:いくつかのケースでCopyTicks関数が要求したものよりも少ないティックを返すエラーを修正しました。
  4. MQL5:テンプレート関数生成のエラーを修正しました。
  5. テスター:テスター起動前の価格/ティックヒストリーのダウンロードのジャーナルが拡張されました。これからは、操作ログには履歴のダウンロードの終了、ダウンロードデータのボリュームとダウンロードにかかった時間が表示されます。
    2016.05.10 12:47:53    Core 1    5.10 Mb of history processed in 0:00.842
    2016.05.10 12:47:53    Core 1    GBPUSD: history synchronization completed [5225 Kb]
  6. ドキュメントが更新されました。
  7. クラッシュログで報告された不具合を修正しました。

LiveUpdateシステムを介して更新されます。

 

MetaTrader 5プラットフォームの新バージョンbuild 1375:取引フィードとテスト時のティックへのアクセス

2016年7月15日金曜日に、MetaTrader 5プラットフォームの更新が行われます。更新には以下の内容が含まれます。

  1. ターミナル:板注文画面に時刻と出来高が追加されました。




    時刻と出来高とは
    リアルタイムモードの時刻と出来高では、取引所で行われる全ての取引の一覧が反映されます。取引ごとにその実行時間、方向(買い/売り)、価格、質量が表示されます。視覚的分析をしやすくする為に、取引の各方向は別々の色で表示されます(青は買い、ピンクは売り、緑は不確定のもの)。取引の質量はヒストグラムとしても表示されます。

    時刻と出来高の表示で市場を読む
    時刻と出来高の表示によって、市場をより詳細に分析することができます。時刻と出来高の表示では取引の方向を、その取引の実行者(買い手または売り手)であるトレーダーに知らせます。実行取引の質量によって、これが大口であるか小口であるかやその活動性など、市場参入者の動向を知ることができます。特定の価格条件下での取引実行速度とその質量では、それらの条件の重要性を結論付けることができます。

    データの使用方法
    表の視覚的分析の他に、取引ごとにデータをCSVファイルへアップロードすることができます。それから、そのデータをMS Excelなどの他のソフトウェアを使用して分析することができます。ファイル中の全てのデータはカンマで区切られます。
    Time,Bid,Ask,Last,Volume,Type
    2016.07.06 16:05:04.305,89360,89370,89370,4,Buy
    2016.07.06 16:05:04.422,89360,89370,89370,2,Buy
    2016.07.06 16:05:04.422,89360,89370,89370,10,Buy
    2016.07.06 16:05:04.669,89360,89370,89370,1,Buy
    2016.07.06 16:05:05.968,89360,89370,89360,7,Sell
    ファイルへデータを保存するには、コンテキストメニューを開いてください。



    取引の方向を正確に識別する為には、ブローカーの取引プラットフォームをバージョン1375にアップデートする必要があります。

  2. テスター:CopyTicks関数を使用したテスト時に、ティックヒストリーをリクエストする機能が追加されました。以前はこの関数はストラテジーテスターでは動作しませんでした。

    • 『全ティック』モードでは、関数は生成されたティックの履歴を返します。128000までの最新のティックをリクエストすることができます。
    • 『リアルティックに基づいたすべてのティック』モードでは、関数はリアルティックの履歴を返します。リクエストするデータの深度は、そのデータの可用性にのみ制限されます。しかし、128000の最新ティックは、ストラテジーテスターによってキャッシュされ、これらのデータのリクエストは迅速に実行される点についてご注意ください。より深い履歴は、ハードディスクから直接リクエストされるため、リクエストの実行には遥かに多くの時間がかかります。
    • 『始値のみ』と『1分足OHLC』モードでは、ティックヒストリーが作成されない為、関数は以前と同様に動作しません。

  3. テスター:ミリ秒のサポートが追加されました。以前のストラテジーテスターでは、時間量は1秒でした。

    • これからは、EventSetMillisecondTimerとSleep関数は、ストラテジーテスターでより正確に動作します。
    • 多通貨エキスパートアドバイザのテスト時のティックの供給精度が向上しました。以前は1秒に複数のティックが入る(分バーのティックボリュームが60以上)場合、それらの全てに同じ時間がセットされていました。単一通貨エキスパートアドバイザのテスト時には、ティックはエキスパートアドバイザに直接引き渡されるので、これは特に意味を持ちません。しかし、いくつかの通貨ペアのテスト時には、どの通貨ペアから最初にティックが入ったかを知ることは重要です。以前は各シンボルごとにティックがエキスパートアドバイザに直接引き渡されていました(初めに1つのシンボルごとに全ての1秒のティックが、それからもう1つのシンボルの全てのティックが)。これからはティックはミリ秒を考慮し引き渡されます。

      リアルティックでのテスト時には、ミリ秒はソースティックデータから取得されます。ティックの生成時、ミリ秒のセットはティックボリュームに応じて行われます。例えば、3つのティックが1秒に納まる場合、000、333、666ミリ秒がセットされます。

  4. テスター:『始値のみ』や『1分足OHLC』モードでの未決注文やストップロス/テイクプロフィット注文の実行が、実行時の現在価格ではなく、リクエストした価格で実行されるようになりました。正確なモード(全ティックやリアルティック)で使用する市場価格で実行するアルゴリズムは、精度の低いモードには適していません。中間ティックは生成されない為、注文のリクエスト価格と実行時の市場価格(始値またはOHLC)との差は重要になります。『始値のみ』と『1分足OHLC』モードでのリクエスト価格による注文の実行は、正確なテスト結果を与えます。

  5. テスター:ビジュアルモードでのフォワードテストのサポートが追加されました。これからは、バックテストやフォワードテストの為に、様々な期間におけるエキスパートアドバイザの動作結果の比較をしやすくする、ビジュアルテストの2つの別々のウィンドウが開きます。




    フォワードテストのウィンドウは、主要期間のテストが完了した後にのみ表示されます。

  6. テスター:テストチャート上に証拠金維持率の代わりに、資金(margin/equity)に対する証拠金率として計算される証拠金への負荷が出力されます。




  7. MQL5:注文の発注、変更、キャンセル時のOrderSend関数の動作が変更されました。変更は外部の取引システムへの注文の出力時にのみ適用されます。以前は、OrderSend関数の制御は、ブローカーサーバーでの注文の配置(処理)が成功した後に返されていました。これからは、制御はブローカーサーバーが外部取引システムから、そこで注文が正常に配置されたという通知を受け取った後にのみ返されます。

    以下の図では、関数の以前(赤の矢印)と現在の動きを概略図として表しています。




  8. MQL5:MqlTradeResult取引結果の構造に、外部取引システムのエラーコードの欄retcode_externalが追加されました。これらのエラーの種類と使用は、ブローカーや取引操作が送信される外部取引システムに依存します。例えば、モスクワ証券取引所で実行されるretcode_external値は、DGCX(ドバイ金商品取引所)のものとは異なります。

  9. MQL5:ENUM_CHART_PROPERTY_STRING列挙にCHART_EXPERT_NAMEとCHART_SCRIPT_NAMEプロパティが追加されました。これからは、ChartGetString関数を使用して、エキスパートアドバイザまたはchart_idパラメータで定義されたチャートに取りつけられたスクリプトの名前を判別することができます。
  10. ターミナル:ティック取得/板注文画面の変更とOnTickおよびOnCalculateの入力ポイントの呼出の間の時間が大幅に短縮されました。また、取引状態の変更イベントの取得とOnTradeおよび OnTradeTransactionの入力ポイントの呼出の間の時間が短縮されました。したがって、MQL5プログラムはより素早く市場イベントに反応することができます。
  11. ターミナル:SSL証明書を使用した拡張認証利用時の取引リクエストの送信が早くなりました。
  12. ターミナル:ユーザーインターフェイスがペルシャ語へ翻訳されました。
  13. ターミナル:両建モード動作時のチャートのコンテキストメニューのストップロス/テイクプロフィットの設定コマンドの表示が修正されました。
  14. シグナル:いくつかのケースで反対ポジション(close by)の決済操作がコピーされなかったエラーが修正されました。
  15. シグナル:RUBとRURを含む通貨ペアの自動比較が改善されました。
  16. マーケット:製品カテゴリーごとの並び替えが修正されました。
  17. テスター:テスト時の年率での手数料の計算が修正されました。
  18. テスター:テストの過程で作成されるチャート上の残高の計算および表示が修正されました。
  19. メタエディター:置換えダイアログを開く際の、置換えテキストフィールドのフォーカス設定が修正されました。
  20. メタエディター:現在の位置から上に検索をする場合のテキストの複数の置換が修正されました。
  21. ドキュメントが更新されました。

LiveUpdateシステムを介して更新されます。
 

MetaTrader 5プラットフォームの新バージョン build 1395:取引操作のスピードアップとビジュアルテストの改良

2016年8月19日(金)にMetaTrader 5プラットフォームの更新が行われます。更新には以下の内容が含まれます。

  1. ターミナル:クライアントターミナルでの取引コマンドの送信が最適化され、大幅にスピードアップしました。
  2. ターミナル:Windows 10(build 1607)の32bit版での動作時にターミナルでMQL5プログラムの実行ができないエラーが修正されました。
  3. ターミナル:ナビゲーターに取引口座の動作モード(両建機能取引またはネッティング取引)の表示が追加されました。
  4. ターミナル:選択した口座でウェブターミナルへ接続する為のコンテキストメニューのコマンドがナビゲーターに追加されました。
  5. ターミナル:『ヘルプ』メニューが再編され、チュートリアルビデオのリンクが追加されました。
  6. ターミナル:高解像度の画面での動作時の一連のインターフェイスのエラーを修正しました。
  7. ターミナル:ユーザーインターフェイスのペルシャ語の翻訳の誤りを修正しました。
  8. MQL5:抽象オブジェクトのコレクションを作成する'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オブジェクトではありません
      }
    //+------------------------------------------------------------------+
  9. MQL5:インデックスの文字列からシンボルを取得する、文字列の為の[ ]演算子のサポートが追加されました。指定したインデックスが文字列の範囲外である場合、結果は0となります。
    string text="Hello";
    ushort symb=text[0];  // シンボル'H'のコードを返します
    
  10. MQL5:INIT_SUCCEEDED (0)またはINIT_FAILED(もしくは任意のゼロの値)のコードを返す、int OnTesterInit(void)シグネチャを伴うTesterInitイベントハンドラの第二バージョンが追加されました。OnTesterInitがゼロを返す場合、最適化は開始されません。
  11. MQL5:ChartGetString関数の異なる負荷が異なる結果をもたらしていたエラーを修正しました。
  12. テスター:ビジュアルテストの為の追加コマンドとホットキーが追加されました。これからはビジュアルテストのチャートをターミナルでも調整することができます(色の変更、各種項目の表示の管理、テンプレートの使用など)。




  13. テスター:『始値のみ』モードでのSleep機能の動作が修正されました。
  14. テスター:W1やMN1の時間軸での動作時にバーの不正なステータスの形成をもたらしていたエラーを修正しました。
  15. メタエディター:ユーザーインターフェイスの翻訳に繁体中国語が追加されました。
  16. ドキュメントが更新されました。

LiveUpdateシステムを介して更新されます。
 

MetaTrader 5 build 1430: Exposureタブの更新

2016年9月16日に、MetaTrader 5プラットフォームが更新されます。更新には以下の内容が含まれます。


  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. ターミナル:いくつかのケースで先物取引の発注を行うことができなくなるエラーを修正しました。注文価格が取引価格の上限/下限価格と一致する場合にエラーが発生していました。
  7. MQL5:MQL5プログラムのコンパイルが高速化および最適化されました。
  8. MQL5:クラス、構造体、関数の為の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'
  9. MQL5:デフォルトのパラメータを持つテンプレート関数のコンパイルエラーを修正しました。
  10. マーケット:マーケットの製品のソートにおける一連のエラーを修正しました。
  11. テスター:ビジュアルテストモードでの保有注文/ポジションの現在の市場価格の更新を修正しました。
  12. テスター:取引銘柄でのテスト時のBuy LimitとSell Limit注文実行のスリッページが削除されました。
  13. テスター:いくつかのケースで『始値のみ』モードで、間違った価格が生成されていたエラーを修正しました。
  14. テスター:テスト時のOnTradeTransactionイベントの形成が修正されました。
  15. テスター:リアルティックに基づくテストの際に、既存の分足バーのlowまたはhighの数値とティック価格(bidかlastかはどの価格にバーが形成されているかによる)の不一致についての情報がテスターの操作ログに表示されます。
  16. メタエディター:ソースコードのファイル上のデータプロファイリングの表示エラーが修正されました。
  17. ドキュメントが更新されました。

LiveUpdateシステムを介して更新されます。
 

新しい MetaTrader 5 プラットフォームビルド1445:MQL5数学関数ライブラリ

2016年10月14 日(金曜日)には更新されたMetaTrader 5 プラットフォームがリリースされます。この新バージョンは次の変更を含みます。

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




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




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

    ライブラリ機能

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

    使用法

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

    #include <Math\Alglib\alglib.mqh>

  6. MQL5:標準ライブラリに数理統計機能が追加されました。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の活用)稿で説明されています。


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

    ライブラリ機能

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

    使用法

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

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

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


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




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

  9. MQL5: 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);
            }
         }
      }
    
    

  10. MQL5: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);
    
    
  11. MQL5:CopyTicks関数を使ったティック履歴操作がバグの修正とともに改善されました。
  12. MQL5: この新しいビルドでは、インターフェイスでの演算子の使用が可能になりました(以前は不可能)。
  13. マーケット:マーケットからの製品購入の際の繰り返したMQL5.communityへのサインインリクエストの原因となっていたエラーを修正しました。
  14. テスター:UIのギリシャへ語、マレー語とヘブライ語への翻訳を追加しました。
  15. ドキュメントを更新しました。
LiveUpdateシステムを介して更新されます。
 

新しい MetaTrader 5 ビルド1485:新しいテストモードと標準ライブラリのグラフィックス

2016年11月24 日(木)には更新されたMetaTrader 5 プラットフォームがリリースされます。この更新には以下の変更が含まれます。

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




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

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




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

  6. MQL5:S1=S2+S1のように文字列の加算する際のエラーを修正しました。
  7. MQL5: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");
      }
    

  8. MQL5:チャート描画関数が標準ライブラリに追加されました。この新機能を使用するには、プロジェクトに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);
    //---
      }
    
    結果:



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

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

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



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

  11. テスター:「M1ベースのOHLC」モードでのバーのティックボリュームの生成を修正しました。
  12. テスター:ヘッジモードで取引する際の注文とポジションの開始時間をミリ秒単位までで指定できるように修正しました。
  13. テスター:「リアルチック」モードでの複数通貨または複数時間枠テストで表示される「古いチック」エラーを修正しました。
  14. テスター:要求されたティックがディスク上にあるデータベースから読み取られる際のCopyTicksのパフォーマンス速度が向上されました。
  15. MetaEditor:ナビゲータとツールボックスのファイルコンテキストメニューに、バージョン管理された MQL5 Storage ソースコードリポジトリを操作するためのコマンドが追加されました。




  16. MetaEditor:リポジトリ内で1024を超えるファイルを操作する際にローカルのMQL5ストレージデータベースの整合性を壊す可能性のあったエラーを修正しました。
  17. MetaEditor:MQL5 Storageのファイルツリーの表示を修正しました。
  18. MetaEditor:大量のテキストを置換した後のファイルの表示を修正しました。
  19. ドキュメントを更新しました。

LiveUpdateシステムを介して更新されます。

 

新しい MetaTrader 5 ビルド1490:改善と修正

MetaTrader 5プラットフォームの新バージョンは2016年12月2日にリリース予定です。プラットフォームをさらに便利にするため、クラッシュログやユーザーレポートに基づいて多数のバグが修正されました。

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