Discusión sobre el artículo "Creación de una interfaz gráfica de usuario interactiva en MQL5 (Parte 1): Creación del panel"
Grandes tutoriales...Buen trabajo
@Isaac Amo Agradezco los comentarios y el reconocimiento. Me siento halagado. Thank you.
Echa un vistazo al nuevo artículo: Creando una Interfaz Gráfica de Usuario Interactiva en MQL5 (Parte 1): Creación del Panel.
Autor: Allan Munene Mutiiria
Wow muy amable por compartir este articulo. Afortunado hallazgo
Gracias @Malcolm Campbell por la amable reseña y los comentarios.
Nuevo artículo Creando GUIs Interactivos en MQL5 (Parte 1): Creando Paneles ha sido publicado:
¿Es posible hacer que este panel se mueva libremente? ¿Es posible hacer que este panel se mueva libremente?
Como principiante en MQL5, me ha gustado mucho el artículo. Gracias por el artículo. Pero pensé que la función de desinicialización se puede reducir significativamente si ObjectDelete se ejecuta en un bucle a través de todos los nombres creados y guardados de objetos gráficos. Para ello, es necesario añadir un array de cadenas, un contador de objetos gráficos y operadores para pasar nombres al array en las funciones de creación e inicialización de parámetros de objetos gráficos. Yo lo he hecho así:
#define ADDOBJ ArrayResize(objectsArray, objectCount+1);\ objectsArray[objectCount] = objName;\ objectCount++; string objectsArray[]; int objectCount = 0;
//+------------------------------------------------------------------+ //| Función de desinicialización experta| //+------------------------------------------------------------------+ void OnDeinit(const int reason) { // Borrar los objetos gráficos creados for(int i = 0; i < objectCount; i++) { if(ObjectFind(0, objectsArray[i]) >= 0) { ObjectDelete(0, objectsArray[i]); // Print("Objeto eliminado: ", objectsArray[i]); } } }
También he añadido:
input int base_x = 300; // Sangría izquierda input int base_y = 100; // Sangría superior input bool Include_DropDown = false; // Mostrar desplegable //+------------------------------------------------------------------+ //| 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); }
Y he cambiado un poco las funciones de creación de objetos gráficos:
//+------------------------------------------------------------------+ //| Función para crear etiqueta 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); // Añadir base_x + ObjectSetInteger(0, objName, OBJPROP_YDISTANCE, base_y + yD); // Añadir 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); }
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Usted acepta la política del sitio web y las condiciones de uso
Artículo publicado Creación de una interfaz gráfica de usuario interactiva en MQL5 (Parte 1): Creación del panel:
Este artículo explora los pasos fundamentales en la elaboración e implementación de un panel de Interfaz Gráfica de Usuario (GUI) utilizando MetaQuotes Language 5 (MQL5). Los paneles de utilidades personalizados mejoran la interacción del usuario en la negociación simplificando las tareas habituales y visualizando la información esencial de la negociación. Al crear paneles personalizados, los operadores pueden agilizar su flujo de trabajo y ahorrar tiempo durante las operaciones.
Vamos a crear un panel GUI que incluya las herramientas de utilidad más comunes que cualquier operador puede necesitar, y por lo tanto queremos resumir y cubrir todo en esta serie. Por tanto, el número de elementos que deben tratarse es amplio, pero los agruparemos para facilitar su comprensión. Utilizaremos 4 elementos para el desarrollo de nuestra GUI y es a través de esto que la crearemos. El panel incluirá la creación de botones de negociación, rectángulos afilados, actualizaciones en directo, el uso de emojis, distintos estilos de fuente, etiquetas, partes móviles del panel y efectos hover. Para ilustrar todo esto, hemos utilizado un ejemplo a continuación.
Autor: Allan Munene Mutiiria