New MetaTrader 4 Build 970: Simplified demo account opening and expanded MQL4 features

 

New MetaTrader 4 Build 970: Simplified demo account opening and expanded MQL4 features

MetaTrader 4 platform update is to be released on Friday, June 3, 2016. The update will feature the following changes:

July 1, 2016 support for MetaTrader 4 terminal versions below 940 will end

Support for MetaTrader 4 terminal builds below 940 will be discontinued on July 1, 2016. Unsupported terminal builds will not be able to connect to the new server versions. Therefore, we strongly recommend that you upgrade your terminal.


MetaTrader 4 build 970

  1. Terminal: Simplified demo account creation dialog. You do not have to fill the large form any more. Simply specify basic data and select trading parameters: account type, deposit and leverage.




  2. MQL4: The format of the executable EX4 files has changed to implement the new features of the MQL4 language. All EX4 applications compiled in previous builds of MetaEditor will work properly after the update. Thus, the upward compatibility is fully preserved.

    EX4 programs compiled in build 970 and above will not run in old terminal builds - backward compatibility is not supported.

  3. MQL4: Added support for abstract classes and pure virtual functions.

    Abstract classes are used for creating generic entities, that you expect to use for creating more specific derived classes. An abstract class can only be used as the base class for some other class, that is why it is impossible to create an object of the abstract class type.

    A class which contains at least one pure virtual function in it is abstract. Therefore, classes derived from the abstract class must implement all its pure virtual functions, otherwise they will also be abstract classes.

    A virtual function is declared as "pure" by using the pure-specifier syntax. Consider the example of the CAnimal class, which is only created to provide common functions – the objects of the CAnimal type are too general for practical use. Thus, CAnimal is a good example for an abstract class:
    class CAnimal
      {
    public:
                          CAnimal();     // Constructor
       virtual void       Sound() = 0;   // A pure virtual function
    private:
       double             m_legs_count;  // How many feet the animal has
      };
    Here Sound() is a pure virtual function, because it is declared with the specifier of the pure virtual function PURE (=0).

    Pure virtual functions are only the virtual functions for which the PURE specifier is set: (=NULL) or (=0). Example of abstract class declaration and use:
    class CAnimal
      {
    public:
       virtual void       Sound()=NULL;   // PURE method, should be overridden in the derived class, CAnimal is now abstract and cannot be created
      };
    //--- Derived from an abstract class
    class CCat : public CAnimal
     {
    public:
      virtual void        Sound() { Print("Myau"); } // PURE is overridden, CCat is not abstract and can be created
     };
    
    //--- examples of wrong use
    new CAnimal;         // Error of 'CAnimal' - the compiler returns the "cannot instantiate abstract class" error
    CAnimal some_animal; // Error of 'CAnimal' - the compiler returns the "cannot instantiate abstract class" error
    
    //--- examples of correct use
    new CCat;  // no error - the CCat class is not abstract
    CCat cat;  // no error - the CCat class is not abstract
    Restrictions on abstract classes
    If the constructor for an abstract class calls a pure virtual function (either directly or indirectly), the result is undefined.
    //+------------------------------------------------------------------+
    //| An abstract base class                                           |
    //+------------------------------------------------------------------+
    class CAnimal
      {
    public:
       //--- a pure virtual function
       virtual void      Sound(void)=NULL;
       //--- function
       void              CallSound(void) { Sound(); }
       //--- constructor
       CAnimal()
        {
         //--- an explicit call of the virtual method
         Sound();
         //--- an implicit call (using a third function)
         CallSound();
         //--- a constructor and/or destructor always calls its own functions,
         //--- even if they are virtual and overridden by a called function in a derived class
         //--- if the called function is purely virtual
         //--- the call causes the "pure virtual function call" critical execution error
        }
      };
    However, constructors and destructors for abstract classes can call other member functions.

  4. MQL4: Added support for pointers to functions to simplify the arrangement of event models.

    To declare a pointer to a function, specify the "pointer to a function" type, for example:
    typedef int (*TFunc)(int,int);
    Now, TFunc is a type, and it is possible to declare the variable pointer to the function:
    TFunc func_ptr;
    The func_ptr variable may store the pointer to function to declare it later:
    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;           // error: neg is not of  int (int,int) type
    Print(func_ptr(10));    // error: there should be two parameters
    Pointers to functions can be stored and passed as parameters. You cannot get a pointer to a non-static class method.

  5. MQL4: Added TERMINAL_SCREEN_DPI value to the ENUM_TERMINAL_INFO_INTEGER client terminal property enumeration — data display resolution is measured in dots per inch (DPI). Knowledge of this parameter allows specifying the size of graphical objects, so that they look the same on monitors with different resolution.
  6. MQL4: Added TERMINAL_PING_LAST value to the ENUM_TERMINAL_INFO_INTEGER client terminal properties — the last known value of a ping to a trade server in microseconds. One second comprises of one million microseconds.
  7. MQL4: DRAW_NONE buffers (no graphical constructions) now do not participate in a chart window minimum and maximum calculations in custom indicators.
  8. MQL4: Fixed generating events related to mouse movement and mouse button pressing over objects of OBJ_LABEL and OBJ_TEXT types. Previously, the events were generated incorrectly if they were within other objects of OBJ_RECTANGLE_LABEL and OBJ_RECTANGLE types.
  9. MQL4: Fixed plotting zero-height histogram bars in custom indicators. Previously, such bars were not displayed, while now they have a height of 1 pixel.
  10. Signals: Fixed searching for trading symbols when comparing available trading symbols of a signal provider and subscriber.
  11. Tester: Fixed use of spread in fxt file if the current spread is used in the test settings.
  12. Market: Fixed a few Market showcase display errors.
  13. MetaEditor: Fixed search of words by files in "Match Whole Word Only" mode.
  14. MetaEditor: Added moving to a file by double-clicking on the necessary file's compilation result line.
  15. MetaEditor: Fixed display of some control elements in Windows XP.
  16. Fixed errors reported in crash logs.

The update will be available through the LiveUpdate system.

 

Avira detected Virus

 

Terminal.exe MetaEditor.exe

 

It is false alarm (and it was discussed many times):

Forum on trading, automated trading systems and testing trading strategies

Trojan Problem (MT4)

Sergey Golubev, 2016.06.05 20:43

This is false alarm, and it was discussed many times related to Avira:

  • Look at this post, and
  • This reply from MQ: "The installer has no virus - this is another false alarm on our polymorphic engine protection. Open the properties of any of our executable file to view digital signatures - they are signed (and unchanged)".

 
Hello,

Congratulations for the new updates

Do I need to re-install the platform again in order to get the build 970?

Note that I have not prompted automatecally (as Usual) when logged in to my account, still I have the build 950
 
Mohammad Soubra:
Hello,

Congratulations for the new updates

Do I need to re-install the platform again in order to get the build 970?

Note that I have not prompted automatecally (as Usual) when logged in to my account, still I have the build 950
I closed MT4, and open it once again - and live update was started (from 950 to 970 build).
You can do same
 
Sergey Golubev:
I closed MT4, and open it once again - and live update was started (from 950 to 970 build).
You can do same
Done but still no live update
Also for mobile
!
 
Mohammad Soubra:
Done but still no live update
Also for mobile
!

may be - it depends on the broker. Because my MT4 was updated now only (and not yesterday for example).
It will be updated soon or later for example.

 
Sergey Golubev:

may be - it depends on the broker. Because my MT4 was updated now only (and not yesterday for example).
It will be updated soon or later for example.

Oh..
I will wait 
maybe few hours/days they will update
 
yes. me too expecting new update. its not updated till now for me. hope it will be done soon.
 

I am looking to install a demo account on MetaTrader5 with no luck.

Is there a step by step detailed guide? Any free provider with delay data will do.


Thank you

 
Sherif Hasan:
yes. me too expecting new update. its not updated till now for me. hope it will be done soon.

Hello,

To update to the new version, you can open a demo account at our server MetaQuotes-Demo.