Beta MetaTrader 4 Build 555 with Updated MQL4 Language and Market of Applications Released
Old .ex4 files still don't reliably re-initialize and get ticks when a chart's period (or symbol) is changed. Sometimes it works. But most of the time there is a call to deinit(), and then... nothing. No new call to init(), and no new calls to start().
New .ex4 files are okay, but often - again not always - there are two calls to OnDeinit() and two calls to OnInit() when an EA is reloaded because of a period change.
An example
First the "_master string" indicator
#property indicator_chart_window #property indicator_buffers 1 extern string param = "whatever I pass"; double firstBuffer[]; int init() { SetIndexBuffer(0,firstBuffer); return(0); } int deinit() { return(0); } int start () { firstBuffer[0] = iCustom(NULL,0,"_slave string",param,0,0); return(0); }
And the "_slave string" indicator
#property indicator_chart_window
#property indicator_buffers 1
extern string dummy = "I am in a called indicator";
double firstBuffer[];
int init() { SetIndexBuffer(0,firstBuffer); return(0); }
int deinit() { return(0); }
int start()
{
firstBuffer[0] = 0; Comment("from a slave : "+dummy);
return(0);
}
When you run the "_master string" indicator as a result you will get an empty string that was "passed" to the "slave" indicator. Did anybody actually test the beta at all? Not a single iCustom() call with string parameters will work. Which means that any code depending on such indicators is worthless. And this is just one example of what happens when you try to use just the iCustom() call. If things like these are not correct, what can we expect from stuff that is more complicated?
An example
First the "_master string" indicator
And the "_slave string" indicator
When you run the "_master string" indicator as a result you will get an empty string that was "passed" to the "slave" indicator. Did anybody actually test the beta at all? Not a single iCustom() call with string parameters will work. Which means that any code depending on such indicators is worthless. And this is just one example of what happens when you try to use just the iCustom() call. If things like these are not correct, what can we expect from stuff that is more complicated?
Well, I bet that the IndicatorCreate() does not have the problem... It may be better to avoid stuff from the recent MQL4 and prefer the MQL5 equivalents, they look more mature in the current build.
MetaQuotes:
10. Terminal: Added display of subfolders and the structure of Expert Advisors, scripts and indicators in Navigator window.Is there a 'refresh' button or right-click option in the navigator that allows users to add expert advisors, indicators, etc and have them show up in the list without having to restart the terminal? This is very annoying in old mt4 to have to restart a terminal only to show new indicator. I should be able to refresh the display and mt4 can search the experts [sub]folders and return/remove any new EAs
And what happens if the user installs the program outside of the 'program files' folder? are they forced to use the '/portable' switch in order to keep user added material and logs in one folder? I always installed mt4 outside of the program files folder and I never had UAC issues. Everything is in one folder.
-----
Congrats outside of this. This is quite a significant improvements made to mt4. No multiprocessor support, and symetric order processing on the same symbol. But we will see what happens.
Well, I bet that the IndicatorCreate() does not have the problem... It may be better to avoid stuff from the recent MQL4 and prefer the MQL5 equivalents, they look more mature in the current build.
Don't understand me wrong. If I want metatrader 5 then I code using metatrader 5. But when I use metatrader 4 I do not want to use metatrader 5 (for more than one reason). If metatrader 4 is going to be discontinued then they should say so and we all can make our decisions and find ourselves convenient trading platforms. But having something done half way (and half functional) is not good for anybody (mainly it is not good for metaquotes)
BTW, the MetaQuotes email to brokers says that the launch date for this is "mid-January".
A lot of work still to do...
Don't understand me wrong. If I want metatrader 5 then I code using metatrader 5. But when I use metatrader 4 I do not want to use metatrader 5 (for more than one reason). If metatrader 4 is going to be discontinued then they should say so and we all can make our decisions and find ourselves convenient trading platforms. But having something done half way (and half functional) is not good for anybody (mainly it is not good for metaquotes)
I do agree. But I am not a fan of mql5. I just wanted to point out, that they replaced mql4 by mql5, and added a new (??) implementation of the old set of mql4 functions. So I would expect more bugs in the original mql4 set, which I am trying to avoid right now. I do not want to be a volunteer beta-tester, I only need it working.
ENUM_APPLIED_PRICE still not recognised by the compiler.

- Free trading apps
- Over 8,000 signals for copying
- Economic news for exploring financial markets
You agree to website policy and terms of use
MetaTrader 4 Build 555 with Updated MQL4 Language and Market of Applications Released
Over the past six months since the release of the public build 509, we put in a lot of effort to improve all the components of MetaTrader 4 online trading system. MQL4 programming language for developing trading strategies has undergone the most significant changes. These changes have provided new features for developing trading robots and made possible the launch of MetaTrader 4 Market - secure app store for MetaTrader 4 terminal.
We start the public test of the new MetaTrader 4 terminal and invite all traders to join it in order to try all its features and help developers to correct the errors.
After the public beta test is complete, the final build of the new MetaTrader 4 terminal will be released. You can find out what's new in MQL4 below the list of changes.
MetaTrader 4 Client Terminal build 555

Increased operation speed of MQL4 apps, provided built-in support of DLL and Visual Studio, implemented access to MQL5 Storage and much more.Since the release of MetaTrader 4 platform in 2005, selected terminal installation directory was also the place where all data necessary for work (terminal logs, templates, profiles, quotes, etc.) has been stored. But with the release of Windows Vista in 2008, all Microsoft operating systems implement serious limitations of user privileges in order to protect them against malicious programs and to prevent applications under one user account to change or damage the same program's data necessary for another user account.
Starting with Windows Vista, User Account Control (UAC) mechanism was introduced. The main idea of implementing the mechanism is that the application's unchangeable data stored in the installation directory should be separated from user's data modified by this application during its operation. Thus, all data of each user should be stored in a separate folder. You can find more information about UAC in Windows help or the Wikipedia article.
In the new version all data of a certain user working with MetaTrader 4 terminal from a separate installation directory are stored in the terminal data folder. This folder can be found on a system disk (a disk with installed Windows operating system) along the following path
where:
"Open Data Folder" command has been added to File menu of the terminal for searching and opening the data folder.
The root of each terminal data folder also contains origin.txt file where you can find the path to the installation folder of the terminal this data refers to. This allows users to reversely match each terminal data folder with a certain terminal installation directory, for example, in case when several copies of MetaTrader 4 terminal are installed by a user. This type of working with the terminal when the data folder is separated from the installation one is the main mode and highly recommended for security reasons.
The terminal can also be launched in the so-called portable mode (as in previous MetaTrader 4 builds). In that mode, the data is stored and recorded in the installation folder. To do this, use "/portable" key. For more convenience, you can create an additional terminal launch shortcut with the appropriate name on your desktop and add the key directly to the shortcut:
Now, when placing trade requests, all of them are passed via the main connection with the trade server. Thus, the time of processing the trade requests (especially the first one) has been considerably reduced as there is no need to wait for connection to the trade server being established any more. In order for the new processing algorithm to be operable, the trade server should also be updated - requests are still set in a separate connection on older trade servers.
Due to transition to the new model of requests processing, the ability to cancel the trade requests not yet accepted by the server (Cancel button in the trade request status dialog) has been disabled.
Word-by-word search with regard to Russian and English morphology is used. The search is performed in the sections specified by a user in the settings:
The context menu of the search results tab contains additional commands depending on the type of results:
When management of trading levels from the chart is allowed, alert's price value can be changed by its dragging to a new price level. Alerts can be disabled or removed using a context menu on the appropriate chart level.
Just enter a company name (or a fragment of a server name) and the terminal will automatically add all servers of the company (the servers containing the specified line in their names) to the list:

This option is necessary when using signals on VPS (Virtual Private Server). It can also be used to increase the synchronization reliability when working with the already selected signal.Fixed errors reported on the forum and in crash logs.
MetaTrader 4 MultiTerminal build 555
The live update is available through the LiveUpdate system.
What's New in MQL4
MQL4 programming language has been completely revised reaching the level of MQL5 - now you can develop trading robots in MQL4/5 using the unified MetaEditor development environment, single style, libraries and debugging tools.
MQL4 is popular among automated system developers due to the ease of learning and a huge amount of code generated for many years of using MetaTrader 4 terminal. However, the language also has some drawbacks arising from its main advantage - a simple programming language does not allow development of complex systems and hinders porting of debugged libraries from high-level languages. Therefore, we decided to implement in it the maximum possible amount of MQL5 language functions and features fully preserving MQL4 functionality. In other words, all powerful MQL5 functions, including ООP and the native code compiler, will become available in MQL4.
To achieve this, we have developed a unified compiler that automatically supports both MQL4 and MQL5 languages. MetaEditor will also become a unified application both for MetaTrader 4 and MetaTrader 5 platforms. Thus, it will be possible to compile both MQL4 and MQL5 from any version. MQL5 Storage also becomes available for work.
Protection of MQL4 applications rises to MQL5 level. New EX4/EX5 files are provided with a serious and completely revised protection. This means that the Market of secure EX4 applications also becomes available to MetaTrader 4.
Besides, MQL4 now features new graphical objects and new functions for working with charts. MQL5 Standard Library is to be ported to MQL4 providing developers with new possibilities in creating their own graphical interfaces and trading libraries. Now, you can create full-fledged applications in MetaTrader 4 using the resources.
Changes in MQL4 Language
The table of differences between compilers
while new OnInit(), OnStart(), OnCalculated, OnTick(), OnTimer(), OnChartEvent(), OnTester() and OnDeinit() should strictly correspond to their signatures
The list of the reserved words has been expanded. Thus, such widespread words as short, long, const, etc. cannot be used as names
datetime is a 32-bit integer.
Predefined Volume variable is of double type
datetime is a 64-bit integer.
Predefined Volume variable is of ulong type
* Please pay special attention to "Array out of range" error - many old custom indicators will display this error in strict mode of the new compiler when launched on the chart. It is recommended to find the cause and eliminate it.
** In the new MQL4 and MQL5, FILE_SHARE_READ and FILE_SHARE_WRITE flags are responsible for the files shared use mode. There were no such files in the old MQL4.