MetaTrader 4 was officially released as
far back as in July 2005 and went on to become the most popular trading
platform in the world. More than 2000 MT4 servers are currently
available to traders. Success did not come immediately, of course. It
was obtained as a result of constant hard work while we were
implementing more and more features and fixing user-reported errors.
In order to provide further development
and implement new sought-after services, we decided to radically update
MetaTrader 4 and concentrated all our efforts on complete rewriting of
many critical components in summer 2013. It was a challenging task, but
the result was worth it: MetaTrader 4 build 600
containing the fully updated client terminal with the new MQL4 language
and the Market of applications was released on February 3, 2014. This
was followed by the explosive growth in the number of trading
applications uploaded to MetaTrader AppStore - the store of MetaTrader trading robots and indicators.
The new opportunities offered by the updated MetaTrader 4 make it unreasonable to stay with older versions of the terminal.
Welcome to the new world of "compatibility".
"The new opportunities offered by the updated MetaTrader 4 make it unreasonable to stay with older versions of the terminal."
The lack of ability to compile older programs is a good enough reason. In this situation there will be no chance to even
try anything older than 8 months. Besides there is no free reprogramming service of broken compatibility issues.
I still did not find any advantage of the programs rewritten and/or recompiled with the new builds.
More memory consumption, same speed.
As a developer I don't remember such a scandalous upgrade in the last 20 years as the release of build 600.
try anything older than 8 months.
The ability of trading and connecting to a broker won't be possible with builds < 600 from 1st of August. However, you could still use old compilers to compile your old codes - because the old ex4 binaries are still supported by the newer builds.
Yes, I agree with you - there are man problems with the newer builds, but you have at least one solution as a workaround for the old codes of yours.
That is just a sad fact of the last two decades of software development. As computers get more powerful developers create more bloated apps (and operating systems).
So lets see if I understand this correctly:
1) MQ launches MT4 in July 2005.
2) Nearly 9 years later (Feb 2014) despite a large following with a proven programming language, you make significant changes to MQL4 and platform in build 600+ that are incompatible with lower builds.
3) after only 6 months of a complete overhaul, you do not want to support the lower builds (mainly build 509) any longer.
I want to confirm will the lower build still be allowed to connect to the broker, or will the user get the error message "old version"?
I do think a longer transition period is in order. 9 years building a user following vs 6 months with revised system? No one sees anything weird about that?
9 years building a user following vs 6 months with revised system? No one sees anything weird about that?
One big thing for me has been conditional compilation which I now make use of a lot. A simple example of its use is to enclose debugging code in an #ifdef DEBUG .... #endif block that is then included in the compilation or not according to whether DEBUG is defined or not. This avoids the need for commenting out debugging stuff, and also means it can be restored easily if needed. Another example is for library functions that I write which might do some things differently for an indicator versus for an EA. With conditional compilation I have one set of code to maintain without the performance penalty of using run time testing. In all, I use about a dozen such defines with conditional compilation.
Another is classes and structs. Even without making use of classes, the simpler structs add a lot. I now use lots of them to improve data structures almost everywhere and make code easier to write, more legible, more self documenting, more maintainable, and often faster. (Assigning one struct to another is a lot faster than making multiple indexed array assignments.) I also now use the equivalent of C/C++ pointers when passing a struct that is a member of an array to a function. This reduces code and improves execution speed.Plus the extra data types are good, though there are a few funnies like volumes being a long. No volume figure will ever be so big as to need a long. And I don't see why datetime needed to grow to being 8 bytes rather than 4. I cast datetimes back to 4 bytes when I am storing lots of them.
Another welcome addition is the timer event. I use that to flush files and logs every minute instead of having to test on time in the main tick event. It also allows me to detect end of week and close down a tick data collection bot after 5pm Friday NY time. Previously that simple task could not be done as there was no way to know which was the last tick of the week, until the first tick of the next week arrived on Monday. I am also using the tick event fired every second to do my own better back testing with tick data. That could not be done before.
Plus the controls (dialogs, combo boxes, buttons etc) are now available built in without need for a third part library.And all the extra charting facilities.
Then there are nice touches such as function overloading to make code cleaner i.e. same name for the integer case as for the double. That is just nicer, and I like my code looking "beautiful".
The more rigorous compilation checks when compiling in strict mode (which I always use) avoid errors that the old compiler did not detect. Sometimes this does result in warnings about possible use of an uninitialized variable that are not valid for my logic, but adding a conditionally compiled initialization during debugging gets rid of them.
And lots more. Many things....
The extra power is allowing me to write a bot for tick chart trading a la Bob Volman's book "Forex Price Action Scalping". That would have been much harder to develop in the old MT4, requiring use of a dll probably, whereas now all can be done in MT4 code.
So, as I said, it is a huge improvement as far as I am concerned. I just love the new languages by comparison with the old.