Discussão do artigo "Criando uma Interface Gráfica de Usuário Interativa no MQL5 (Parte 1): Criando o Painel"
Ótimos tutoriais... Bom trabalho
@Isaac Amo Agradeço o feedback e o reconhecimento. Estou lisonjeado. Muito obrigado.
Confira o novo artigo: Criando uma interface gráfica de usuário interativa em MQL5 (Parte 1): Criando o painel.
Autor: Allan Munene Mutiiria
Uau, muito legal da sua parte compartilhar esse artigo. Sorte de encontrar
Obrigado , @Malcolm Campbell, pela gentil avaliação e pelo feedback.
É possível fazer com que este painel se mova livremente? É possível fazer com que este painel se mova livremente?
Como iniciante em MQL5, gostei muito do artigo. Obrigado pelo artigo. Mas achei que a função de desinicialização pode ser significativamente reduzida se ObjectDelete for executado em um loop por todos os nomes criados e salvos de objetos gráficos. Para fazer isso, você precisa adicionar uma matriz de cadeias de caracteres, um contador de objetos gráficos e operadores para passar nomes para a matriz nas funções de criação e inicialização de parâmetros de objetos gráficos. Eu fiz isso dessa forma:
#define ADDOBJ ArrayResize(objectsArray, objectCount+1);\ objectsArray[objectCount] = objName;\ objectCount++; string objectsArray[]; int objectCount = 0;
//+------------------------------------------------------------------+ //| Função de desinicialização de especialista| //+------------------------------------------------------------------+ void OnDeinit(const int reason) { // Excluir objetos gráficos criados for(int i = 0; i < objectCount; i++) { if(ObjectFind(0, objectsArray[i]) >= 0) { ObjectDelete(0, objectsArray[i]); // Imprimir("Objeto excluído: ", objectsArray[i]); } } }
Também adicionei:
input int base_x = 300; // Recuo à esquerda input int base_y = 100; // Recuo superior input bool Include_DropDown = false; // Mostrar menu suspenso //+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ int OnInit() { CreatPanel(); return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Function to create Panel | //+------------------------------------------------------------------+ void CreatPanel() { createRecLabel("MAIN_REC",10,30,250,400,clrWhite,1,clrBlack); createRecLabel("MAIN_SUB_REC",15,35,240,390,C'245,245,245',1,clrNONE); createRecLabel("MAIN_LINE_UP",15,35,240,1,C'245,245,245',1,clrNONE,BORDER_RAISED); ... if(Include_DropDown) { createDropDown(); } ChartRedraw(0); }
E mudei um pouco as funções de criação de objetos gráficos:
//+------------------------------------------------------------------+ //| Função para criar rótulo de texto| //+------------------------------------------------------------------+ bool createLabel(string objName, int xD, int yD, string txt, color clrTxt = clrBlack, int fontSize = 12, string font = "Arial Rounded MT Bold") { ResetLastError(); if(!ObjectCreate(0, objName, OBJ_LABEL, 0, 0, 0)) { Print(__FUNCTION__, ": failed to create the label! Error code = ", _LastError); return (false); } ObjectSetInteger(0, objName, OBJPROP_XDISTANCE, base_x + xD); // Adicionar base_x + ObjectSetInteger(0, objName, OBJPROP_YDISTANCE, base_y + yD); // Adicionar base_y + ObjectSetInteger(0, objName, OBJPROP_CORNER, CORNER_LEFT_UPPER); ObjectSetString(0, objName, OBJPROP_TEXT, txt); ObjectSetInteger(0, objName, OBJPROP_COLOR, clrTxt); ObjectSetInteger(0, objName, OBJPROP_FONTSIZE, fontSize); ObjectSetString(0, objName, OBJPROP_FONT, font); ObjectSetInteger(0, objName, OBJPROP_BACK, false); ObjectSetInteger(0, objName, OBJPROP_STATE, false); ObjectSetInteger(0, objName, OBJPROP_SELECTABLE, false); ObjectSetInteger(0, objName, OBJPROP_SELECTED, false); ADDOBJ return (true); }
- 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 uma Interface Gráfica de Usuário Interativa no MQL5 (Parte 1): Criando o Painel foi publicado:
Este artigo explora os passos fundamentais para criar e implementar um painel de Interface Gráfica de Usuário (GUI) utilizando a Linguagem MetaQuotes 5 (MQL5). Painéis utilitários personalizados melhoram a interação do usuário no trading, simplificando tarefas comuns e visualizando informações essenciais de trading. Ao criar painéis personalizados, os traders podem otimizar seu fluxo de trabalho e economizar tempo durante as operações de trading.
Vamos criar um painel GUI que inclua as ferramentas utilitárias mais comuns que qualquer trader possa precisar, e, assim, queremos delinear e cobrir tudo nesta série. Portanto, o número de elementos a serem abordados é extenso, mas os organizaremos para facilitar a compreensão. Usaremos 4 elementos para o nosso desenvolvimento GUI e, por meio disso, iremos criá-lo. O painel contará com a criação de botões de trading, retângulos nítidos, atualizações ao vivo, uso de emojis, diferentes estilos de fonte, rótulos, partes móveis do painel e efeitos de destaque (hover). Para ilustrar tudo isso, usamos um exemplo abaixo.
Autor: Allan Munene Mutiiria