What New in MetaTrader 4 (MT4) Build 600 upgrade

Over the past 7 months since the release of the public build 509, Metaquotes put in a lot of effort to improve MetaTrader 4 client terminal. MQL4 programming language for developing trading strategies has undergone the most significant changes – program execution speed has been increased, while the language itself has been brought closer to MQL5 to the maximum possible extent. This means that MQL4 trading robot developers can now also enjoy all the advantages of OOP: classes and structures, inheritance, Standard Library, resources and much more.

MetaTrader4_logo

New MetaEditor(MT4 build 600) provides such features as debugging, profiling, personal storage, autosubstitution of function names, snippets, inserting resources and intelligent code management.

The new MetaTrader 4 terminal features the Market – store of protected applications for MetaTrader 4 terminal. Now, any developer can put his or her own trading programs for sale on the unified application store, while traders can buy any product right from the terminal. All EX4 application files downloaded from the Market have the high level of protection similar to that of MQL5. MQL4 application developers can set the number of activations and prices for their products without worrying about the technical issues related to sales process – MetaTrader 4 Market will take care about the latter.

Due to changes in the file structure and location of the directory for storing custom files (indicators, Expert Advisors, scripts, templates, logs, etc.), all these data will be automatically moved to the new place during the update. Not a single custom file will be deleted during the process, and all original files will remain in their appropriate locations becoming backup copies.
As a result of the recent MetaTrader 4 (MT4) Build 600 upgrade implemented by MetaQuotes, the folders within the MT4 folder have moved. In addition, the MQL4 language has changed, and this may have interfered with your installed Expert Advisors (EAs) and indicators.

As a result of this upgrade, you should firstly save your EAs and indicators in the new folder location, which is: MT4 > MQL4 > Experts/Indicators.

Secondly, you will need to align your EAs and indicators with the new language to ensure they are fully functional on the updated MT4 platform. To do this, there are two options:

Option 1: Contact your EA provider if you do not have the source code available and request an updated version of the EA.

Option 2: If you have written your own EAs or you do have the source code available, please follow these steps:

Navigate to Tools > MetaQuotes Language Editor – a new window will appear
Navigate to View > Navigator – the Navigator box will appear in this window (if not shown already)
Double-click on the EA/indicator you would like to use and update – the relevant EA script will appear in the main window
Alternatively navigate to File > Open to locate the relevant EA/indicator source code saved on your computer
Click on Compile in the toolbar on top of the main window (or navigate to File > Compile) – a message will appear in the Toolbox window at the bottom
Once this has completed and there are no error messages displayed you will need to close and reopen MT4 – your EAs and indicators should now be ready to use

Related Readings and Observations

Comments

  1. B. Santhanam says

    The code used in exp.mqh is

    #import “exp.dll”
    int SetRateArray(double rates[][6],int,string,int,int);// rate array,array length,symbol name,period

    The code used in exportFB.mq4 is

    //+——————————————————————+
    //| ExportFunctions.mq4 |
    //| Copyright © 2005, MetaQuotes Software Corp. |
    //| http://www.metaquotes.net/ |
    //+——————————————————————+
    #property copyright “Copyright © 2005, MetaQuotes Software Corp.”
    #property link “http://www.metaquotes.net/”
    #include
    #define TIME_INDEX 0
    #define OPEN_INDEX 1
    #define LOW_INDEX 2
    #define HIGH_INDEX 3
    #define CLOSE_INDEX 4
    #define VOLUME_INDEX 5
    double rates[][6];
    //+——————————————————————+
    //| expert initialization function |
    //+——————————————————————+
    int init()
    {
    int ret;
    double rates[][6];
    ArrayCopyRates(rates);
    ret=SetRateArray(rates,Bars,Symbol(),Period(),Bars);
    return(0);
    }
    //+——————————————————————+
    //| array functions call |
    //+——————————————————————+
    int start()
    {
    int ret;
    double rates[][6];
    ArrayCopyRates(rates);
    ret=SetRateArray(rates,Bars,Symbol(),Period(),2);
    return(0);
    }
    //+——————————————————————+

    The clarifications issued in http://forum.mql4.com/60555 is

    • Changed ArrayCopyRates() behavior -- in the old MQL4 version, this function copied price series to double[][6] array. Now, the array from MqlRates structure elements should be used in order to receive time series:
    //Structure for storing data on prices, volumes and spread.
    struct MqlRates
    {
    datetime time; // period start time
    double open; // Open price
    double high; // High price for the period
    double low; // Low price for the period
    double close; // Close price
    long tick_volume; // tick volume
    int spread; // spread
    long real_volume; // exchange volume
    };
    The new format of the function also performs virtual copying. In other words, the actual copying is not performed. When the copied values are appealed to, the price data is accessed directly.
    int ArrayCopyRates(
    MqlRates& rates_array[], // MqlRates array passed by reference
    string symbol=NULL, // symbol
    int timeframe=0 // timeframe
    );
    In order to maintain compatibility with old MQL4 applications, the old call format is also preserved. However, a real copying of data to double type array is now performed.
    int ArrayCopyRates(
    void& dest_array[][], // array passed by reference
    string symbol=NULL, // symbol
    int timeframe=0 // timeframe
    );
    This means that the necessary data should be copied to dest_array[][] again when changing values in time series (adding new bars, restructuring or updating the last bar’s Close price). In this case, the receiver array will be automatically distributed according to the necessary amount of the copied bars even if it has been declared statically.

    PLEASE HELP WITH THE MODIFICATIONS IN THE ABOVE MT4 DATA PLUGIN TO AMIBROKER

  2. B. SANTHANAM says

    Thank You for your kind response.
    I paralyzed in trading due to the non-availability of the above data plugin.

    However I downloaded another new one that is called importer.
    The data is not imported into amibroker and I thought that there is the difference in the data structure fixed in amibroker and Importer and I send those things to your mail for your perusal and for suitable guidance in this regard.
    Thanking you

  3. davee says

    hi i see you talk about using MT4 for trading Futures but what MT4 companies have real time Indian data ?

Leave a Reply

Your email address will not be published. Required fields are marked *