Errores, fallos, preguntas - página 2971

 

¿Es este el comportamiento correcto para las variables estáticas?

Cuando se cambia de plazo o se modifican los parámetros, su valor no cambia:

int OnInit()
  {
   static int my_int=4444;
   Print(my_int);
   my_int=9999;
   return(INIT_SUCCEEDED);
  }

El resultado después de iniciar el EA y cambiar el marco temporal:

2021.02.24 16:23:27.999 Test1 (EURUSD,M1)       4444
2021.02.24 16:23:29.913 Test1 (EURUSD,M5)       9999
Variables estáticas

Esto es de la ayuda:

Las variables estáticas existen en el momento de la ejecución del programa y se inicializan una vez antes de llamar a la función especializada OnInit().

Así que una vez antes de cada llamada a OnInit() o una vez antes del inicio, aunque la reinicialización es más bien una segunda ejecución.

¿Sucede lo mismo en el probador?

Las variables globales también se comportan así.

 

Al cambiar de marco temporal, el Asesor Experto no se reinicia, sigue funcionando

https://www.mql5.com/ru/docs/runtime/running

При смене символа или таймфрейма графика, к которому эксперт прикреплен, выгрузка и загрузка эксперта не производится. При этом последовательно вызываются обработчики OnDeinit() на старом символе/таймфрейме и OnInit() на новом символе/таймфрейме (если они есть), значения глобальных переменных и статических переменных не сбрасываются. Все события, поступившие для эксперта до завершения инициализации (функции OnInit()), пропускаются.


Документация по MQL5: Программы MQL5 / Выполнение программ
Документация по MQL5: Программы MQL5 / Выполнение программ
  • www.mql5.com
Выполнение программ - Программы MQL5 - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Ilyas:

Al cambiar de marco temporal, el Asesor Experto no se reinicia, sigue funcionando

https://www.mql5.com/ru/docs/runtime/running

He notado una peculiaridad que no estaba presente en MetaTrader antes. Cuando elimino un Asesor Experto de un gráfico (utilizando su comando del menú contextual), el gráfico se cierra después. Anteriormente, el gráfico no se cerraba después de eliminar un Asesor Experto.

 
Mihail Matkovskij:

Me di cuenta de una peculiaridad que no estaba presente en MetaTrader antes. Cuando elimino un Asesor Experto de un gráfico (utilizando su comando del menú contextual), el gráfico se cierra después. Anteriormente, el gráfico no se cerraba después de eliminar un Asesor Experto.

Se puede programar en el propio EA, comprobar con otro EA...

 

en win7 cuando se depura en datos históricos las variables añadidas a la observación no muestran sus valores. cuando se depura en datos reales todo funciona.he especificado parámetros para la depuración en la configuración del meta-editor.

resulta que cuando se añaden variables, éstas no se muestran en la ventana inmediatamente, sino que aparecen sólo cuando se inicia la depuración la próxima vez, pero sus valores ya están <no implementados>. por favor, dígame lo que hay que configurar para que la depuración funcione

 
Vladimir Pastushak:

Puede estar programado en el propio EA, comprueba con otro EA...

De hecho, lanzó el EA estándar en el gráfico. Lo he borrado sin problemas. Intenté encontrar ChartClose en las fuentes de mi Asesor Experto. No lo he encontrado en ningún sitio. No era mi intención desde el principio cerrar el gráfico al borrar un Asesor Experto. Utilizo elementos estándar de la UI, como CAppDialog. Tal vez, el cierre de la carta fue escrito en alguna parte en las clases estándar...

 
Mihail Matkovskij:

De hecho, lanzó un EA estándar en el gráfico. Lo he borrado sin problemas. Intenté encontrar ChartClose en las fuentes de mi Asesor Experto. No lo he encontrado en ningún sitio. Mi idea inicial era no cerrar el gráfico al borrar un Asesor Experto. Utilizo elementos estándar de la UI, como CAppDialog. Tal vez, el cierre de la carta fue escrito en alguna parte de las clases estándar...

Lo encontré. La clase CAppDialog tiene un campo CChart m_chart.

class CAppDialog : public CDialog
  {
...
protected:
   CChart            m_chart;               // object to access chart

Cuando se elimina CAppDialog(su descendiente se utiliza en mi Asesor Experto),el destructor m_chart probablemente cerrará el gráfico.

//+------------------------------------------------------------------+
//| Destructor                                                       |
//+------------------------------------------------------------------+
CChart::~CChart(void)
  {
   if(m_chart_id!=-1)
      Close();
  }
//+------------------------------------------------------------------+
//| Chart close                                                      |
//+------------------------------------------------------------------+
void CChart::Close(void)
  {
   if(m_chart_id!=-1)
     {
      ChartClose(m_chart_id);
      m_chart_id=-1;
     }
  }

Desgraciadamente, este proceso no puede seguirse con el depurador. Pero después de mirar el código fuentede CAppDialog, así como deCChart, todo se aclara. Llamo la atención de los desarrolladores sobre esto.

 
Mihail Matkovskij:

Lo encontré. La clase CAppDialog tiene el campo CChart m_chart.

Cuando se elimina CAppDialog(su descendiente,CDialog, se utiliza en mi Asesor Experto),el destructor de m_chart probablemente cierra el gráfico.

Desgraciadamente, este proceso no puede seguirse con el depurador. Pero después de mirar el código fuentede CAppDialog, así como deCChart, todo se aclara. Me gustaría llamar la atención de los desarrolladores sobre esto.

void CAppDialog::Destroy(const int reason)

Separarse de la carta, entre otras cosas.

 

¿Puedes decirme por qué SignalBaseTotal() siempre devuelve 1000.

El servicio de señales de mql5.com tiene más de mil señales emitidas, pero el terminal sólo tiene mil disponibles. ¿Por qué?

¿Puede ser que haya un conjunto de señales en este millar, mientras que puede ser diferente en una hora?
Документация по MQL5: Управление сигналами / SignalBaseTotal
Документация по MQL5: Управление сигналами / SignalBaseTotal
  • www.mql5.com
SignalBaseTotal - Управление сигналами - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Alain Verleyen :

Error con la estructura derivada en la que no se añaden nuevos datos al guardar/cargar desde el archivo.

@Ilyas ¿Vas a arreglar esto?