Discussão do artigo "Gerenciando otimizações (Parte I): Criando uma interface gráfica do usuário"

 

Novo artigo Gerenciando otimizações (Parte I): Criando uma interface gráfica do usuário foi publicado:

Este artigo descreve um processo para criar uma extensão projetada para o terminal MetaTrader. Essa solução ajuda a automatizar o processo de otimização através de sua execução em outros terminais. Outros artigos serão escritos com base neste artigo para desenvolver este tópico. A extensão será escrita usando linguagem C# e modelos de programação, o que, além do objetivo principal deste artigo, mostrará não apenas a capacidade do terminal de expandir os recursos originalmente criados através da escrita de templates próprios, mas também como criar facilmente gráficos personalizados numa linguagem com os recursos mais convenientes para isso.

Para começar, vale a pena decidir que, para trabalhar com o projeto, será necessário instalar o IDE (Integrated Development Environment) do Visual Studio. Este projeto foi criado usando a versão Community do 2019. Além disso, durante a instalação do estúdio, é preciso instalar o .Net 4.6.1, pois este complemento é escrito com ajuda dele. Também vale a pena dizer que, para que os leitores que não são bem versados em C# possam entender rapidamente a essência da questão, tentarei descrever em detalhes alguns pontos específicos desta linguagem e as técnicas que usei durante a programação.

Como é mais conveniente criar a interface gráfica usando a linguagem C# e o terminal MetaTrader suporta uma maneira amigável de encaixar com essa linguagem, vale a pena usar essa possibilidade. Além disso, há pouco, no fórum apareceram vários artigos sobre a criação de interfaces gráficas usando C#. Esses artigos apresentam uma boa maneira de criar interfaces gráficas baseadas na tecnologia Win Forms e uma biblioteca dll de encaixe que inicia gráficos através de mecanismos de reflexão. A solução usada pelo autor destes artigos é muito boa, mas para o atual eu decidi usar uma versão mais moderna de escrever interfaces gráficas, nomeadamente através da tecnologia WPF.

Como resultado, conseguimos, sem uma biblioteca de encaixe, amoldar tudo numa única biblioteca dll. Para resolver nossa tarefa, precisamos criar um tipo de projeto que nos permita armazenar os objetos gráficos descritos usando a tecnologia WPF e compilar numa biblioteca dinâmica (arquivo *.dll) que pode ser carregada posteriormente no terminal. Este tipo de projeto existe, ele é WpfCustomControlLibrary. Esse tipo de projeto foi projetado especificamente para criar objetos gráficos personalizados, por exemplo, para criar uma biblioteca que desenha gráficos. Vamos usá-lo para nossos próprios propósitos, particularmente para criar nossa extensão para o terminal MetaTrader. Para criar este projeto, precisamos selecioná-lo na lista de projetos no IDEVisual Studio, como mostra a imagem:

Autor: Andrey Azatskiy

[Excluído]  

Posso lhe fazer uma pergunta?

Qual é o objetivo disso?

O que o impede de lançar apenas dois terminais e executar a otimização neles?

Ambos os terminais acessam os mesmos agentes. Você não pode esperar nenhum ganho de velocidade.

Qual é o objetivo?

 
Сергей Таболин:

Posso lhe fazer uma pergunta?

Qual é o objetivo disso?

O que o impede de lançar apenas dois terminais e executar a otimização neles?

Ambos os terminais acessam os mesmos agentes. Não é de se esperar nenhum ganho de velocidade.

Qual é o objetivo?

A questão não é a velocidade, mas o fato de ter essa possibilidade. Por exemplo, tenho especialistas que, em essência, combinam várias lógicas; se você fizer a pesquisa normalmente, alguns dos resultados serão de lógica mista e, portanto, não devem ser levados em consideração.
O segundo motivo é o gerenciamento da otimização (otimização contínua), que será o tópico de um dos próximos artigos.

Além disso, após a otimização, os relatórios de ambas as otimizações são armazenados em um único local, o que é conveniente para trabalhar com eles.

 
Eu estava tentando criar um sistema semelhante, mas a ideia era agendar otimizações e, quando elas fossem concluídas, o terminal salvaria a otimização em .csv com um nome projetado, por exemplo: EA_XXX_v01_EURUSD_H1_OHLC_SET01
E posteriormente iria para a próxima otimização programada, os SETs deveriam ser salvos em uma pasta, dessa forma otimizaria vários robôs durante o dia em vários períodos e símbolos diferentes, inclusive facilitando um WFA ou OOS.
Infelizmente não consegui desenvolver devido ao meu pouco conhecimento, vou acompanhar seu trabalho. Parabéns!!!
 
Joao Luiz Sa Marchioro:
Eu estava tentando criar um sistema semelhante, mas a ideia era agendar otimizações e, quando elas fossem concluídas, o terminal salvaria a otimização em .csv com um nome projetado, por exemplo: EA_XXX_v01_EURUSD_H1_OHLC_SET01
E depois iria para a próxima otimização agendada, os SETs deveriam ser salvos em uma pasta, dessa forma otimizaria vários robôs durante o dia em vários períodos e símbolos diferentes, inclusive facilitando um WFA ou OOS.
Infelizmente não consegui desenvolver devido ao meu pouco conhecimento, vou acompanhar seu trabalho. Parabéns!!!

Obrigado Luiz. Agora estou trabalhando no projeto como você descreveu e em breve haverá um artigo sobre ele.

 

Olá!

Posso lhe fazer uma pergunta?

A versão Community 2015 pode ser usada?

 
Irina Dymura:

Olá!

Posso lhe fazer uma pergunta?

A versão Community 2015 pode ser usada?

Olá, acho que sim, é possível.

 
Obrigado...
 
Resources.resx

O arquivo está faltando no pacote zip.

No entanto, ele pode ser encontrado aqui

https://www.mql5.com/ru/articles/download/7029.zip


Além disso, o artigo é muito bom!

Uma possibilidade de iniciar o MT5 externamente e realizar testes

 
Saudações e obrigado novamente por seu trabalho tão útil. A finalização do processo por meio do registro de dados em um arquivo dox, xcl ou csv será muito útil.
Mais uma vez, obrigado.
 
Patrick Johnson:
Saudações e obrigado novamente por seu trabalho tão útil. A finalização do processo por meio do registro de dados em um arquivo dox, xcl ou csv será muito útil.
Mais uma vez, obrigado.

Infelizmente, não há mais suporte para esse projeto. Agora estou trabalhando no otimizador automático walk forward (https://www.mql5.com/pt/articles/7583)

Continuous Walk-Forward Optimization (Part 5): Auto Optimizer project overview and creation of a GUI
Continuous Walk-Forward Optimization (Part 5): Auto Optimizer project overview and creation of a GUI
  • www.mql5.com
In the previous articles, we considered the project part directly related to the terminal as well as the part describing the general application of the project. The previous article was ahead of the rest of the series. This was done for two reasons. Firstly, it serves as an instruction for using the application. Secondly, it illustrates the app...