I continue to be amazed by the ability of the Metaquotes company to steam roll their users with their automatic updates that introduce massive changes that should only belong within an Alpha release. This week the Metatrader 4 platform has been updated to build 600+ on many brokers – via an automatic process that does not even ask the user – breaking a lot of previous functionality and making a lot of indicator and expert advisor implementations completely useless. Imagine if you’re trading something live and suddenly it gets completely killed by a platform update (that you didn’t even ask for) that simply changes the entire way in which the programming language functions and interacts with other programs. Within this post I will share with you some tips to deal with the latest Metaquotes joke on Forex traders, giving you some information that will hopefully help you avoid any chaos in the short term and eventually migrate your implementations in the longer term.
–
–
First of all, lets talk about ways in which you can prevent this and future updates from happening at all. The automatic update functionality is a complete monstrosity and therefore those of us seeking to have more control and stability should think about completely disabling it. Metaquotes does not offer any official path to do this but you can disable this functionality by deleting the live and web install functionality that the Metatrader 4 platform uses. In order to do this first make sure you enable the view of hidden/files and folders within windows explorer and then proceed to delete the Metaquotes folder within your C:\ProgramData folder (on windows 7/8) and any Metaquotes folder within your C:\Documents and Settings\AllUser\Application Data and C:\Documents and Settings\YourUser\Application Data folders. Deleting these folders on pre-600 builds will not affects the functioning of your MT4 platform (as far as I’ve experienced) and it will prevent the automatic update functionality from doing anything to your platforms. Additionally remember to always keep a zipped copy of your MT4 platforms as backup, in case there is anything that Metaquotes does that breaks any functionality.
Although the above solves the problem temporarily, it does not solve it completely as Metaquotes will probably decide to eliminate the use of pre-600 builds eventually, forcing anyone who wants to trade with their platform to update to newer builds. In order to update our code to work with the 600+ build environment, we should first consider some changes introduced in this release and the reason for them. Metaquotes decided to update the MT4 platform significantly in order to carry out a merging plan between MT4/MT5. Since the MT5 platform was by all accounts a failure among traders – guess which stubborn company failed to implement all user suggestions, like a history center – the company was faced with the prospect of losing all this work and having to continously support an old platform (Metatrader 4). The company then decided to implement MT5 functionality in MT4 in order to slowly convert one platform into another. Metaquote’s objective seems to be to slowly turn MT4 into MT5 and eventually unify both platform and force an update to an MT5 hybrid like platform.
The biggest change in build 600 is that the MT4/MT5 compilers are now unified into one, meaning that several things were changed to allow for this compatibility. Most importantly, several new variable types have been added and some previous types have entirely changed their definition. If you have variables with names like “char” or “new” these will need to be changed to accommodate for the new types. Additionally there have been important changes to the RateInfo types, which have now changed to match the structure of the Metatrader 5 platform. Previously you could use the ArrayCopyRates function in MT4 to obtain an array of RateInfo that contained time and Open/High/Low/Close/Volume information, now this structure contains additional values representing spreads, tick volume and real volume. If you were using the ArrayCopyRates function to copy rates you should now stop using it and instead use the MT5 functions for this purpose (CopyRates) and modify any usage of the resulting variables to accommodate for the new structures (note that you will now put the result into an array of MqlRates instead of an array of double, since the new compiler supports structures). If you’re using a DLL to interface with your program and receive data you will also need to make changes to accommodate for these new structures. Note that if you have already coded MT5 versions of your code you will probably have an easier time using these on MT4.
Another important change pertains to string variables. Strings are no longer the same as they were in the previous MQL4 language implementation. Strings in MT4 were previously a pointer to a character array along with a long integer variable that contained the length of the string. This has now changed and the string no longer represents such a structure. If you’re passing strings to external libraries it is probably safer for you to convert these strings in MT4 to an array of char (use the StringToCharArray function) and pass this to your external libraries as char*. This is the way in which this worked in MT5 and it will probably be the way in which it will work in MT4 from now on. You probably will need to convert your experts and indicators to work with MT5 functions if they do not work outside of the box, which will probably be the case if you’re using any important level of complexity within your code (such as calls to DLLs, etc).
–
–
Now don’t get me wrong, I am all for change and code improvements and many of the things that Metaquotes has done with the MQL4 language are good. There is now a debugger, access to an object oriented trading approach, etc, but this is simply not the way to roll out updates with such important changes. With many people using MT4 as a critical application for their trading, the rolling of anything on an automated fashion without user consent is absurd. If it was my company I would have introduced an explicit warning within the platform about such updates (obviously requiring user permission for updating) and I would have also warned that users should test their implementations on a demo before updating. But then again, Metaquotes seems to enjoy being a bully to their end-users (their customers are the brokers, not us) so it seems that anyone using MT4/5 will have to endure this in the long run. If you are looking for a solution, take a look at our F4 framework.
If you would like to migrate outside of the MT4/5 Metaquotes domain and enjoy trading using paid open-source solutions where you can control everything related to your trading (including updates!) please consider joining Asirikuy.com, a website filled with educational videos, trading systems, development and a sound, honest and transparent approach towards automated trading in general . I hope you enjoyed this article ! :o)
Daniel
I couldn’t agree more. This is a major change and not an update or bug fix. They should have called it MT6 and just admit that MT5 is a failure. If you go to the MQL4 forum you’ll see there are a LOT of people who are not happy, myself included. There is also some sort of issue accessing historical bar data, something to do with the data structure changes and the ability to access it is proprietary information according to Metaquotes. The great software companies like Microsoft and Google quickly create a new major version after a failure, they don’t go an update a previous version making it wildly different. Metaquotes needs a slap and some competition.
Regards
Rodney
You speak from my heart Daniel. Metaquotes and their dictatorship are just a piece of sh*t, nothing more. They think they can do whatever they want without losing customers, but I think they ARE wrong and alternatives like yours and tradable.com are coming out bigger lately. Moves from MQ like this give those platforms a boost in popularity for sure, and RIGHT so. Metaquotes needs to be eliminated in my eyes, they act like a typical Russian bully, sorry to say, but it is true.
I agree with Daniel; this way of release sounds more russion than software engineering approach.
If I were working for Metaquotes; I would have introduced a simple merging strategy that will definitely work. Just introduce version number in the header of the mq4 file; or simply use mq4 for version 4; and mq5 for 5. Merge the compilers; and get them to compile either files automatically. This will preserve backward compatibility.
They did not even bother to update the mql language reference to the new build. Not a sound business practice.
MQ has proven itself to be quiet unreliable and irresponsibly regarding the fact that their MT4 platform was trusted by a lot of traders as well as coders in the past.
I’m afraid the way MQ has handled the move to the new MT4 has voided this trust completely.
Thus i guess i’m better off to look for a new platform myself too …
I will also complain at my broker about the MQ updates policy …
They do everything by purpose! It is a global dictatorship in action. The new MT? is transparent to the brokers and they will use it to their advantage. Forget binary option! Ha, ha, ha…
There will be more than 95% trader losers on new MT soon.
It looks like the new MT is made in cooperation with Wall Street.
Amen
Lorak Ylesev
This force-fed update of MT4 has had me on the fence. Do I just abandon all my time and effort in developing indicators, scripts and EAs and move on to another platform? Or do I just take the beating and make peace with MetaQuotes, and learn to code in the new MQL4?
Then I thought about how the new update not only happens without my consent, but also how, in addition to the updates to the terminal and IDE, MetaQuotes completely rearranges my folders and moves my files around, all without my permission. There is a name for programs that do this kind of thing – virus.
The new MetaTrader 4 is a virus. I will extirpate it from my computers and move to another platform.
I hope Metaquotes will be hit with class action lawsuit for such a selfish and irresponsible action.
This article speaks from a trader’s soul and was obviously written from someone who is a trader. I drew a lot of the same conclusions as this article and told ForexMagnates about this….but your article here sums up the MQ agenda nicely, especially in regard to the irresponsibility in forcing an updated platform to LIVE traders (real money accounts).
To the author, I recommend you start contacting several brokers about incorporating your F4 framework and trader as an additional offering. But you would want to consider tick data and/or sub-minute backtesting/simulation. I’m surprised you are not already supporting tick data simulation. Your trading software….does it support tick charts?
Hi Jon,
Thanks for your comment :o) The F4 framework does support tick charts and renko charts — it allows you to perform accurate simulations using this chart types across any of the used front-ends. Thanks again for posting,
Best Regards,
Daniel
[…] Oops, you did it again: Dealing with the latest Metatrader 4 build 600+ […]
MetaQuotes can not get anyone to use MT5
so they force them, what a joke, “unified
mt4/mt5 compiler” is mt5 by any other name
irregardless of whether or not you call it
mt4 build 600. Time for all of the MT4 developers
to unify efforts and build a compatible client
/ development platform over on Source Forge,
something that will run on Linux ( and thus
android and apple OS’s ) so we no longer
have to put up with Microsoft Windoze either….
I agree, having spent the last 8+ years developing code around MT4 bugs only to start again with MT4/5 bugs. The worse is the folder structure changes. It broke all of my install programs as well as those of some of my larger clients.
Metaquotes needs to remember that without programmers their platform will disappear.
I am also on the fence but once I look at R and F4 I might just jump ship.
In case you do not know me I have been a software engineer since the mid 70’s as well as a Mathematical Analyst. I have donated my time to many forum threads while learning the MT4 language, even re-coding some MT3 to MT4.
Mad Metaquotes asked I would have suggested the same. Just change the file extension and keep the folder structure as is.
The scariest part is they got through my firewall and spyware/virus protection and installed to a read only folder.
Robert Hill aka MrPip
Professional MT4 Programmer
Find the MetaQuotes folder in C:/ProgramData (hidden folder by default), don’t delete that fucker – just put Deny on all rights for all users. It helped for me. Then try to find older build versions of MT4. Good luck!
Or create an empty file and rename it the folder that the updates install to (mt4clw e.g. C:\ProgramData\MetaQuotes\mt4clw or [windows user]\App Data Roaming\MetaQuotes\mt4clw )
then make the file “read-only”. you cannot create a new file or folder of the same name.
I’m so irritated with the “upgrade”. At first I was jazzed about the whole thing (cool, there’s line-numbers in metaeditor, there’s new buttons at the top, etc). Awesome, I’m going to write a program. First thing I notice is that there’s no longer a “reference” window to the right where i get quick explanation of the language (like iMA(bla,bla,bla,bla)). I wasted a whole evening and day trying to open this window. So i reference the book. Next thing I notice: my program is FULL of warnings and errors…what the heck??? So I’m thinking “no problem, must be some simple changes I have to make with this new build) WRONG!! I still haven’t figured it out. Next thing I notice: NONE OF THE DOZENS OF PROGRAMS I’VE ALREADY WRITTEN WORK!! (they work before I compile them…as soon as I compile them, they take a shit, AND it takes the strategy-tester LONGER to tell me it doesn’t work). SO I’m researching this on-line (somebody tell me I’m wrong please)…I have to actually include debugging-algorithms into my programs…code specially designed to debug my programs!! WTF!! ARE YOU KIDDING ME?? I swear to god, after spending COUNTLESS hours learning MQL4, if i have to start all over, I’m giving up. This is BULLSHIT.
BTW, I’m probably sounding pretty clueless about all the changes, I haven’t programmed for exactly 9 months. I tried scratching the itch 4 days ago. I was hit with the upgrades. 4 days later, I’m ready to throw my keyboard through the monitor. Do I really need to re-learn the language? Is there alternatives?