overcoming the «problems» of MQL . The language of the platform is focused primarily on interaction with the trading environment

and fast mathematical calculations. Arrays are not first-class entities, but dynamic structures
are rather difficult to program. For the sake of justice - it has justifications and partly it is solved by the «Standard Library»

Code reuse . Many of the developed would like to be used outside of MetaTrader, and MQL is exclusively

trading platform language

Programming the GUI. When I look at how programmers are tormented by developing components that can be displayed

only inside the graph and at the same time programmers calculate the pixels, I want to cry. 2018, the 21st century, trading platform.
In any language there are 1-2-3 modern, full-featured, stable framework for user interfaces.

Interaction with the «world» - the trader's environment includes DBMS, tables, different data streams, news feeds,

analytical software and so on. You need the means to interact with this

I would like to have «glue» for using other means . In order to debug one DLL and one language in one platform,

and all others easily clung to him already. All modern languages ​​have mechanisms for adapting external modules from other languages.

Limitations and drawbacks of the solution

Of course, the solution will have obvious limitations and drawbacks, this too must be immediately understood and accounted for the scope of application:

the use of another language entails the use of its infrastructure. Simply speaking, installation is required

this language with its libraries and tools on the computer.

programs using DLL:

can not be executed on popular «VDS» MetaQuotes

can not be used in the «optimizer cloud»

* can not be sold through «market mql5.com»

MT Features and System Requirements

Known features of MetaTrader work, which significantly influence the choice of the language for embedding:

There are three types of user programs:

indicators

scripts

experts

each program is a separate entity, works with its own memory and should not affect the work of others

for execution of the program, the platform calls its methods (standard functions) which must be worked out to the end

while indicators of one chart are executed (called) within one system thread associated with the chart

scripts and experts use a separate thread for each chart

MT functions can not be called from the DLL.

the main system requirement follows from this:

«should be able to run several independent instances of the interpreter (or virtual machine language) on 1 system thread.»

and one great wish (to make the impossible possible):

«it is desirable that the language / interpreter has a» continuation «that is, it allows the return of the intermediate result with the preservation of its own state»

User requirements (my)

To learn a new programming language is not so difficult, the more I have a presentation about their device,
and I consistently looked at almost everything. Of course, I had my requirements / wishes for them (with a few explanations):

this should not be an exotic or very new / experimental language.

must have not too big API

The API must provide access directly to the language and data, and not just its console or bath-mode

the language itself must be quite high

have good application libraries

have a suitable license interpreter and libraries, which allows you to use it in freelancing or commercial projects without imposing restrictions on the customer

Forth, Lisp, C, C ++

Forth and Lisp immediately disappeared, the first is too low, the second is so sharply different from MQL that using it is a dissonance.
Although anyone who wrote in MQL «translator of arithmetic formulas» or «calculator with brackets» almost realized one of them.
depending on the applied method of parsing expressions

C and C ++, such interpreters, for example, Cling (https://root.cern.ch/cling) used in the analysis of CERN data, do not seem to be suitable.
Using scripts like C ++ within a C ++-like language will not make the recording of algorithms easier or faster.

Remained the following group of popular languages: Python, Ruby, R, JavaScript, Lua, Tcl