Discussão do artigo "Criando interfaces gráficas para EAs e indicadores baseados no .Net Framework e C#" - página 2

 
fxsaber:

Infelizmente, tudo isso é uma floresta escura para nerds como eu. Seu artigo mostra um aplicativo interessante do github. Provavelmente é apenas 1% de seus recursos, mas foi útil.

Não entendi como ele pode ajudar na MQL5 a partir dos links fornecidos. Provavelmente, ele é imprescindível para programadores, mas há aqueles que estão longe de programar, como é o meu caso.

Se houvesse um artigo sobre esse tópico para MQL5, ele seria útil.

Os sistemas de controle de versão (qualquer um, não apenas o github) são coisas não triviais. Não é possível explicar o que é e por que você precisa dele em cinco minutos. Mas o recurso "copie o link e obtenha a versão mais recente do projeto" é um dos recursos desses sistemas, e é realmente muito legal.

 
Vasiliy Sokolov:

4) Você pode personalizá-lo de várias maneiras. Ele foi criado para que você precise especificar o nome do formulário e o conjunto no qual ele está localizado. Ou seja, agora você pode executar um, dois ou cinco formulários. Não há restrições.

Por exemplo, lançamos dois Expert Advisors idênticos, mas com formulários diferentes. Eles não entrarão em conflito?

Se entendi corretamente, você sugere que, para cada Expert Advisor, você deve escrever um GuiMT.exe diferente. Isso está correto?

 
Igor Makanu:

bom artigo, mas, por algum motivo, acho que não está no nível de um iniciante.

Acho que não consigo explicar de forma mais fácil. Sinceramente, fiz o melhor que pude. Eu até descrevi a instalação do estúdio em detalhes, conforme solicitado pelos funcionários.

Um usuário iniciante precisa fazer três coisas:

  1. Desenhar o formulário de que precisa (desenhá-lo exatamente no Visual Studio)
  2. Criar um código de tratamento de eventos em seu Expert Advisor (presume-se que o usuário esteja familiarizado com MQL, pelo menos em um nível básico)/
  3. Vincular o formulário ao Expert Advisor por meio do GuiController (especificar os caminhos corretos, especificar as importações, etc.).

Se for difícil, então você fez tudo o que podia, como se costuma dizer.
 
fxsaber:

Por exemplo, vamos executar dois EAs idênticos, mas com formulários diferentes. Eles não entrarão em conflito?

Se eu entendi corretamente, você sugere que para cada EA você deve escrever um GuiMT.exe diferente. É isso mesmo?

Sim. Preciso pensar sobre isso....

 
Igor Makanu:

HI: um formulário com botões e sem dll de terceiros ( GuiController.dll ) o usuário pode criar um formulário com botões usando as ferramentas do VS2017 literalmente em 2 cliques: criar projeto - biblioteca de classes Net e, em seguida, projeto - adicionar formulário do Windows

Se ele não estiver familiarizado com o C#, infelizmente não poderá fazê-lo. O código que você forneceu é meio "simples", com apenas algumas linhas: criar um thread, atribuir um delegado a ele e, em seguida, executá-lo. E em alguma outra parte do programa você assinou os eventos necessários.... - Tudo é "simples"...

Minha ideia principal era que o usuário pudesse desenhar um novo projeto sem ter que adicionar um código manipulador a ele, o que seria inevitável.

 
fxsaber:

Por exemplo, vamos executar dois EAs idênticos, mas com formulários diferentes. Eles não entrarão em conflito?

Se eu entendi corretamente, você sugere que para cada EA você deve escrever um GuiMT.exe diferente. Isso está correto?

Em resumo, sim, essa configuração entrará em conflito. Para evitar isso, você pode sobrecarregar o método ShowForm:

ShowForm(ulong magic, string assembly, string form_name);

A ideia é que a mágica contenha um número de sincronização exclusivo que reflita a relação do tipo <form-expert>. Em resumo, tudo é solucionável e extensível.

 
Vasiliy Sokolov:

Infelizmente, se você não estiver familiarizado com o C#, não conseguirá. O código que você citou é "simples", com apenas algumas linhas: crie um thread, atribua um delegado a ele e, em seguida, execute-o. Em alguma outra parte do programa, você se inscreveu nos eventos necessários.... - Tudo é "simples"...

Minha ideia principal era que o usuário pudesse desenhar um novo projeto sem ter que adicionar um código manipulador a ele, o que seria inevitável.

Você provavelmente está certo, é mais fácil para o usuário esboçar elementos gráficos em um formulário no VS2017 e, em seguida, verificar executando no VS sua criação, certificando-se de que "tudo está girando", ele pode passar a criar a interação do programa no .Net e no MT5.

Eu tinha objetivos um pouco diferentes - executar o .Net no MT4, mas o MT4 é difícil de obter o marshalling correto de uma só vez, então acabei criando um .dll primeiro no MT5 e depois o integrei ao MT4.

Sua maneira é provavelmente mais prática, um pouco mais tarde eu vou me familiarizar com o projeto no github, definitivamente um ENORME OBRIGADO!

 
Igor Makanu:

Você provavelmente está certo, é mais fácil para o usuário esboçar elementos gráficos em um formulário no VS2017 e, em seguida, testar executando sua criação no VS, certificando-se de que "tudo está girando", ele pode passar a criar a interação do programa no .Net e no MT5.

Você acertou! É por isso que o sistema tem três componentes. E o princípio de "dividir e conquistar" em ação.

Igor Makanu:

Eu tinha objetivos um pouco diferentes - executar o .Net no MT4, mas é difícil para o MT4 realizar o marshalling correto de uma só vez, então acabei criando o .dll primeiro no MT5 e integrando-o ao MT4.

Você ainda tem um nível profissional. É claro que o MT4 é uma história um pouco diferente.

Igor Makanu:

Sua maneira é provavelmente mais prática, vou me familiarizar com o projeto no github mais tarde, definitivamente um ENORME OBRIGADO!

Obrigado pelo feedback:))))

 
Estamos todos esperando pelo Peter. Vamos ver sua "avaliação especializada" da minha solução proposta:)
 

Sim, é um bom artigo, mas não tenho certeza se os editores o leram ;-). "Besides" está escrito junto, mas em todos os outros lugares do texto está separado. Isso me chamou a atenção porque eu o li com mais ou menos atenção, em comparação com outros artigos.

De fato, parece ser bom por um lado. Mas, por outro lado, é um pouco incômodo extrair todo o material relacionado ao Studio apenas para o editor visual de formulários. Se o Studio já estiver instalado, não há problema.

Eu faria tudo no MQL, junto com o designer (tenho ideias, mas não consigo colocá-lo em minhas mãos). E acho que há uma opção intermediária - com o Studio, mas sem a DLL - projetar formulários WPF, ler XAML em MQL.