Discussão do artigo "Criando interfaces gráficas para EAs e indicadores baseados no .Net Framework e C#" - página 14
Você está perdendo oportunidades de negociação:
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Registro
Login
Você concorda com a política do site e com os termos de uso
Se você não tem uma conta, por favor registre-se
Um exemplo é fornecido no anúncio https://www.metatrader5.com/ru/releasenotes/terminal/1898.
MQL5
Para trabalhar com as funções da biblioteca .NET, basta importar a própria DLL sem especificar funções específicas. O MetaEditor importa automaticamente todas as funções com as quais é possível trabalhar:
.
.
Para chamar funções da biblioteca, basta importá-las:
. O código C# da função Inc da classe TestClass tem a seguinte aparência:
. O script retornará o valor 42.
O trabalho de suporte às bibliotecas .NET está em andamento, e futuras versões estão planejadas para expandir seu uso.
As funções WinAPI são agrupadas em arquivos separados por finalidade:
.
A associação funciona somente com arquitetura de 64 bits.
Na comunidadedo Visual Studio 2019, tudo funciona como o autor fez, mas quando ele escreve:
"Cada formulário tem uma lista pública de elementos que ele contém. Percorrendo a lista de elementos, o método encontra aqueles que o controlador é capaz de suportar e assina os eventos de que precisa. Se um elemento do formulário não for compatível com o controlador, ele será simplesmente ignorado. "
Infelizmente, se você colocar um SplitContainer ou DataGridView no formulário de teste, o formulário não iniciará, não está claro por que, mas um componente tão complexo como o Chart STARTED.
Incluo um exemplo de teste de quais componentes podem ser usados para modificação (embora o formulário seja iniciado!).
ao tentar criar um controlador GuiController controller = new GuiController(assembly, form, m_global_events);
dá Unexpected exception: The key with this name already exists (for DataGridView) e o controlador NÃO é criado (o formulário é criado, provavelmente pode ser exibido, mas sem o controlador como controlá-lo?)
Mais uma vez, tudo está OK se não houver componentes SplitContainer e/ou DataGridView.
talvez outra pessoa tropece
este é o local no artigo
"Como você pode ver, o compilador entende as enumerações externas definidas nas bibliotecas de rede e sabe como trabalhar com elas."
Não sei por qual motivo, mas o compilador se recusa obstinadamente a entender as enumerações do C#, então arrastamos a enumeração do C# para o Mql5 e tudo funciona.
Só que, Vasily, você colocou os botões Comprar e Vender no painel de negociação ao contrário))
Mas, em geral, o resultado foi muito legal. Obrigado por seu trabalho árduo!)
Eu tive o mesmo problema.
Resolvi o problema de forma um pouco diferente: em vez de ClickOnElement, escrevi GuiEventType::ClickOnElement. Depois disso, ele compila e funciona sem problemas. Mas, se esse for o caso, não está claro como funcionou para o Vasily. Talvez eu tenha feito algo errado...
Mas, fora isso, a coisa é realmente necessária e útil. É uma pena que a MQL5 não tenha algo semelhante (embutido).
Eu tive o mesmo problema.
Resolvi o problema de forma um pouco diferente: em vez de ClickOnElement, escrevi GuiEventType::ClickOnElement. E depois disso ele compila e funciona sem problemas. Mas, se esse for o caso, não está claro como funcionou para o Vasily. Talvez eu tenha feito algo errado...
Mas, fora isso, a coisa é realmente necessária e útil. É uma pena que a MQL5 não tenha algo semelhante (embutido).
Eu tive um erro desse tipo:
@MQL_User, fiz como você fez: " ...instead of ClickOnElement wrote GuiEventType::ClickOnElement" - tudo funcionou!
Isso não funciona no MT4. Tentei sem nenhum resultado.
Sou relativamente novo em MQL5 e aprendi muito com este artigo! Muito obrigado!
Tenho uma pergunta. Nos últimos dois dias, tenho me esforçado um pouco para entender isso.
Concluí cada etapa com êxito algumas vezes, mesmo em outro computador, mas sempre que tento compilar o código, recebo uma mensagem de erro.
O compilador MQL afirma : "Undeclared Identifier" (Identificador não declarado) para qualquer uma das enumerações abaixo.
Se eu "comentar" essas enumerações no MQL5, ele funcionará de acordo, o que é interessante, pois isso significa que o código funciona, mas não consegue ler as enumerações, o que eu acho?
Se alguém puder me ajudar, ficarei muito grato :)
Obrigado,
Li que você precisa declarar os enums também no arquivo MQH da mesma forma exata que foram declarados na DLL.
string ReceiveEvent(int event_n); // Returns JSON string.. Use JAson.mqh to Deserialize objectsComo faço para usar isso dentro de OnTimer()?
Estou usando a mesma abordagem explicada no artigo
Minha pergunta é: qual int preciso passar dentro da função ReceiveEvent?Desculpe minha ignorância, mas não entendi.
Você pode me dizer o que há de errado com o programa GuiMtController.mq5 que relata um erro ao ser executado?