Discussão do artigo "Criando interfaces gráficas baseadas no .Net Framework e C# (Parte 2): elementos gráficos adicionais"
Tudo está bem, o artigo, a GUI e as infinitas possibilidades do C#, mas por que não há tabelas, Vasily? Há alguma dificuldade com elas?
O volume de material é muito grande, e as tabelas em C# são um elemento muito complicado. É como um salto triplo. Você precisa acelerar implementando elementos básicos e depois tentar uma tabela complexa.
A quantidade de material é muito grande, e as tabelas em C# são um elemento muito complexo. É como um salto triplo. Você precisa acelerar implementando os elementos básicos e, em seguida, dar uma tacada em uma tabela complexa.
System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.IO.FileNotFoundException: Не удается найти указанный файл. (Exception from HRESULT: 0x80070002)
at System.Reflection.RuntimeAssembly.nLoadFile(String path, Evidence evidence)
at System.Reflection.Assembly.LoadFile(String path)
at MtGuiController.GuiController.GetGuiController(String assembly_path, String form_name)
at MtGuiController.GuiController.ShowForm(String assembly_path, String form_name)
--- End of inner exception stack trace ---
at System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor)
at System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(Object obj, Object[] parameters, Object[] arguments)
at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
at Wrapper.Wrapper.Call(MethodInfo method, Int64 owner, Int64 parameters, Int64 result)
.Net runtime errorErro ao iniciar o Expert Advisor a partir do artigo.
Erro ao executar o Expert Advisor do artigo.
Os caminhos para o arquivo do programa são absolutos, portanto, você precisa alterá-los para os caminhos reais. Não é possível criar catálogos universais como no MT.
Os caminhos para o arquivo do programa são absolutos, portanto, você precisa alterá-los para caminhos reais. Não é possível criar catálogos universais como no MT.
string assembly = "c:\\Users\\Bazil\\source\\repos\\DemoForm\\DemoForm\\bin\\Debug\\DemoForm.exe";
Não encontrei esse arquivo em lugar algum. Ainda não é possível compilá-lo a partir dos códigos-fonte C# fornecidos.
Não encontrei esse arquivo em lugar algum. Ainda não consigo compilá-lo com os códigos-fonte C# fornecidos.
Estranho, acho que me esqueci de anexá-lo ao arquivo. Vou publicá-lo em algumas horas.
Anexado no arquivo
Obrigado, funcionou.
// Coloquei o DemoForm.exe nas bibliotecas string assembly = TerminalInfoString(TERMINAL_PATH) + "\\MQL5\\Libraries\\DemoForm.exe";
Encontrei um erro muito grave ao trabalhar com janelas C#. Se você mover a janela C# continuamente, o Terminal desaparecerá da tela após alguns segundos, e a carga do núcleo da CPU do terminal64.exe excederá 100%. Tenho 8 núcleos, portanto a carga total do núcleo no TaskManager na CPU é de 12-13%. Quando a janela C# está se movendo, ela é de 19%.
Tenho uma placa de vídeo embutida na CPU, sem placa de vídeo. Achei que o problema estava na tela. Foi por isso que executei esse teste de conselheiro
int handle = INVALID_HANDLE; void OnInit() { if (EventSetTimer(1)) handle = FileOpen(__FILE__, FILE_WRITE | FILE_TXT); } void OnDeinit( const int ) { if (handle != INVALID_HANDLE) FileClose(handle); } void OnTimer() { if (handle != INVALID_HANDLE) FileWriteString(handle, (string)TimeCurrent() + "\n"); }
Ele grava a hora do Market Watch a cada segundo. Isso é o que ele registrou quando moveu a janela C#.
2019.06.11 16:22:09 2019.06.11 16:22:11 2019.06.11 16:22:11 2019.06.11 16:22:19 2019.06.11 16:22:23 2019.06.11 16:22:24 2019.06.11 16:22:26 2019.06.11 16:22:28 2019.06.11 16:22:31 2019.06.11 16:22:33 2019.06.11 16:22:34 2019.06.11 16:22:36 2019.06.11 16:22:37 2019.06.11 16:22:45 2019.06.11 16:22:45 2019.06.11 16:22:48 2019.06.11 16:22:51 2019.06.11 16:23:07 2019.06.11 16:23:08 2019.06.11 16:23:10
Você pode ver claramente que o OnTimer não foi executado por vários segundos. Ou seja, mover a janela C# faz com que a execução dos Expert Advisors no Terminal seja interrompida.
Esse problema não se refere apenas à janela C# deste artigo.
A remoção manual do GuiControllerElementsDemo pelo menu Terminal causa alguns segundos de congelamento.
- 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 baseadas no .Net Framework e C# (Parte 2): elementos gráficos adicionais foi publicado:
O artigo é uma continuação lógica da publicação anterior "Criando interfaces gráficas para EAs e indicadores baseados no .Net Framework e C#" e introduz os leitores a novos elementos gráficos para criar interfaces gráficas.
Começando com a segunda versão, o controlador suporta caixas de diálogo ou MessageBox. Este é um elemento de informações do usuário padrão. Com ele, também é possível oferecer ao usuário várias opções de ação e obter uma resposta na forma de opção escolhida por ele.
Para iniciar a exibição de caixas de diálogo, selecione a opção 'Buttons and MessageBox' no parâmetro "Windows Form Element Type" ao iniciar o EA. Depois de iniciar o EA, aparecerá um formulário solicitando escolher uma das seguintes opções:
Fig. 3. Formulário de demonstração chamando caixas de mensagem.
Este formulário, assim como todos os subsequentes, é de demonstração, portanto, não possui lógica de negociação. No entanto, depois de pressionar qualquer um dos botões, o EA enviará uma mensagem de aviso solicitando confirmação das ações selecionadas. Por exemplo, ao pressionar o botão SELL, é exibida a seguinte caixa de mensagem:
Fig. 4. O EA solicita a confirmação da abertura de uma nova posição curta.
Autor: Vasiliy Sokolov