Discussão do artigo "Crie seus próprios painéis gráficos no MQL5"

 

Novo artigo Crie seus próprios painéis gráficos no MQL5 foi publicado:

A usabilidade do programa MQL5 é determinada tanto por sua rica funcionalidade como pela interface de usuário gráfica elaborada. A percepção visual, algumas vezes, é mais importante do que uma operação rápida e estável. Aqui está um guia passo-a-passo para você mesmo criar painéis de exibição com base nas classes da Biblioteca padrão.


Autor: MetaQuotes Software Corp.

 

No momento, a biblioteca está personalizada para um painel no gráfico.

Se você tentar adicionar dois painéis, os eventos serão capturados incorretamente - os elementos têm o mesmo Id e o Id pai não é verificado.

Para testar, peguei o Controls.mq5 de demonstração e dupliquei o painel - todos os eventos são duplicados para ambos os painéis, embora não devessem ser.

Arquivos anexados:
 
No item "Filling the display panel" (Preenchimento do painel de exibição), podemos usar algo como
ObjCAppDialog.Create(chart,name,subwin,x1,y1,x2,y2))
em vez de
CAppDialog::Create(chart,name,subwin,x1,y1,x2,y2))
?
 
Rorschach:
No item "Preenchimento do painel de exibição", em vez de usar algo como ?

Bom dia, talvez você possa me dizer o que fazer.

Seu exemplo ekspert Controls.

Ao alternar para um período diferente , o expert é descarregado, tentei remover ExtDialog.Destroy(reason); em OnDeinit().

Você pode me dizer o que preciso fazer para que a janela de diálogo continue a funcionar ao alternar para outros períodos?

Документация по MQL5: Программы MQL5 / Выполнение программ
Документация по MQL5: Программы MQL5 / Выполнение программ
  • www.mql5.com
Программы MQL5 / Выполнение программ - Документация по MQL5
 
vdv2001:

Bom dia, talvez você possa me dizer o que fazer.

Seu exemplo é um controle do Expert Advisor.

Ao mudar para outro período , o Expert Advisor é descarregado. Tentei remover ExtDialog.Destroy(reason); em OnDeinit().

Você pode me dizer o que preciso fazer para que a janela de diálogo continue a funcionar ao mudar para outros períodos?

Muito obrigado por sua observação. O erro foi corrigido. Atualização na próxima compilação.
 

Na minha opinião, é mais fácil criar bibliotecas manualmente, saber onde e como usá-las ou corrigi-las se algo estiver errado.

Exemplo de criação de um painel sem usar classes padrão: VirtualTradePad PositionsStyle

 

Podemos nos perguntar por que o uso do MQL5 Wizard para criar uma classe produz um código que não compila:


Conforme declarado no artigo, você precisa adicionar essa linha de código manualmente, o que é um pouco estranho para um assistente destinado a não codificadores

#include <Controls\Dialog.mqh>

Além disso:

This article will demonstrate how easy it is to create your own display panels in a separate chart subwindow using the Standard Library classes.

Acho que isso é uma piada, não é?

MQL5 Wizard: Creating Expert Advisors without Programming
  • 2011.01.11
  • MetaQuotes Software Corp.
  • www.mql5.com
Do you want to try out a trading strategy while wasting no time for programming? In MQL5 Wizard you can simply select the type of trading signals, add modules of trailing positions and money management - and your work is done! Create your own implementations of modules or order them via the Jobs service - and combine your new modules with existing ones.
 

"Isso é um pouco estranho para um assistente destinado a não codificadores."

Não acho que esse assistente seja para não codificadores.

Ele pode ajudar você (o programador novato) a dar os primeiros passos necessários para criar algo.

A estrutura MQL5 oferece muito potencial e parte dele pode ser descoberto com as criações do assistente

mas acho que para obter algo mais complexo, como esse exemplo, você sempre precisará de noções básicas de programação.

Mas concordo que deve ser necessário incluir as coisas óbvias se você derivar de uma classe base...

 
ugo58:

" Isso é um pouco estranho para um assistente destinado a não codificadores."

Não acho que esse assistente seja para não codificadores.

Ele pode ajudar você (o programador novato) a dar os primeiros passos necessários para criar algo.

A estrutura MQL5 oferece muito potencial e parte dele pode ser descoberto com as criações do assistente

mas acho que para obter algo mais complexo, como esse exemplo, você sempre precisará de noções básicas de programação.

Mas concordo que deve ser necessário incluir as coisas óbvias se você derivar de uma classe base...

Você provavelmente está certo, mas pensei que o MQL5 Wizard tivesse sido projetado primeiramente para não programadores. De qualquer forma, o problema é como um bug aqui, pois você precisa adicionar código manualmente para compilar o código criado pelo Wizard.

MQL5 Wizard: Creating Expert Advisors without Programming
  • 2011.01.11
  • MetaQuotes Software Corp.
  • www.mql5.com
Do you want to try out a trading strategy while wasting no time for programming? In MQL5 Wizard you can simply select the type of trading signals, add modules of trailing positions and money management - and your work is done! Create your own implementations of modules or order them via the Jobs service - and combine your new modules with existing ones.
 

Percebi que na biblioteca de GUIs de usuário (painéis) é copiado um modelo de evento não muito bem-sucedido, na minha opinião:

void OnChartEvent(const int id,
                  const long &lparam,
                  const double &dparam,
                  const string &sparam)
{
    ...
}

Em primeiro lugar, nem todos os eventos têm um conjunto de variáveis correspondentes a int, long, double e string. Em algum lugar pode haver mais variáveis descrevendo o evento, em algum lugar menos, em algum lugar elas não coincidem com os tipos básicos propostos. De fato, vemos conversões constantes como int -> bool, string -> int, double -> int, etc. E se, do ponto de vista da programação procedural, não há praticamente nada que você possa fazer (porque você não criará 1.000.000 de funções sobrecarregadas para cada caso hipotético), então, dentro da estrutura da OOP, tudo pode ser feito de forma muito mais fácil e elegante.

Mas o principal problema do OnEvent é que esse manipulador de eventos destina-se a lidar com eventos recebidos do gráfico, enquanto o evento pode ser qualquer coisa, como abrir uma nova posição ou alterar as cotações. Em geral, OnEvent(...) não parece ser um manipulador de eventos universal, na minha opinião. Talvez os desenvolvedores tenham conseguido, de alguma forma, tratar seus próprios eventos com base no CWnd existente, mas, para mim, usar a biblioteca padrão de painéis ainda é problemático.

Как использовать торговые классы Стандартной библиотеки при написании советника
Как использовать торговые классы Стандартной библиотеки при написании советника
  • 2010.11.10
  • Samuel
  • www.mql5.com
В статье рассказывается о том, как использовать основной функционал торговых классов Стандартной библиотеки при написании советников, в которых применяется открытие, закрытие и модификация позиции, проверка свободной маржи перед размещением торговых ордеров, размещение и удаление отложенных ордеров. Показано, как использовать торговые классы для получения свойств ордеров и сделок.
 

Obrigado, eu o estudei, é útil! Um momento: há algum plano para criar algum tipo de construtor, de modo que os painéis possam ser montados no construtor de formulários, como no VS? porque não é muito conveniente contar tudo à mão, talvez seja um sinal de profissionalismo, mas leva muito tempo)).

Com as macros, eles obviamente exageraram...