トップ  >  リリースノート  >  MT4 Ver4.00 Build 900変更内容
スポンサーリンク
検索

↑の検索エンジンが表示されない人は、
↓の古い検索エンジンを使用して下さい。
カスタム検索
MQL4リファレンスツリー
MT4 Ver4.00 Build 900変更内容



ターミナル

  1. 非アクティブ(未接続)アカウントのパスワード変更の不具合修正
  2. 大量のヒストリカルデータを扱う時のメモリ使用・解放を最適化しました。
  3. 大量のニュースカテゴリー使用時の不具合修正と最適化。

シグナル

  1. ナビゲータウインドウのコンテキストメニューからのシグナル購読解除の不具合修正。

MQL4

  1. C++のようにパラメータ化されたクラスを作成可能にするクラステンプレートを追加。
    これはより多くの抽象化を可能にし、一様に異なるクラスオブジェクト操作の為に同じコードを使用する機能です。


例:
//+------------------------------------------------------------------+
//| テンプレートクラス宣言
//+------------------------------------------------------------------+
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&:ltT *> {
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テンプレートを特殊化)

//+------------------------------------------------------------------+
//| スクリプトプログラムスタートイベント
//+------------------------------------------------------------------+
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( i = 0 ; i < 10 ; i++ ) {
      str += " " + (string)ExtIntArray[i];      
   }

   Print(str);   
   str = "Dbl:";

   for( i=0 ; i < 10 ; i++ ) {
      str += " " + DoubleToString(ExtDblArray[i],1);
   }

   Print(str);   
   str = "Ptr:";

   for( i = 0 ; i < 10 ; i++ ) {
      str += " " + (string)ExtPtrArray[i].X();      
   }

   Print(str);

   // TArrayPtr<CFoo>オブジェクトのデストラクタで削除されるので、new演算子で作成されたCFooオブジェクトは削除する必要はありません
}


実行結果:
TemplTest EURUSD,M1: Ptr: 30 31 32 33 34 35 36 37 38 39
TemplTest EURUSD,M1: Dbl: 20.0 21.0 22.0 23.0 24.0 25.0 26.0 27.0 28.0 29.0
TemplTest EURUSD,M1: Int: 10 11 12 13 14 15 16 17 18 19

  1. たまにMQL4プログラムがクラッシュを引き起こす原因のArrayCopy関数でのメモリ再割り当てを修正。

ストラテジーテスター

  1. インジケータのテスト終了後に、たまにグローバルレベルで宣言した変数が0になる不具合を修正。
  2. 取引サーバーへの接続がされていない時の不具合修正。

メタエディター

  1. Fixed defining a function name in MetaAssist in the presence of type casting.
  2. 大きなファイルを開いた時の不具合修正。
  3. コードベースタブから検索機能を呼び出すホットキーFを追加しました。
    同様に、コードを使用するコマンドの為に、ステータスバーに複数のヒント(インデント増加/減少、ナビゲーション、ケースシフト等)を追加しました。

クラッシュログで報告されたエラーを修正。
更新はLiveUpdateシステムを介して利用可能です。


情報ソース:https://forum.mql4.com/69819
管理人の勝手なコメント:

Build880で混入されたオフライン状態でバックテストを行うと何故かエラーコード131が発生する不具合がようやく修正されました。
また、Build900がリリースされずBuild902がリリースされたので、Build900は幻のバージョンですw




スポンサーリンク
スポンサーリンク


Copyright ©2015 MT4でEA自作しちゃお~ All Rights Reserved.


Top

inserted by FC2 system