Preguntas de los principiantes MQL5 MT5 MetaTrader 5 - página 330

 
ramis866:
¿Puede alguien decirme cómo utilizar los EA?
Véase la Ayuda: configuración y funcionamiento de los EA.
 
¡Chicos! Cuando se cambia el marco temporal, el EA se reinicia. Como resultado, devuelve todos sus gráficos dibujados a la vista por defecto. ¿Cómo puedo evitar que se reinicie cuando cambie el plazo?
 
net:
¡Chicos! Cuando cambiamos el marco temporal, el EA se reinicia. Como resultado, devuelve todo el gráfico dibujado a su apariencia por defecto. ¿Cómo puedo desactivar el reinicio cuando cambio el plazo?

¿Sería mejor corregir un matiz en el Asesor Experto, para que el gráfico dibujado por él se muestre correctamente tras el cambio de la TF?

 
net:
¡Chicos! Cuando se cambia de marco temporal, el Asesor Experto se reinicia. Como resultado, devuelve todo su gráfico dibujado a la vista por defecto. ¿Cómo puedo desactivar el reinicio cuando cambio el plazo?

No se puede prohibir. ¿Y es necesario guardar el gráfico? Al fin y al cabo, para cada marco temporal del gráfico, todas las construcciones pueden variar drásticamente.Tomemos como ejemplo el indicador MACD en diferentes marcos temporales del gráfico.Y si el trazado del gráfico es necesario, hay que cambiar la lógica del Asesor Experto.

El Asesor Experto y el indicador deben reiniciarse después del cambio del período del gráfico - esta es la lógica de la función OnInit() - manejador del evento Init:

Init

Inmediatamente después de que el terminal cliente cargue un programa (Asesor Experto o indicador personalizado) y comience la inicialización de las variables globales, se enviará un evento Init, que es manejado por la función OnInit(), si es que tiene una. Este evento también se genera después de un cambio de valor y/o de período del gráfico, después de recompilar el programa en el MetaEditor, después de un cambio de parámetros de entrada de un Asesor Experto o de una ventana de configuración de indicadores personalizados. El Asesor Experto también se inicializa después de cambiar la cuenta. El evento Init no se genera para los scripts.

 
barabashkakvn:

No se puede prohibir. ¿Y es necesario guardar el gráfico? Al fin y al cabo, para cada marco temporal del gráfico, todas las construcciones pueden variar drásticamente.Tomemos como ejemplo el indicador MACD en diferentes marcos temporales del gráfico.Y si el trazado del gráfico es necesario, hay que cambiar la lógica del Asesor Experto.

El Asesor Experto y el indicador deben reiniciarse después del cambio del período del gráfico - esta es la lógica de la función OnInit () - manejador del evento Init:

No estoy del todo de acuerdo. Por supuesto, es necesario reiniciar, pero es necesario para el ahorro de recursos, especialmente para los indicadores/asesores multitemporales con un gran número de objetos gráficos - se puede omitir algunas partes de la inicialización, en particular, el recálculo de los ya construidos. Es decir, si por lógica (que personalmente creo que es correcta) después de la desinicialización se borran las construcciones gráficas, entonces se debería procesar la razón del cambio de TF (sin borrar las construcciones). Si lo desea, es mejor ajustar la visibilidad de los objetos por TF sin reconstruir los propios objetos.
 
Tapochun:
No estoy del todo de acuerdo. Por supuesto, es necesario reiniciar, pero en aras del ahorro de recursos, sólo para los indicadores/asesores multitemporales con un gran número de objetos gráficos - se pueden omitir algunas partes de la inicialización, en particular, el recálculo de los ya construidos. Es decir, si por lógica (que personalmente creo que es correcta) después de la desinicialización se borran las construcciones gráficas, entonces se debería procesar la razón del cambio de TF (sin borrar las construcciones). Si lo desea, es mejor ajustar la visibilidad de los objetos por TF sin reconstruir los objetos mismos.
Todo está en manos del programador.
 

Me pueden decir como encontrar el valor mínimo de la variable con tipo double de los buffers de iCustom, son 8.

Creo que se soluciona con el array, pero cómo escribirlo no lo sé.

Ayuda, por favor.

 

Hola a todos, tanto a los gorrones como a los profesionales, no tengo tiempo para releer todas las memorias del foro, tranquilamente por el principio del parkour aprendemos MQ.............

Vobsobschestvya problema actual: He descargado el panel del ejemplo, adaptado en mi EA, ahora la tarea es activar y desactivar este panel en la configuración

así que en el código

Escribo en variables :

input bool vkl =false;//borrar panel

Me explico mejor

si //

//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//--- Вывести в журнал причину деинициализации
   Print(GetDeinitReasonText(reason));
//--- При удалении с графика
   if(reason==REASON_REMOVE)
      //--- Удалить все объекты с графика, которые относятся к информационной панели   
      DeleteInfoPanel();
      
     
  }

BorrarPanelInfo();

si (vkl=false);

----------------

entonces un error o algo más que no me entiende))

Si sabes cómo hacerlo correctamente con un ejemplo, o muéstrame dónde encontrar un archivo con un ejemplo

Archivos adjuntos:
 
alhoya:

Me pueden decir como encontrar el valor mínimo de la variable con tipo double de los buffers de iCustom, son 8.

Creo que se soluciona con el array, pero cómo escribirlo no lo sé.

Ayuda, por favor.

Después de obtener una manija del indicador personalizado usando iCustom, usted copia el valor del buffer analizado del indicador personalizado a su buffer usando CopyBuffer en OnCalculate(). Queda encontrar el valor mínimo en su buffer usando ArrayMinimum.
 
aleks557:

...

Para borrar algo, primero hay que crearlo.

void DeleteInfoPanel()
  {
   DeleteObjectByName("InfoPanelBackground");   // Удалить фон панели
   DeleteObjectByName("InfoPanelHeader");       // Удалить заголовок панели
//--- Удалить свойства позиции и их значения

Y una cosa más: cuando cambie las propiedades del EA (en los parámetros de entrada ha puesto la condición true - quiere eliminar el EA), esta condición no le permitirá eliminar el panel:

void OnDeinit(const int reason)
  {
//--- Вывести в журнал причину деинициализации
   Print(GetDeinitReasonText(reason));
//--- При удалении с графика
   if(reason==REASON_REMOVE)
      //--- Удалить все объекты с графика, которые относятся к информационной панели   
      DeleteInfoPanel();

  }

Esta condición sólo funcionará si elimina el Asesor Experto del gráfico.