Discussão do artigo "Biblioteca para desenvolvimento fácil e rápido de programas para a MetaTrader (parte X)"

 

Novo artigo Biblioteca para desenvolvimento fácil e rápido de programas para a MetaTrader (parte X): Compatibilidade com a MQL4 - Eventos de abertura de posição e ativação de ordens pendentes foi publicado:

Nos artigos anteriores, nós começamos a criar uma grande biblioteca multi-plataforma, simplificando o desenvolvimento de programas para as plataformas MetaTrader 5 e MetaTrader 4. Na nona parte, nós começamos a melhorar as classes da biblioteca para trabalhar com a MQL4. Aqui nós continuaremos melhorando a biblioteca para garantir sua total compatibilidade com a MQL4.

Teste

Vamos verificar as mudanças aplicadas. Compilamos o TestDoEasyPart10.mq4, iniciamos ele no testador, abrimos e fechamos algumas posições, colocamos algumas ordens pendentes, esperamos até que uma delas seja ativada e verificamos se os níveis de stop e trailing estão ativados (modificando as posições e ordens pendentes). Todos os eventos que a biblioteca "vê" para a MQL4 devem ser exibidos no diário do testador:


Se nós observarmos atentamente o diário do testador, nós podemos ver que a biblioteca ainda não conseguiu visualizar o encerramento de posições. Quando a ordem pendente BuyLimit #3 é acionada, o diário informa que a [BuyLimit #3] está ativada, levando à posição Buy #3. Agora, a biblioteca vê os eventos de ativação da ordem pendente e conhece a ordem que originou a posição. Além disso, nós podemos ver uma leve omissão na função de modificação — o rótulo da ordem pendente BuyStop #1 modificado pelo trailing está em vermelho. Mas a biblioteca vê todos os eventos de modificação de ordem e posição.

Autor: Artyom Trishkin

 

Há um erro no MT4 que exclui tudo, inclusive objetos ocultos (o que não deveria ser o caso), ao pressionar a tecla ← Backspace

Portanto, ao pressionar ← Backspace, você pode excluir facilmente toda a interface.

Em geral, seu código MT4 não tem uma resposta para a exclusão de controles para recriá-los.

 
Andrey Voytenko:

No MT4, há um erro que exclui tudo, inclusive objetos ocultos (que não deveriam estar), ao pressionar a tecla ← Backspace.

Portanto, ao pressionar ← Backspace, você pode excluir facilmente toda a sua interface.

Em geral, seu código MT4 não responde à exclusão de controles para recriá-los.

Esses não são controles. São botões de teste. Um shell de biblioteca gráfica está chegando. Mais tarde. Obrigado pelo aviso.
 

O Trade.mqh foi criado para funcionar no MT4.

Готовые советники из Мастера MQL5 работают в MetaTrader 4
Готовые советники из Мастера MQL5 работают в MetaTrader 4
  • www.mql5.com
Клиентские терминалы MetaTrader 4 и MetaTrader 5 предоставляют своим пользователям возможность легко создавать прототипы программ на языке MQL с помощью встроенного Мастера (MQL Wizard). Мастера обоих версий терминалов очень похожи, но все же имеют одно важное отличие. В Мастере MetaTrader 5 есть пункт генерации готовых советников, а в...
 
Proponho que seja feito
#ifdef __MQL5__
  #define __MQL5_NEW__
#else // __MQL5__
  #define __MQL4_NEW__
#endif // __MQL5__
no início da Bíblia. E todas as condições devem ser alteradas para New-variant. Então, será possível executar no MT5 a variante mt4 da biblioteca, e no MT4 - a variante mt5 da biblioteca.
 
fxsaber:
Sugiro que isso seja feito logo no início das Bíblias. E todas as condições devem ser alteradas para New-variant. Então, será possível executar no MT5 a variante mt4 da biblioteca, e no MT4 - a variante mt5 da biblioteca.
Portanto, há apenas uma variante da biblioteca
 
Artyom Trishkin:
Há apenas uma variante de biblioteca

Eu gostaria de poder executar a lógica MT4 da biblioteca no MT5.

 
fxsaber:

Eu gostaria de poder executar a lógica da biblioteca do MT4 no MT5.

Não entendo a sugestão porque a lógica é a mesma para as duas plataformas. A implementação é ligeiramente diferente.
 
Artyom Trishkin:
Não entendi a sugestão porque a lógica é a mesma para ambas as plataformas. A implementação é um pouco diferente.

Eu conecto o MT4Orders antes de sua biblioteca. E quero que a variante MT4 esteja envolvida em sua biblioteca.

Há duas maneiras de resolver isso

  1. Eu substituo __MQLX__ em todas as fontes de sua biblioteca. Ou seja, altero a própria biblioteca, embora de forma semiautomática.
  2. Você cria macros, como mostrei acima. Então, para incluir o MT4-logic no MT5, você não precisa alterar nada em sua biblioteca.


Acho que você terá interesse em comparar sua biblioteca exclusivamente no MT5, mas em dois modos lógicos.


ZY: Também quero poder executar sua biblioteca no Virtual. Para isso, preciso ter acesso à parte da biblioteca no estilo do MT4.

 
fxsaber:

Eu conecto o MT4Orders antes de sua biblioteca. E quero usar a variante MT4 em sua biblioteca.

Há duas maneiras de resolver isso

  1. Eu substituo __MQLX__ em todas as fontes de sua biblioteca. Ou seja, altero a própria biblioteca, embora de forma semiautomática.
  2. Você cria macros, como mostrei acima. Então, para incluir o MT4-logic no MT5, você não precisa alterar nada em sua biblioteca.


Acho que seria interessante você comparar sua biblioteca exclusivamente no MT5, mas em dois modos lógicos.


ZY: Também quero poder executar sua biblioteca no Virtual. Para isso, preciso ter acesso à parte da biblioteca no estilo do MT4.

Podemos conversar sobre isso. Mas em particular. Por enquanto, a biblioteca será desenvolvida da mesma forma: uma lógica para ambas as plataformas. A biblioteca foi concebida como uma unidade independente - uma para ambas as plataformas. Com a mesma lógica que não contradiz nem o estilo MQL4 nem o estilo MQL5 - tudo é comum.

ZY: Não entendi o que significa a parte da biblioteca no estilo MQL4. Não há nenhuma separação ali. Mostre-me o local da biblioteca que está sendo mencionado.

 
Artyom Trishkin:

Podemos discutir o assunto. Mas em particular. Enquanto isso, a biblioteca será desenvolvida da mesma forma: uma lógica para ambas as plataformas. A biblioteca foi concebida como uma unidade independente - uma para ambas as plataformas. Com a mesma lógica que não contradiz nem o estilo MQL4 nem o estilo MQL5 - tudo é comum.

Eu lhe enviei uma versão da sua biblioteca, que funciona no MT5 por meio da lógica do estilo MT4 prescrita por você.

ZY: Não entendi o que significa a parte da biblioteca no estilo MQL4. Não há nenhuma separação ali. Mostre-me o local da biblioteca em que isso é mencionado.

A questão é que as bibliotecas de plataforma cruzada têm uma probabilidade muito maior de operabilidade da parte da biblioteca no estilo MQL4 do que no estilo MQL5. Portanto, ao usar bibliotecas de plataforma cruzada, prefiro usar sua lógica de estilo MQL4 no MT5. Ela é muito mais confiável no MT5.


Acho que, no MT5, sua lógica no estilo MQL5 levará muito tempo para detectar bugs, enquanto o estilo MQL4 terá apenas um número mínimo de bugs e não críticos.