2016年7月1日にBuild 940以前のメタトレーダー4ターミナルのサポート終了します。
サポートされていないターミナルは、新しいサーバーバージョンへ接続する事は出来ません。
ターミナルのアップグレードをお勧めします。
ターミナル
- デモ口座開設のダイアログがシンプルになりました。
沢山あった入力フォームに全て入力する必要が無くなりました。
一般的なデータを入力し取引パラメータ(アカウントタイプ・口座残高・レバレッジ)を選択するだけになりました。
MQL4
- MQL4言語の新機能実装に伴い、ex4プログラムの形式が変更されました。
以前のバージョンのメタエディターでコンパイルされた全ex4プログラムは、上位互換性があるのでアップデート後も正常に動作します。
逆に、build970でコンパイルしたex4プログラムは、下位互換性が無いため古いバージョンのターミナルでは動作しません。
- 抽象クラスと純粋仮想関数のサポートが追加されました。
抽象クラスは派生によって実体を作成する為に使用されます。
抽象クラスは他クラスの基底クラスとしてしか使用出来ないので、抽象クラスのオブジェクトを作成する事は出来ません。
純粋仮想関数を1つでも含んでいるクラスは抽象クラスになります。
抽象クラスから派生したクラスは全て純粋仮想関数を実装する必要があります、実装しない場合は派生したクラスも抽象クラスとなります。
純粋仮想関数は純粋指定子(=0)を使用して宣言されます。
下記例のCAnimalクラスは共通機能を提供するだけのクラスです。
CAnimal型のオブジェクトは実体として使用するには汎用的過ぎます、なのでCAnimalは抽象クラスの良い例になります。
抽象クラスの例
class CAnimal {
public:
CAnimal();
virtual void Sound() = 0;
private:
double m_legs_count;
};
上記例のSound()は、純粋指定子(=0)で宣言されているので純粋仮想関数です。
純粋指定子(NULL または 0)が設定されている仮想関数だけが純粋仮想関数になります。
抽象クラスの宣言と使用例
class CAnimal {
public:
virtual void Sound() = NULL;
};
class CCat : public CAnimal {
public:
virtual void Sound() { Print("Myau"); } // PURE is overridden, CCat is not abstract and can be created
};
new CAnimal;
CAnimal some_animal;
new CCat;
CCat cat;
抽象クラスの制限
抽象クラスのコンストラクタによって純粋仮想関数が(直接または間接的に)呼び出された場合、結果は未定義になります。
class CAnimal {
public:
virtual void Sound(void)=NULL;
void CallSound(void) { Sound(); }
CAnimal()
{
Sound();
CallSound();
}
};
しかし、抽象クラスのコンストラクタとデストラクタは他メンバ関数を呼び出すことが出来ます。
- イベントモデル構成の簡素化の為、関数ポインタのサポートが追加されました。
関数ポインタの宣言は、関数ポインタの型を指定します。
関数ポインタの型の宣言例
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;
Print( func_ptr(10) );
関数ポインタを格納し、引数を渡すことが出来ます。
非静的クラスメソッドへのポインタを取得することはできません。
- クライアントターミナルプロパティ列挙の
ENUM_TERMINAL_INFO_INTEGER
にTERMINAL_SCREEN_DPI(ディスプレイ解像度は1インチ当たりのドット数(DPI)で測られます)を追加。
この値を知る事で、異なるディスプレイ解像度でも同じように見えるグラフィカルオブジェクトのサイズを決定する事が出来ます。
- クライアントターミナルプロパティ列挙の
ENUM_TERMINAL_INFO_INTEGER
にTERMINAL_PING_LASTを追加しました。
トレードサーバーへの最後のping値を知る事が出来ます。分解能は1µsecです。
- DRAW_NONEバッファ(描画しない)では、
カスタムインジケータのチャートウィンドウの最大値と最小値の算出しません。
- OBJ_LABELとOBJ_TEXTオブジェクト上でのマウス押下・マウス移動で発生するイベントの不具合修正。
修正前は、他のOBJ_RECTANGLE_LABELやOBJ_RECTANGLEオブジェクト内にある時に誤動作していました。
- カスタムインジケータのヒストグラムの高さがゼロだった時の不具合修正。
修正前は、ヒストグラムバーが表示されませんでしたが、修正後は1ピクセルのバーが表示されます。
シグナル
- シグナル配信者と購読者の取引可能商品を比較した時の不具合修正。
ストラテジーテスター
- テスト設定で現在のスプレッドを使用した時のfxtファイルのスプレッドが使用される不具合修正。
マーケット
- マーケットショーケース表示エラーを修正。
メタエディター
- "完全一致"で検索した時の不具合修正。
- コンパイル結果の行をダブルクリックした時に、対応するファイルへ移動する事が出来るようになりました。
(前からそうだった気がしますけど・・・)
- WindowsXPの制御要素表示を修正。.
クラッシュログで報告されたエラーを修正。
更新はLiveUpdateシステムを介して利用可能です。
情報ソース:
https://forum.mql4.com/72722