There is a small bug in the MQL preprocessor. Please analyse the following code snippet.
#define name_0 Michael #define name_1 J #define name_2 Fox #define defer(x) x #define paste(x_0, x_1, x_2) x_0##x_1##x_2 #define paste_2(x_0, x_1, x_2) paste(x_0, x_1, x_2) #define CamelCase_name_0(x_0, x_1, x_2) x_0##x_1##x_2 #define CamelCase_name_1(x_0, x_1, x_2) paste(x_0, x_1, x_2) #define CamelCase_name_2(x_0, x_1, x_2) paste_2(x_0, x_1, x_2) #define CamelCase_name_3(x_0, x_1, x_2) defer(x_0)##defer(x_1)##defer(x_2) #define CamelCase_name_4(x_0, x_1, x_2) defer(x_0)defer(x_1)defer(x_2) #define CamelCase_name_5(x_0, x_1, x_2) paste(defer(x_0), defer(x_1), defer(x_2)) #define CamelCase_name_6(x_0, x_1, x_2) paste_2(defer(x_0), defer(x_1), defer(x_2)) #define MichaelJFox 1961 void f() { PrintFormat("The year of birth is %d.\n", CamelCase_name_0(name_0, name_1, name_2)); //With Visual C++: `name_0name_1name_2'. With MQL: `1961'. PrintFormat("The year of birth is %d.\n", CamelCase_name_1(name_0, name_1, name_2)); //With Visual C++: `1961'. With MQL: `1961'. PrintFormat("The year of birth is %d.\n", CamelCase_name_2(name_0, name_1, name_2)); //With Visual C++: `1961'. With MQL: `1961'. PrintFormat("The year of birth is %d.\n", CamelCase_name_3(name_0, name_1, name_2)); //With Visual C++: `1961'. With MQL: error. PrintFormat("The year of birth is %d.\n", CamelCase_name_4(name_0, name_1, name_2)); //With Visual C++: `1961'. With MQL: error. PrintFormat("The year of birth is %d.\n", CamelCase_name_5(name_0, name_1, name_2)); //With Visual C++: `MichaelJFox'. With MQL: `1961'. PrintFormat("The year of birth is %d.\n", CamelCase_name_6(name_0, name_1, name_2)); //With Visual C++: `1961'. With MQL: `1961'. return; }
Can we get a summary of changes (changelog) of the improvements from the last stable build (b1280, correct?)
Also, some brokers are showing OLD VERSION for some of the terminals. I assume all builds under 1200 are old now?
------
@László Müller are you suggesting that this same code worked fine in b1280, but does not work now in b1310? Or when was the last build that the code you presented worked ok?
Bug in file Include\Controls\Dialog.mqh still has not been fixed (fixed in MT5).
https://www.mql5.com/en/forum/189473#comment_11419618
This is a bug in standard library in file Dialog.mqh. Fixed in MT5 btw. Add a line to that file as follows: //+------------------------------------------------------------------+ //| Initialize common area | //+------------------------------------------------------------------+ bool CAppDialog::CreateCommon(const long chart,const string name,const int subwin) { //--- save parameters m_chart_id =chart; m_name =name; m_subwin =subwin; m_program_name=name; m_deinit_reason=WRONG_VALUE; //--- get unique ID m_instance_id=CreateInstanceId(); //--- initialize chart object m_chart.Attach(chart); //--- determine type of program m_program_type=(ENUM_PROGRAM_TYPE)MQLInfoInteger(MQL_PROGRAM_TYPE); //--- specify object and mouse events if(!m_chart.EventObjectCreate() || !m_chart.EventObjectDelete() || !m_chart.EventMouseMove()) { Print("CAppDialog: object events specify error"); m_chart.Detach(); return(false); } //--- get subwindow offset SubwinOff(); //--- succeed return(true); }

- 2017.04.05
- www.mql5.com
Guys, what is the reason in 2020 that MT4 isn't being constantly enhanced? Sure, platform is now stable but is that enough?
There so many features that can be added (improved alerting, chart and order management tools and built in indicators). It's very clear people are not moving to MT5 but going to TradingView or cTrader for new features.
Surely this is a simply a good business model for Metaquotes to do this?
All development on MT4 stopped years ago. Only bug fixes.
Guys, what is the reason in 2020 that MT4 isn't being constantly enhanced? Sure, platform is now stable but is that enough?
There so many features that can be added (improved alerting, chart and order management tools and built in indicators). It's very clear people are not moving to MT5 but going to TradingView or cTrader for new features.
Surely this is a simply a good business model for Metaquotes to do this?
Unfortunately MQ "allegedly" wants to continue their push for MT5. So by putting mt4 in bug/security fix-only maintenance cycle, it forces users to either except it as it is or use a new version. And also limit the selling of new mt4 broker licenses.
I think to some degree it is slap in the face to the MT4 community that gave them their success.....but ultimately "I just trade here". Not my final decision.
There are more organic ways to grow MT5 userbase.
Unfortunately MQ "allegedly" wants to continue their push for MT5. So by putting mt4 in bug/security fix-only maintenance cycle, it forces users to either except it as it is or use a new version. And also limit the selling of new mt4 broker licenses.
I think to some degree it is slap in the face to the MT4 community that gave them their success.....but ultimately "I just trade here". Not my final decision.
There are more organic ways to grow MT5 userbase.
I agree. The main things I would like to see would be a "Dark Mode" for the entire terminal, improved Alerting (ability to set default alerts, auto assign WAV audio to symbol name, set Push/Email/Audio on same alert event.
Improved chart scrolling and zooming like TradingView.
Nothing too major really, but platform specific and can't really be coded.
Surely with the millions of users of MT4, why don't MQ canvass opinions on features? This company is going to end up like Kodak.
...........
Surely with the millions of users of MT4, why don't MQ canvass opinions on features? This company is going to end up like Kodak.
as long as mt4 remains stable, it will be around for some time.
as long as mt4 remains stable, it will be around for some time.
There's being around and there's good business sense to ensure growth and longevity. Shooting themselves in the foot doesn't seem like a great plan.

- Free trading apps
- Over 8,000 signals for copying
- Economic news for exploring financial markets
You agree to website policy and terms of use
The MetaTrader 4 platform update will be released on Thursday, November 26, 2020. This version provides error fixes and platform stability improvements.
The new build will be available through the Live Update system.