MetaTrader 5 build 1445:MQL5数学関数ライブラリ

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

14 10月 2016

ターミナル

  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のギリシャへ語、マレー語とヘブライ語への翻訳を追加しました。

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