Discussão do artigo "Criando interfaces gráficas para EAs e indicadores baseados no .Net Framework e C#"
Esta imagem

você pode ver claramente o que precisa fazer para ver o gráfico de saldo/patrimônio ao negociar visualmente.
ZY O que são esses dois botões adicionais no canto superior direito de cada janela?
Nesta imagem.
você pode ver claramente o que precisa fazer para ver o gráfico de saldo/patrimônio ao negociar visualmente.
Para quem tem dois monitores, isso é realmente muito conveniente. Eu tenho dois, mas tive que fazer esse layout para a foto.
O que são esses dois botões adicionais no canto superior direito de cada janela?
É um utilitário adicional para trabalhar de forma conveniente com dois monitores. Nesse caso, ele não deveria estar no gif, mas você não consegue ver tudo.
bom artigo, mas, por algum motivo, acho que o nível não é para iniciantes, embora a instrução "o quê" e "como" seja muito detalhada, obrigado!
ZY: 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.
Na primeira janela "Class Library", escrevemos um código que inicia um formulário gráfico em poucas linhas, aproximadamente assim:
using System; using System.Threading; public class MainForm { static Form1 mainform; static Thread threadmainform; public static void Init() { if (mainform == null) { threadmainform = new Thread(NewForm); threadmainform.Start(); } } public static void DeInit(int reason) { if (reason == 3 || reason == 5) return; if (mainform!=null) {mainform.Close(); Thread.Sleep(1000);} if(threadmainform!=null) threadmainform.Join(); mainform=null; threadmainform=null; } private static void NewForm() { mainform = new Form1(); mainform.ShowDialog(); } }
Se você compilar essas dez linhas no VS2017, no MT5 já poderá criar um formulário gráfico (todos os elementos que serão adicionados ao formulário serão "clicáveis") e poderá excluí-lo(DeInit ()) , restando apenas estabelecer a troca de dados entre o formulário - que "gira" em um thread separado - e o próprio MT5
Com o MT4, tudo é muito mais triste, mas você ainda pode fazer com que uma dll escrita em .Net seja executada.
Obrigado pelo artigo! Tudo está bem explicado. Eu não li apenas sobre as entranhas do C#. Mas você realmente não precisa conhecê-lo para criar um formulário.
Considerações sobre o aplicativo
- A partir do aplicativo, é possível interromper a execução de uma única passagem, mesmo que não esteja no modo de visualização. Por exemplo, um aprendizado MO em loop está sendo executado no OnTester. Com o formulário, é conveniente interrompê-lo quando você achar necessário.
- Como se vê, é muito fácil escrever uma API de negociação completa para C#. Em seguida, escreva todos os Expert Advisors em C# e execute-os no Terminal/Tester. E, com base nessa API, você pode criar terminais alternativos com skins personalizados, por exemplo. Grandes oportunidades para aplicativos destinados a usuários comuns. Você pode coletar os desejos deles e implementá-los: gráficos de ticks, testadores, etc.
- É possível incorporar facilmente o painel em seu EA como um complemento à negociação manual no Visualizador. Isso permite que você emule situações estressantes para o consultor de algo (excluiu a ordem dele, colocou a sua própria, etc.). Mas o que é ainda mais agradável é que todas as ações manuais podem ser facilmente gravadas e reproduzidas sem o formulário e, consequentemente, sem pressionar botões. Isso permite que você depure o EA no modo de depuração para garantir a estabilidade da intervenção manual.
Como a interação funcionará se vários desses consultores de formulário forem executados?
Obrigado pelo exemplo do github. O mesmo princípio é possível com o MT5?
#include <Include.mqh> // Caminho do ShareProject
Quando o ME sincroniza automaticamente o arquivo mqh de acordo com o comentário no caminho?
O que você descreveu poderia ser um recurso muito interessante e interessante para o ME, mas é claro que não funciona dessa forma.
No entanto, a MQL4 e a MQL5 são diretamente compatíveis com o GitHub.
Há também utilitários, principalmente o Git Bash, que permitem que você faça tudo o que o VisualStudio tem e muito mais. Eles funcionam perfeitamente com projetos MQL. O que dizer se livros inteiros são escritos com a ajuda do github?
De fato, o desenvolvimento de projetos MQL no github tem sido apoiado há muito tempo e em alto nível.
O que você descreveu poderia ser um recurso muito interessante e interessante para o ME, mas é claro que não funciona dessa forma.
No entanto, a MQL4 e a MQL5 são diretamente compatíveis com o GitHub.
Há também utilitários, principalmente o Git Bash, que permitem que você faça tudo o que o VisualStudio tem e muito mais. Eles funcionam perfeitamente com projetos MQL. O que dizer se livros inteiros são escritos com a ajuda do github?
De fato, o desenvolvimento de projetos MQL no github tem sido apoiado há muito tempo e em alto nível.
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 é muito útil.
Não entendi como ele pode ajudar na MQL5 a partir dos links fornecidos. Provavelmente, ele é obrigatório 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, seria útil.
Obrigado pelo artigo! Tudo está bem explicado. Eu não li apenas sobre as entranhas do C#. Mas você realmente não precisa conhecê-lo para criar um formulário.
Reflexões sobre o aplicativo
- 1) A partir do aplicativo, é possível interromper a execução de uma única passagem, mesmo que não esteja no modo de visualização. Por exemplo, um aprendizado de MO em loop está sendo executado no OnTester. Com o formulário, é conveniente interrompê-lo quando você achar necessário.
- 2) É evidente que é muito fácil escrever uma API de negociação completa para C#. Em seguida, escreva todos os Expert Advisors em C# e execute-os no Terminal/Tester. E, com base nessa API, você pode criar terminais alternativos com skins personalizados, por exemplo. Grandes oportunidades para aplicativos destinados a usuários comuns. Você pode coletar os desejos deles e implementá-los: gráficos de ticks, testadores, etc.
- 3) É possível incorporar facilmente o painel em seu EA como um complemento à negociação manual no Visualizador. Isso permite que você emule situações estressantes para o consultor de algo (excluiu a ordem dele, colocou a sua própria, etc.). Mas o que é ainda mais agradável é que todas as ações manuais podem ser facilmente gravadas e reproduzidas sem o formulário e, consequentemente, sem pressionar botões. Isso permite que você depure o EA no modo de depuração para garantir a estabilidade da intervenção manual.
4) Como a interação funcionará se vários desses consultores de formulário forem executados?
1) Sim, com certeza. O chip de aplicativo externo permite que você faça todas essas coisas.
2) De fato, é possível escrevê-lo. Mas não é uma boa ideia colocar todo o ambiente de negociação em C#. É melhor escrever Expert Advisors em MQL puro, mas é possível equipá-los com os "enfeites" necessários em c#.
3) Sim, isso pode ser feito.
4) Ele pode ser configurado de diferentes maneiras. Ele é feito de modo 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.
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Você concorda com a política do site e com os termos de uso

Novo artigo Criando interfaces gráficas para EAs e indicadores baseados no .Net Framework e C# foi publicado:
Uma maneira simples e rápida de criar janelas gráficas usando o editor do Visual Studio, e integração no código MQL do EA. O artigo é destinado para um vasto público de leitores e não requer conhecimentos de C# e .Net.
O testador de estratégias no MetaTrader 5 possui vários recursos que devem ser considerados pelo desenvolvedor de interfaces gráficas na linguagem de programação MQL. A principal característica está no fato de que a função de processamento de eventos gráficos OnChartEvent não é chamada. Isso é lógico, porque o formulário gráfico pressupõe trabalhar com o usuário em tempo real. No entanto, há um tipo de painel que seria extremamente interessante de implementar no testador. Trata-se do chamado players de negociação, com o qual as pessoas podem testar suas estratégias de negociação no modo manual. Por exemplo, num modo acelerado o testador de estratégias gera os preços atuais de mercado, enquanto o usuário clica nos botões para comprar ou vender, simulando suas ações de negociação no histórico. O TradePanel criado por nós pertence a este tipo de painel. Apesar de sua simplicidade, pode ser um muito bom player de negociação simples com a funcionalidade mais necessária.
Mas pensemos em como o nosso painel funciona no testador de estratégias do MetaTrader 5. A janela gráfica do painel TradePanel existe na forma de um Net. de assembly independente. Portanto, não depende nem do ambiente atual do MetaTrader 5 e nem do próprio terminal. Estritamente falando, ele pode ser executado a partir de qualquer programa, enquanto a montagem localizada no contêiner exe pode ser iniciada, inclusive, pelo próprio usuário.
Assim, nosso programa não precisa chamar OnChartEvent. Além disso, podem-se atualizar dados na janela e receber novas ordens de usuários em qualquer função-manipulador de eventos que seja executada regularmente no testador de estratégias. OnTick e OnTimer pertencem a esse tipo de funções. É através deles que o nosso painel opera. Assim, ele também funciona bem no testador de estratégias, pois foi desenvolvido para trabalho em tempo real. Não é necessário fazer alterações. Verifiquemos essa afirmação executando nosso painel no testador e fazendo várias operações:
Autor: Vasiliy Sokolov