MetaTrader 4の最新のアップロード

MetaTrader 4FX取引プラットフォーム

12 5月 2017
MetaTrader 4ビルド1080

マイクロソフトは1ヶ月前Windows 10 Creators Update オペレーティングシステムのメジャーアップデート(バージョン1703)をリリースしました。一部のユーザーは、このアップデートをインストールした後に端末でMQL4プログラムを実行することができませんでした。この問題は、新しいMetaTrader 4プラットフォームビルド1080で修正されました。エキスパートアドバイザーと指標はチャートで正しく実行され、更新されたMetaEditorを使用した再コンパイルは必要ありません。

バージョン1065以前のMetaTrader 4クライアント端末のサポートは、2017年10月1日に廃止されます。サポートされていない端末のビルドは、新しいサーバーバージョンに接続することはできません。事前に端末を更新することを強くお勧めします。


23 3月 2017
MetaTrader 4 プラットフォームビルド1065

この新バージョンでは、時間枠を切り替えた後のチャートでのエキスパートアドバイザーの再起動に関連したエラーが修正されました。エキスパートアドバイザーは停止せずに正しく再初期化されます。

3 2月 2017
MetaTrader 4 プラットフォームビルド 1045

MetaTrader 4プラットフォームの更新は、Windows 10 Insider Previewビルド15007のリリースに合して2017年2月3日にリリースされる予定です。Windows 10システムの新バージョンのセキュリティアップデートによって、MetaTrader 4クライアント端末の時折起動できないことがあります。

今回のWindows 10 updateアップデートに備えて、新しいプラットフォームバージョンをインストールしてください。

16 12月 2016
MetaTrader 4ビルド1031
クラッシュレポートに基づいていくつかのバグを修正しました。
14 10月 2016
MetaTrader 4ビルド996
  1. 新バージョンには、トレーダーと他のMQL5.communityメンバーのチャットを可能にする無償のチャット機能が内蔵されています。メッセージ受信者のセクションに相手のユーザーのログインを指定し、そのモバイルデバイスに直接メッセージを送信します。

  2. ンディケータレベル編集機能の追加。
  3. インドネシアとヒンディー語へのインターフェイスの翻訳を追加。
30 8月 2016
iOS版MetaTrader 4ビルド975
  1. メッセージの外観が一新されました。これからはMQL5.communityでのメッセージのやり取りやデスクトッププラットフォームからの通知は、人気のモバイルメッセンジャーで見慣れたチャット仕様で表示されます。

  2. プラットフォームは22か国語に切り替えることができます。取引で英語を選択する場合には、デバイスの言語は変えずに、『設定』ページ(iPad版では『詳細』ページ)で英語をオンにしてください。

18 8月 2016
MetaTrader 4プラットフォームの新バージョン build 1010: MQL4の機能拡張

ターミナル

  1. Windows 10(build 1607)の32bit版での動作時にターミナルでMQL4プログラムの実行ができないエラーが修正されました。
  2. いくつかのケースで検索ボタンとチャットボタンが正しく表示されないエラーが修正されました。
  3. いくつかのケースでデモ口座を開いた時に、ターミナルに受信したメッセージの絵文字が重複するエラーが修正されました。

MQL4

  1. 抽象オブジェクトのコレクションを作成する'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オブジェクトではありません
      }
    //+------------------------------------------------------------------+
  2. インデックスの文字列からシンボルを取得する、文字列の為の[ ]演算子のサポートが追加されました。指定したインデックスが文字列の範囲外である場合、結果は0となります。
    string text="Hello";
    ushort symb=text[0];  // シンボル'H'のコードを返します
    
  3. 履歴とティックデータのコピー機能CopyXXXがより高速になりました。
  4. ObjectDeleteAll関数を使った接頭辞のグラフィックオブジェクトの質量削除のエラーを修正しました。以前はこの関数の実行後に残りのオブジェクトの描画に乱れが発生していました。
  5. いくつかのケースで時間軸の変更時にグラフィックオブジェクトの表示が乱れるエラーを修正しました。

ホスティング

  1. 今後、ターミナルとバーチャルサーバーとの同期に、カスタムインディケータを実行している場合でも、エキスパートアドバイザの ないチャートは含まれません。使用中のカスタムインディケータを個別に移行するには、インディケータのチャートに何のアクションも起こさない『空の』イン ディケータを起動してください。これはMQL4ウィザードを介してMetaEditorで、『エキスパートアドバイザ:テンプレート』を選択することで簡 単に生成することができます。これによって、カスタムインディケータの移行を意識的に行うことができます。
  2. これからは名前に非ラテン文字を含む(例えば、キリル文字や漢字など)カスタムインディケータやエキスパートアドバイザを同期させることができます。

クラッシュログで報告された不具合を修正しました。

1 7月 2016
MetaTrader 4プラットフォームの新バージョン build 985:内蔵MQL5.communityチャット

ターミナル

  1. 内蔵チャットが追加されました。取引プラットフォームから直接MQL5.communityの 友達や仲間と、インスタントメッセージをやり取りすることができます。チャットにはメッセージの完全履歴と未読数が表示されます。使用前に、チャット画面 やプラットフォームの設定から自分のアカウントにログインしてください。(ツール->設定->コミュニティ)




  2. ターミナル起動時に内部メールのデータベースの読み込みが最適化されました。

MQL4

  1. 任意のチャート上の価格およびタイムラインの表示/非表示の機能が追加されました。以前はMQL4プログラムは、実行されている チャートのCHART_SHOW_PRICE_SCALEとCHART_SHOW_DATE_SCALEのみ変更することができました。
  2. MarketInfo関数の為のMODE_CLOSEBY_ALLOWEDプロパティが追加されました。TRUE値は指定された商品にClose By(反対ポジションの決済)の操作が許可されていることを意味しています。
  3. 誤ったパラメータ値に繋がっていた、文字列パラメータのエントリーポイントOnChartEventへの引き渡しが修正されました。OnChartEventは、チャートイベントの追跡をすることができます(キーボードのキーを押す、マウスの移動など)。
  4. ObjectsDeleteAll関数を使ったグラフィックオブジェクトの大量削除が高速化されました。
  5. シグナル:RUBとRURを含む通貨ペアの自動比較が改善されました。

テスター

  1. テスト中のグラフィックオブジェクトの作成時間が修正されました。以前はテスト時間の代わりにターミナルの現在時刻になっていました。

メタエディター

  1. 置換えダイアログを開く際の、置換えテキストフィールドのフォーカス設定が修正されました。
  2. メタエディター:現在の位置から上に検索をする場合のテキストの複数の置換が修正されました。
  3. クラッシュログで報告された不具合を修正しました。
3 6月 2016
MetaTrader 4プラットフォームの新バージョン ビルド970:デモ口座開設の簡素化およびMQL4の機能の拡張

ターミナル

  1. デモ口座の開設ダイアログが簡素化されました。これからは、長いアンケートを記入する必要はなく、基本的なデータを入力し、取引パラメータ(口座タイプ、証拠金、レバレッジ) を選択するだけで十分です。




MQL4

  1. MQL4言語における新機能追加に関連して、EX4実行ファイルの形式が変更されました。以前のビルドのMetaEditorでコンパイルされた全てのEX4プログラムは、更新後も正常に動作します。このようにして、上位互換性が完全に保たれます。

    同時に、970以降のビルドでコンパイルされたEX4プログラムは、以前のビルドのターミナルで動作することはなく、下位互換性はありません。

  2. 抽象クラスと純粋仮想関数のサポートが追加されました。

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

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

    仮 想関数は、純粋指定子構文を使用し、『純粋』として宣言されます。例として、共通機能を提供する為だけ型に作成される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"をもたらします
        }
      };
    しかしながら、抽象クラスのコンストラクタとデストラクタは、他のメンバー関数を呼び出すことができます。

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

    関数へのポインターを宣言する為には、『関数へのポインター』のタイプを明確にしてください。
    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));    // エラー: 二つのパラメータがある必要があります
    関数のポインターを保存し、パラメータとして引き渡すことができます。クラスの非静的メソッドにポインターを取得することはできません。

  4. クライアントターミナルのプロパティENUM_TERMINAL_INFO_INTEGERに TERMINAL_SCREEN_DPI(画像の情報出力解像度は、DPIで測定される)が追加されました。このパラメータを知ることで、異なる解像度の モニターで同じように表示されるように、グラフィックオブジェクトのサイズを指定することができます。
  5. クライアントターミナルのプロパティENUM_TERMINAL_INFO_INTEGERにTERMINAL_PING_LAST(マイクロ秒単位の取引サーバーまでのPingの最新の既知値)が追加されました。1秒は100万マイクロ秒です。
  6.  カスタムインディケータのDRAW_NONEバッファ(チャート構築なし)は、これからはチャートウィンドウの最大/最小値の計算に関与しません。
  7. OBJ_LABELとOBJ_TEXTオブジェクト上でのマウスの動きやマウスのクリックに関連したイベントの作成が修正されました。以前は、これらが他 のOBJ_RECTANGLE_LABELとOBJ_RECTANGLEオブジェクトの範囲内にあった場合に、イベントが正常に作成されませんでした。
  8.  カスタムインディケータの高さゼロのヒストグラムバーの描写が修正されました。以前はこれらのバーは描写されませんでしたが、これからはこれらのバーは1ピクセルの高さで描写されます。

シグナル

  1. 利用可能なシグナルや購読者の取引商品の比較時の取引商品の検索エラーを修正しました。

テスター

  1. テスト設定で現在のスプレッドを使用している場合のfxtファイル内のスプレッド適用が修正されました。

マーケット

  1. マーケットのリスト表示のエラーを修正しました。

MetaEditor

  1. 『完全なワードのみ』モードにおけるファイルごとのワード検索が修正されました。
  2. 対応するファイルのコンパイル結果の列をダブルクリックすることでファイルへ移動することができるようになりました。
  3. Windows XPの幾つかのコントロールエレメントの表示が修正されました。

クラッシュログで報告された不具合を修正しました。

18 5月 2016
MetaTrader 4 Android build 952
  1. 取引についての詳細情報が書かれたポップアップウィンドウが登場しました。一度触れるだけで、注文の発注時間と決済時間やポジションへの自分のコメントを参照したり、ブローカーコミッションのサイズを知ることができます。
  2. チャートに最後のバーのAsk価格に対応する赤いラインを追加しました。これは、自分の取引をより正確に制御するのに役立ちます。
  3. ニュース関連の動作が効率化されました。これからは、あなたに興味のあるメッセージカテゴリだけを選択して読むことができ、お気に入りに気に入ったものを追加することができます。
  4. 全ての変更は、アプリケーションを閉じた時に、分析オブジェクトの設定に保存されます。
6 5月 2016
MetaTrader 4 iOS build 947

これからはアプリケーションへのアクセスの為にPINコードを設定することができます。あなたのアカウントは、モバイルデバイスを無くした場合にもしっか りと守られます。アプリケーションの設定で『画面ロック』をオンにしてください。デフォルトではワンタイムパスワード生成器へのアクセスの為のものと同じ PINコードが使用されます。

新しいバージョンには、多くの改善と修正も含まれています。

23 2月 2016
MetaTrader 4ウェブプラットフォーム:テクニカルインディケータのフルセットと38か国語のインターフェイス

MetaTrader 4ウェブプラットフォームの新バージョンに、テクニカル分析の為のフルセットが加わりました。これからは30出井の最も人気のテクニカルツールを、デスクトップ版MetaTrader 4と同様に利用することができます。

アクセラレータオシレーター
DeMarker 移動平均
Accumulation/Distribution  エンベロープ オシレーターの移動平均
アリゲーター フォースインデックス
バランスボリューム
平均方向性指数 フラクタル パラボリックSAR 
平均トゥルーレンジ
ゲイターオシレーター 相対力指数 
オーサムオシレーター 一目均衡表 相対的活力指数
ベアーズパワー
MACD 標準偏差
ボリンジャーバンド
マーケットファシリテーションインデックス
ストキャスティクスオシレーター
ブルズパワー
モメンタム ボリューム
コモディティチャンネル指標
マネーフローインデックス ウィリアムズパーセントレンジ

アプリケーションの現地化の作業が進められています:ウェブプラットフォームインターフェイスは世界38か国語で利用することができます。さらに14か国語が追加されました。

オランダ語
リトアニア語 クロアチア語
ギリシャ語 ルーマニア語 チェコ語
ヘブライ語 セルビア語
スウェーデン語
イタリア語 スロベニア語
エストニア語
ラトビア語
フィンランド語



今すぐウェブプラットフォームを開き、アプリケーションの更新をご評価ください!

15 2月 2016
MetaTrader 4ウェブプラットフォーム:ビル・ウィリアムスのインディケータが追加されました

MetaTrader 4ウェブプラットフォームの最新バージョンでは、最新技術のWebGLを採用することで、チャート動作が大幅にスピードアップし、これからは一度に沢山のインディケータを起動させても、ウェブプラットフォームのパフォーマンスに影響を与えません。

テクニカルインディケータの導入作業が始まりました。現時点で、ビル・ウィリアムスのインディケータがすでに利用できます。

  1. アリゲーター
  2. フラクタル
  3. マーケットファシリテーションインデックス
  4. オーサムオシレーター
  5. アクセラレータオシレーター
  6. ゲイターオシレーター
アプリケーションの現地化の作業が進められています:インターフェイスがヒンディー語、ウズベク語、ウクライナ語に翻訳されました。
15 1月 2016
MetaTrader 4 iOS build 945
  • iPadのポートレートモードを利用できるようになりました。これからは、長い取引操作リストや、メール、金融ニュースを快適に一覧することができます。
  • iPad Proのネイティブサポート。
  • 韓国語が追加されました。
23 12月 2015
MetaTrader 4 build 950: Built-in video and performance improvements

ホスティング

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


    このビデオや、その他のビデオはYoutubeのMetaQuotes Software Corp.公式チャンネルにてご覧いただけます。

ターミナル

  1. 『ナビゲーター』ウィンドウのサブフォルダのMQL4プログラムのソートを修正しました。 ソートは名前順に行われます。
  2. 高解像度の画面(4K)での動作時のネット接続状況のインディケータの表示を修正しました。
  3. ニュースの印刷前のプレビューウィンドウの表示を修正しました。
  4. ターミナル、エキスパートアドバイザ、テスター、そして仮想ホスティングのログビューアにフル機能検索が追加されました。検索は、前方・後方、MatchCase、完全一致で行うことができます。

MetaEditor

  1. MQL4マスターにチュートリアルビデオ『取引ロボットの作成方法』のリンクが追加されました。この3分程のビデオをご覧いただき、1つのコード配列も書くことなく、取引ロボットを作成してください。


    このビデオや、その他のビデオはYoutubeのMetaQuotes Software Corp.公式チャンネルにてご覧いただけます。

MQL4

  1. 関数SignaBaseTotalによって返される値を修正しました。いくつかのケースで、ターミナルの利用可能シグナルの総数に代わり、0が返されていました。
  2. MQL4プログラムからの様々な時間軸でのグラフィックオブジェクトの見た目が変化するエラーを修正しました。いくつかのケースで、このプロパティを変更した後に、チャート上にオブジェクトが反映されていませんでした。

テスター

  1. テスト結果ウィンドウでのストップロス/テイクプロフィット、および価格の値の表示を修正しました。
クラッシュログで報告された不具合を修正しました。


11 12月 2015
MetaTrader 4 build 940: 高解像度画面への適応

ターミナル

  1. 高解像度の画面での動作へのインターフェースの適応作業が完了しました。大きなサイズの画面での、インターフェイスの全てのエレメントがはっきりと表示されます。小さなサイズの画面では、読みやすさを維持する為、自動的にエレメントのサイズが調整されます。




MQL4

  1. MQL4: Windows 10での作業時、時折、コンパイルエラー『書込みエラーEX4』(Error writing EX4)を引き起こしていた不具合を修正しました。
  2. MQL4: スクリプトまたはエキスパートアドバイザで、時折、他のDLLのダウンロードが起こるエラーを修正しました。

ホスティング

  1. 順次エキスパートアドバイザから呼び出されるユーザインディケータの中のEX4ライブラリ呼出がある時のホスティングへの移行のエラーを修正しました。

シグナル

  1. シグナル購読ページのエラー通知を修正しました。例としては、コピーの為に必要なシンボルの欠如や取引条件の区別についてなどです。

MetaEditor

  1. ウィンドウのうちの1つが完全に展開している場合の、開いているウィンドウの整理コマンドの動作を修正しました。『ウィンドウ』メニューから、開いているファイルをモザイク、垂直、水平、直列に配置することができます。


クラッシュログで報告された不具合を修正しました。
26 11月 2015
MetaTrader 4 build 920: 動作速度の改善と構成ファイルからのビジュアルテストの操作

ターミナル

  1. ターミナル: 取引アカウント選択ダイアログにおける、取引サーバのスタート及び定期的スキャンの不具合の修正を行いました。これからは、Pingが手動スキャンなしでタイムリーに確定されます。




  2. クライアントターミナルの動作速度の改善と最適化が行われました。
  3. 高解像度の画面での動作へのインターフェースの適応作業を続けています。

MQL4

  1. MQL4プログラムリソースのカスタムインディケータのダウンロードの不具合を修正しました。インディケータのリソースへの編入は、ディレクティ ブ#resourceを使って行われます。これにより、配信が遥かに簡単な『オールインワン』なプログラムを作成することができます。
  2.  カスタムインディケータのレベル数の反映の精度が修正されました。以前は、反映の精度は小数点以下4桁でしたが、これからはカスタムインディケータに対応した精度で決定されます。
  3. 方法/関数のパラメータとしての、オブジェクトの移動時の継承結果において、1つのタイプのオブジェクトを他のタイプにすることが可能かの検証を修正しました。
  4. 固定サイズの配列によってデータが与えられた場合の、指定されたバッファ(iIndicatorOnArray)における標準的なインディケータの計算を修正しました。時々、インディケータが再計算されていませんでした。
  5. クラステンプレートの不具合を修正しました。

テスター

  1. INIファイルからテスターを起動させた際に、ビジュアルモードを操作することができるようになりました。新しいパラメータ TestVisualEnable (true/false)がこれを行います。パラメータが指定されていない場合は、現在の設定が使用されます。
  2. テストのヒストリーからではなく、実際のヒストリーからデータが返ってくる、関数CopyXXXの不具合を修正しました。
  3. コマンド列で伝達されるINIファイルからのテストパラメータの読み取りが修正されました。
  4. ビジュアルテストのチャートを閉じた後に、余分なメモリの割り当てをする不具合を修正しました。いくつかのケースでは、実際に動作しているエキスパートアドバイザの為のヒストリカルデータが利用できなくなることがありました。

クラッシュログで報告された不具合を修正しました。

12 11月 2015
MetaTrader 4 build 910: ライブラリ内のコードの改良とWindows 10用インターフェイスの仕上げ

コードベース

  1. コードベース: ライブラリからのMQL4プログラムのダウンロードの時間短縮と修正が行われました。無料の取引ロボットやインディケータのソースコードを、今すぐターミナルでダウンロードしてください。

ターミナル

  1. ダウンロードしたヒストリカルデータのメモリから抜ける不具合を修正しました。不具合はメモリが不足している時に発生していました。
  2. Windows 10での動作時のユーザインターフェースのエレメント列の表示が修正されました。
  3. Backspaceキーを使ったチャートからのチャートオブジェクトの削除が修正されました。

シグナル

  1. 取引シグナルの表示列の翻訳が追加および修正されました。

MQL4

  1. ENUM_SYMBOL_INFO_INTEGER一覧に、読み取り専用のSYMBOL_VISIBLEが追加されました。
  2. パターン使用時のエラーを修正しました。
  3. データのソースとレシーバのデータ領域が完全または一部交差する時の、文字列配列のコピー時の関数ArrayCopyの動作が修正されました。

テスター

  1. MQL5マーケットからのエキスパートアドバイザやデモバージョンのインディケータをテストする際の制限が追加されました。今後は有料製品のデモバージョンのテストは、強制的にターミナルの現在の日付の一週間前で終了します。

MetaEditor

  1. 時折、他のアプリケーションと共に現れるプロンプトの紛争につながる不具合を修正しました。


クラッシュログで報告された不具合を修正しました。

22 10月 2015
MetaTrader 4 Build 900: MQL4でのクラスパターンとメモリー動作の最適化

ターミナル

  1. ターミナル:非アクティブ(未接続)アカウントのパスワード変更に関する不具合の修正を行いました。




  2. 大容量のヒストリー使用時のメモリーの使用と解放を最適化しました。
  3. 大容量のニュースカテゴリー使用を修正、また最適化しました。

シグナル

  1. 『ナビゲータ』ウィンドウのコンテクストメニューのシグナルからの回答を修正しました。


MQL4

  1. 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のパターンをインスタンス化します(TArrayのパターンをint型に特殊化)
    TArray<double>  ExtDblArray;   // TArrayのパターンをインスタンス化します (TArrayのパターンをdouble型に特殊化します)
    TArrayPtr<CFoo> ExtPtrArray;   // TArrayPtrのパターンをインスタンス化します (TArrayPtrのパターンをCFoo型に特殊化します)
    //+------------------------------------------------------------------+
    //| 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(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
  2. 時折MQL4-プログラムが落ちる原因となっていた、ArrayCopy機能でのメモリーの再分配を修正しました。

テスター

  1. インディケータテスト終了後にグローバルレベルにおいて指定された変数がリセットされる不具合を修正しました。
  2. 取引サーバへの未接続下でのテストを修正しました。

MetaEditor

  1. В MetaAssistでの型引用時の機能名の定義を修正しました。
  2. 大きなファイルを開く修正をしました。
  3. ライブラリページからの検索呼出の為のホットキーFが追加されました。同様に、コードを使用するコマンドの為にステータスバーに多数のプロンプトが追加されました。:インデントの増大/減少、ナビゲーション、ケースシフトなど。


クラッシュログで報告された不具合を修正しました。
2 10月 2015
MetaTrader 4 iPhone build 861
  • iPadで縦向き表示が可能になりました。取引履歴やニュース・メッセージが長くても簡単に見られるようになります。
  • さらにiPad Proでも利用可能。
  • インターフェイスには韓国語の翻訳が追加されました。
  • 様々なバグを修正しました。
1234567