Discusión sobre el artículo "Cómo añadir rápidamente un panel de control a un indicador o asesor"
Gracias por el artículo. ¿Cómo puedo cambiar el color del fondo y del borde del propio panel? No lo he encontrado en las clases estándar.
Gracias por el artículo. ¿Cómo puedo cambiar el color del fondo y del borde del propio panel? No lo he encontrado en las clases estándar.
Redefine defines en Defines.mqh.
- En la próxima actualización se restaurará la biblioteca estándar y el archivo Defines.mqh se restaurará en consecuencia.
- No es bueno editar la biblioteca estándar.
- En la próxima actualización se restaurará la biblioteca estándar - en consecuencia se restaurará el archivo Defines.mqh.
- No es bueno editar la biblioteca estándar.
No sugerí editarlo. Tienes que anularlo después de habilitar este archivo, pero antes de crear el panel.
Por favor dime como hacerlo en un ejemplo sencillo, no se mucho de oop. He cambiado los colores de las definiciones en la propia librería - el color del panel no cambia
Después de cambiar el archivo, recompila el EA, debería funcionar. Y no se olvide de hacer una copia de seguridad para restaurar su variante después de la actualización.
Overriding se hace usando #undef y #define. Pero hay que ponerlos en el lugar correcto ;)
El overriding se hace con #undef y #define. Pero hay que ponerlos en el lugar correcto ;)
Después de cambiar el archivo, recompila el EA, debería funcionar. Y no se olvide de hacer una copia de seguridad para restaurar su variante después de la actualización.
Overriding se hace usando #undef y #define. Pero tienes que ponerlos en el lugar correcto ;)
Bueno, así es como lo hice, nada funciona. El panel sigue blanco como antes
El compilador escribe Macro redifinition, es decir, es un tipo de overriding....
//+------------------------------------------------------------------+ //|MyPanel.mqh //|Copyright © 2013, DeltaTrader || //| http://www.deltatrader.com.br //+------------------------------------------------------------------+ #property copyright "DeltaTrader © 2013" #property link "www.deltatrader.com.br" #property version "1.000" #property description "Test Panel" #property indicator_plots 0 //+------------------------------------------------------------------+ //| Incluye| //+------------------------------------------------------------------+ #include <Controls\Dialog.mqh> #include <Controls\Label.mqh> #include <Controls\Panel.mqh> #include <Controls\Edit.mqh> #include <Controls\Defines.mqh> #define CONTROLS_DIALOG_COLOR_BORDER_LIGHT C'0x00,0x00,0xFF' #define CONTROLS_DIALOG_COLOR_BORDER_DARK C'0x00,0x00,0xFF' #define CONTROLS_DIALOG_COLOR_BG C'0x00,0x00,0xFF' #define CONTROLS_DIALOG_COLOR_CAPTION_TEXT C'0x00,0x00,0xFF' #define CONTROLS_DIALOG_COLOR_CLIENT_BG C'0x00,0x00,0xFF' #define CONTROLS_DIALOG_COLOR_CLIENT_BORDER C'0x00,0x00,0xFF' //+------------------------------------------------------------------+ //| Parámetros globales| //+------------------------------------------------------------------+ int panelXX = 200; int panelYY = 200; int panelWidth = 600; int panelHeight = 400; CAppDialog m_panel; //--- Objetos de oferta CPanel m_bidcolor; CLabel m_bidlabel; //--- Pedir objetos CPanel m_askcolor; CLabel m_asklabel; CEdit m_edit; //+------------------------------------------------------------------+ //| On Init| //+------------------------------------------------------------------+ int OnInit() { //--- Creación de paneles m_panel.Create(0,"blablabla",0,panelXX,panelYY,panelWidth,panelHeight); //--- Etiqueta de oferta y colores m_bidcolor.Create(0,"Bid Background Color",0,1,1,panelWidth-30,30); m_bidcolor.ColorBackground(clrYellow); m_panel.Add(m_bidcolor); m_bidlabel.Create(0,"Bid Text",0,5,5,0,0); m_bidlabel.Text("Bid "+DoubleToString(SymbolInfoDouble(_Symbol,SYMBOL_BID),_Digits)); m_bidlabel.Color(clrBlue); m_panel.Add(m_bidlabel); //--- Pedir etiquetas y colores m_askcolor.Create(0,"Ask Background Color",0,1,1,panelWidth-30,30); m_askcolor.ColorBackground(clrAqua); m_panel.Add(m_askcolor); m_asklabel.Create(0,"Ask Text",0,5,30,0,0); m_asklabel.Text("Ask "+DoubleToString(SymbolInfoDouble(_Symbol,SYMBOL_ASK),_Digits)); m_asklabel.Color(clrRed); m_panel.Add(m_asklabel); m_edit.Create(0,"Bid Background Color",0,1,1,panelWidth-30,30); m_panel.Add(m_edit); //--- Ejecutar panel m_panel.Run(); return(0); } //+------------------------------------------------------------------+ //| On DeInit| //+------------------------------------------------------------------+ void OnDeinit(const int reason) { //--- Destruir panel m_panel.Destroy(reason); //--- Borrar todos los objetos ObjectsDeleteAll(0,0); } //+------------------------------------------------------------------+ //| En Calcular| //+------------------------------------------------------------------+ int OnCalculate(const int rates_total, const int prev_calculated, const int begin, const double &price[]) { //--- Una etiqueta de oferta muy simple m_bidlabel.Text("Bid "+DoubleToString(SymbolInfoDouble(_Symbol,SYMBOL_BID),_Digits)); //--- Una etiqueta ask muy simple m_asklabel.Text("Ask "+DoubleToString(SymbolInfoDouble(_Symbol,SYMBOL_ASK),_Digits)); //--- return(rates_total); } //+------------------------------------------------------------------+ //| En Evento Gráfico| //+------------------------------------------------------------------+ void OnChartEvent(const int id, const long &lparam, const double &dparam, const string &sparam) { //--- Mueve el panel con el ratón m_panel.ChartEvent(id,lparam,dparam,sparam); //--- } //+------------------------------------------------------------------+
- 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 Cómo añadir rápidamente un panel de control a un indicador o asesor:
¿Quiere añadir a su indicador o asesor un panel gráfico de control rápido y cómodo, pero no sabe como hacerlo? En este artículo le enseñaré paso a paso cómo "atornillar" un panel de diálogo con parámetros de entrada a su programa MQL4/MQL5.
Su programa - indicador o asesor - MQL4/MQL5 puede ser uno de los mejores y ejecutar eficazmente todas las tareas que se le encarguen. Pero siempre hay forma de mejorarlo un poco. Normalmente, en el 99% de los casos, para realizar cualquier cambio en los parámetros de entrada de un programa, el usuario tiene que entrar en sus ajustes. ¿Quiere arreglárselas sin hacer esto?
Es posible hacerlo creando su propio panel de control basado en las clases de la Biblioteca estándar. Esto le permitirá cambiar los ajustes sin reiniciar el programa. Además, este enfoque revitalizará el programa, distinguiéndolo de otros de forma positiva. Podrá ver ejemplos de paneles gráficos en el Mercado.
En este artículo le enseñaré a añadir sin ayuda de nadie un sencillo panel a un programa MQL4/MQL5. Usted ya sabe cómo enseñar a un programa a leer los parámetros de entrada y a reaccionar a los cambios de sus valores.
2.2. Panel
Aspecto del panel "PanelDialog2.mqh" después de introducir los cambios definitivos:
Fig. 4. Panel número dos
¿Qué obtenemos tras unir el asesor "MACD Sample.mq5" y el panel "PanelDialog2.mqh"? En el marco temporal actual, en el que funcionará el asesor, se pueden cambiar de forma operativa los parámetros del asesor ("Lots", "Trailing Stop Level (in pips)" y otros), así como los parámetros de notificación sobre los eventos comerciales del asesor ("Mail", "Push", "Alert").
Los parámetros modificados del asesor ("Lots", "Trailing Stop Level (in pips)" y otros) se aplican después de pulsar el botón "Aplicar cambios".". El cambio de los parámetros de notificación sobre los eventos comerciales del asesor ("Mail", "Push", "Alert") se aplica de forma automática, no es necesario pulsar el botón "Aplicar cambios".
Autor: Karputov Vladimir