Discusión sobre el artículo "Cómo crear un panel gráfico de cualquier nivel de complejidad" - página 6

 
MetaQuotes:

Se ha publicado el nuevo artículo Cómo crear un panel gráfico de cualquier nivel de complejidad:

Autor: Vladimir Karputov

Muchas gracias por compartir. Excelente.

Me perdí sólo una cosa en su ejemplo. Usted debe ayudar a cómo incluir la información de datos como texto y números.

Por ejemplo:

Stop Loss Valor: 50.50

Valor Take Profit: 250.00

Media móvil (200): 110.5.


¿Conoces algún artículo que enseñe a hacer este tipo de cosas?

 
Guilherme Mendonca :

Muchas gracias por compartir. ¡Excelente!

Me perdí sólo una cosa en su ejemplo. Usted debe ayudar a cómo incluir la información de datos como texto y números.

Por ejemplo:

Valor Stop Loss:50.50

Valor Take Profit: 250.00

Media móvil (200): 110.5.


¿Conoces algún artículo que enseñe a hacer este tipo de cosas?

Echa un vistazo a los ejemplos de paneles estándar en el MetaEditor.

 

Puede ayudarme con esta pregunta.

He añadido la función de desplazamiento del panel setShift() a su archivo "AppWindowTwoButtonsClass". Ahora si movemos el borde del gráfico hacia la derecha y se acerca al panel, el panel empezará a moverse hacia la izquierda junto con el borde del gráfico.

void OnChartEvent(const int id,         // ID del evento 
                  const long& lparam,   // parámetro de evento de tipo long
                  const double& dparam, // parámetro de evento de tipo double
                  const string& sparam) // parámetro de evento de tipo cadena
  {
   ExtDialog.ChartEvent(id,lparam,dparam,sparam);
   if(id == CHARTEVENT_CHART_CHANGE) ExtDialog.setShift();
  }

La llamada a esta función está resaltada en amarillo.

La pregunta es: ¿hay alguna forma de llamar a esta función a través de este pseudocódigo?

EVENT_MAP_BEGIN(cGPanel)            

EVENT_MAP_END(CAppDialog)

para que la llamada se haga desde la clase heredera y no desde la función global OnChartEvent().

He probado varias definiciones: ON_NO_ID_EVENT(event,handler), ON_OTHER_EVENTS(handler). Pero no entiendo cómo funcionan.

Adjunto un archivo con la función adicional setShift().

Документация по MQL5: Основы языка / Функции / Функции обработки событий
Документация по MQL5: Основы языка / Функции / Функции обработки событий
  • www.mql5.com
В языке MQL5 предусмотрена обработка некоторых предопределенных событий. Функции для обработки этих событий должны быть определены в программе MQL5: имя функции, тип возвращаемого значения, состав параметров (если они есть) и их типы должны строго соответствовать описанию функции-обработчика события. Именно по типу возвращаемого значения и по...
Archivos adjuntos:
 
Muy útil, gracias por publicarlo.
Una pregunta rápida,

¿Cómo es que usas lo siguiente;
//--- crear diálogo de aplicación
   if(!AppWindow.Create(0,"AppWindow",0,20,20,360,324))
      return(INIT_FAILED);
//--- ejecutar aplicación
   AppWindow.Run();
//--- tener éxito
   return(INIT_SUCCEEDED);
  }
En lugar de;
//--- crear diálogo de aplicación
   AppWindow.Create(0,"AppWindow",0,20,20,360,324));
//--- ejecutar aplicación
   AppWindow.Run();
/
  }
Que utilicé en una GUI mql4.

¿Es esto una necesidad mql5 o tiene otros beneficios?

Gracias
 
emargrie :
Muy útil, gracias por publicarlo.
Una pregunta rápida,

¿Cómo es que usas lo siguiente;
En lugar de;
Que he utilizado en una GUI mql4.

¿Es esto una necesidad mql5 o tiene otros beneficios?

Gracias

Si TÚ realmente no ves la diferencia, necesitas urgentemente deshacerte del viejo terminal. El viejo terminal te afecta mucho. Desafortunadamente, el viejo terminal te enseñó a escribir código muy peligroso - estás acostumbrado a escribir código SIN COMPROBACIÓN para devolver errores.

 
Vladimir Karputov:

Si TÚ realmente no ves la diferencia, necesitas urgentemente deshacerte del viejo terminal. El viejo terminal te afecta mal. Desafortunadamente, el viejo terminal te enseñó a escribir código muy peligroso - estás acostumbrado a escribir código SIN COMPROBACIÓN para devolver errores.

No era una indirecta a tu post ni mucho menos, era más una pregunta de por qué se hace esto para que aprenda por ello - mis conocimientos de programación son muy limitados.

 
emargrie :

No era una indirecta a su puesto de ninguna manera, era más de una pregunta en cuanto a por qué se hace esto así que aprendo para él - mi conocimiento de programación es muy limitado.

Ya he explicado: no se puede escribir código que no comprueba los retornos de error.

 
Vladimir Karputov:

Ya lo he explicado: no se puede escribir código que no compruebe los retornos de error.

Gracias
 

Hola Vladimir

este es un artículo bien escrito, buen trabajo

saludos Paul

 
Paul Anscombe:

Hola Vladimir

este es un artículo bien escrito, buen trabajo

saludos Paul

Gracias