Q: Can you make available BNF description of MQL5? If not BNF, do you have formal syntax descriptive document? If no formal syntax description, why not?
A: You can use C++ BNF description (we cannot publish it because this form is hardcoded in our project)
The differences as compared to C++ are:
* No class inheritance
* No address arithmetic
* No operators overload (it will probably be included later)
* No 'goto' operator
* No ternary operation expr ? op1 : op2; (it will probably be included later)
The syntax description will be embedded in MetaEditor help files.
Q: Can you make available Client Terminal Functionality Documentation? Eg, callable functions, global variable functionality, error code handling embeded within Terminal instead of current random hit and miss programmer attempts at error handling?
A: No, we cannot as yet. You should consider the functionality described in MQL4. However, the functionality will be expanded considerably.
Q: What do you see as cut off date when MQL4 will no longer be accepted as platform? Will all MQL4 S/W become redundant unless migrate to MQL5 syntax...?
A: You should not worry about "cut-off" date for MQL4. The upward compatibility of the languages will be kept, with some rare exceptions.
Q: What is the syntax's difference between MQL4 and MQL5?
A: It may be difference between OrderSend (MQL4) and OrderSend (MQL5) function calls. But this is no matter of MQL5 syntax - it is just feature of Metatrader 5 trading platform.
Q: Will MQL5 be multithread to take all quad-core processors capacity on Tester?
A: Tester is planned to be multithread. But this is client terminal feature not MQL5.
Q: Is it planned that MQL5 will come out for MT4, not with a new Metatrader 5?
A: No, it is not. MQL5 will come out for Metatrader 5. As was said in the interview, "the development of Metatrader 5 is in full swing, and the development of MQL5 is at its closing stage".
Q: Will this new MQL5 support event-driven programming? In event-driven environment, we can just define what kind events we want to handle and write a routine (function) to process that event.
Automatic trading basically processes events that occur: event when an indicator hits certain value, event when price triggers an order, event when an open order is being closed, event when an open order causing margin call/stop out, etc. But in MQL4 we are lacking such a feature, so the solution is quite unnatural because we have to check every condition we need to know inside the start() function on every tick of the applied chart. Consider an example that an account is nearing a stop-out because of an open position. However the EA is applied only to (unfortunately slower) one chart, different from the pair currently traded. It misses a call to start() and stop-out happens. This wouldn't happen if there is an event-driven function to handle the event.
A: Events are planned. multitimeframes and multicurrencies testing planned too. multithreaded tester optimization... But these all things are Metatrader 5 features not MQL5. Debugger is planned. What is event processing in the MQL5? Just appropriate functions like OnNewTick, OnNewBar, OnOrderClosed, OnPendingTriggered, OnAlert and so on placed in the events handling queue. That's all. Events handling (first part of event processing) is matter of Metatrader 5 not MQL5.
Q: Does language design contain a more flexible (read usable) #define syntax; eg, parameters. Basically, minimal implementation as per C. Preprocessing of source code is old and known task with many code bases to choose from. Preprocessing does not impact compiler and added benefits of macro/define functionality are enormous.
A: Preprocessing was introduced in the pure C for portability purposes between different platforms and compilers. Preprocessing causes some hardly detectable errors. The answer is "No". Simplest #define only.