Errores, fallos, preguntas - página 591

 
alexvd:

Vamos a servicedesk.

Por favor, aclare cómo se desconectaron exactamente los servicios. ¿Has borrado (congelado) los servicios? Por favor, adjunte los registros de los agentes problemáticos.

La configuración del proxy en sus registros es algo extraña. ¿Escribiste la configuración del proxy en la configuración de tu agente? Por favor, adjunte el common.ini de su gestor.

Resulta que miré los registros de ayer...

Todo está bien.

 
TheXpert:

Siguiente código:

Salidas:

2011.12.05 22:01:28 RectLabel (EURUSD,H1) pos = {12, 176314750}
2011.12.05 22:01:28 RectLabel (EURUSD,H1) other = {123, 456}

Entonces, la lista de inicialización no funcionó, hay basura en la estructura. ¿Es un error o no?

Es un error del compilador - no ha generado un error indicando que la estructura no puede ser inicializada de esa manera (sin constructor de copia). Arreglado. Gracias por la publicación.
 
No puedo entender la desinicialización. ¿Por qué aparece dos veces el mensaje "Expert Advisor unloaded from pair ..."?
//+------------------------------------------------------------------+
//|                                                   testDeinit.mq5 |
//|                        Copyright 2011, MetaQuotes Software Corp. |
//|                                              http://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2011, MetaQuotes Software Corp."
#property link      "http://www.mql5.com"
#property version   "1.00"



//+------------------------------------------------------------------+
class CTest_Expert
  {

public:
                     CTest_Expert();
                    ~CTest_Expert() { Deinit(); }
                   
   void              Processing();
   void              Deinit();
   bool              StartTimer(int nCounSeconds);
   void              StopTimer();
   string   Exp_Symbol;
  };

   CTest_Expert arSymbols[];

//+------------------------------------------------------------------+
//| Конструктор                                                      |
//+------------------------------------------------------------------+
CTest_Expert::CTest_Expert()
  {

  }
//+------------------------------------------------------------------+
//| Функция удаления динамических объектов                           |
//+------------------------------------------------------------------+
void CTest_Expert::Deinit()
  {
  
   Print("Эксперт выгружен с пары "+Exp_Symbol);
   Comment("");

  }
//+------------------------------------------------------------------+
//|Инициализация таймера                                             |
//+------------------------------------------------------------------+
bool CTest_Expert::StartTimer(int nCountSeconds)
  {
   return(EventSetTimer(nCountSeconds));
  }
//+------------------------------------------------------------------+
//|Уничтожение таймера                                               |
//+------------------------------------------------------------------+

void CTest_Expert::StopTimer()
  {
      EventKillTimer();
  }

//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
   ArrayResize(arSymbols, 5);
   arSymbols[0].Exp_Symbol="0";
   arSymbols[1].Exp_Symbol="1";
   arSymbols[2].Exp_Symbol="2";
   arSymbols[3].Exp_Symbol="3";
   arSymbols[4].Exp_Symbol="4";
  
   return(0);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
      int nSize=ArraySize(arSymbols);
      Print("nSize = " + IntegerToString(nSize));
      for(int i=0;i<nSize;i++)
        {
         Print("-------"+IntegerToString(i)+"--------");
         arSymbols[i].Deinit();
         Print("---------------");
        }
  
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
  
  }
//+------------------------------------------------------------------+

Resultado

2011.12.06 16:59:52 testDeinit (EURUSD,M5) 14:00:00
2011.12.06 16:59:52 testDeinit (EURUSD,M5) 14:02:00 PM testDeinit (EURUSD,M5) E.T.A. se ha descargado del par 3
2011.12.06 16:59:52 testDeinit (EURUSD,M5) Descargado del par 2
2011.12.06 16:59:52 testDeinit (EURUSD,M5) Descargado del par 1
2011.12.06 16:59:52 testDeinit (EURUSD,M5) Ekspert descargado del par 0
2011.12.06 16:59:52 testDeinit (EURUSD,M5) ---------------
2011.12.06 16:59:52 testDeinit (EURUSD,M5) 14
2011.12.06 16:59:52 testDeinit (EURUSD,M5) -------4--------
2011.12.06 16:59:52 testDeinit (EURUSD,M5) ---------------
2011.12.06 16:59:51 testDeinit (EURUSD,M5) El experto se descarga del par 3
2011.12.06 16:59:51 testDeinit (EURUSD,M5) -------3--------
2011.12.06 16:59:51 testDeinit (EURUSD,M5) ---------------
2011.12.06 16:59:51 testDeinit (EURUSD,M5) El experto ha sido descargado del par 2
2011.12.06 16:59:51 testDeinit (EURUSD,M5) -------2--------
2011.12.06 16:59:51 testDeinit (EURUSD,M5) ---------------
2011.12.06 16:59:51 testDeinit (EURUSD,M5) El experto se descarga del par 1
2011.12.06 16:59:51 testDeinit (EURUSD,M5) -------1--------
2011.12.06 16:59:51 testDeinit (EURUSD,M5) ---------------
2011.12.06 16:59:51 testDeinit (EURUSD,M5) El experto se descarga del par 0
2011.12.06 16:59:51 testDeinit (EURUSD,M5) -------0--------
2011.12.06 16:59:51 testDeinit (EURUSD,M5) nSize = 5

 
Konstantin83:
No puedo entender la desinicialización. ¿Por qué aparece dos veces el mensaje "Experto descargado del par ..."?
                    ~CTest_Expert() { Deinit(); }

   CTest_Expert arSymbols[];

//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
      int nSize=ArraySize(arSymbols);
      Print("nSize = " + IntegerToString(nSize));
      for(int i=0;i<nSize;i++)
        {
         Print("-------"+IntegerToString(i)+"--------");
         arSymbols[i].Deinit();
         Print("---------------");
        }
  
  }

Primera llamada de OnDeinit. Segunda llamada del destructor
 
mql5:
Esto es un error del compilador - no generó un error diciendo que una estructura no puede ser inicializada de esta manera (sin constructor de copia). Arreglado. Gracias por la publicación.

No. Aquí aparecen más detalles.

En Help dice que las estructuras simples pueden copiarse como variables de tipos simples:

{
   Pos pos = {100, 100};
   Pos pos1 = pos; // копи конструктор
   pos = pos1; // копи оператор
}

Entonces, ¿por qué no se puede hacer en la lista de inicialización? No quiero definir explícitamente los constructores, para no perder el método de inicialización utilizado anteriormente.

No es una crítica en principio, sólo quiero escuchar el comentario final.

Документация по MQL5: Основы языка / Типы данных / Структуры и классы
Документация по MQL5: Основы языка / Типы данных / Структуры и классы
  • www.mql5.com
Основы языка / Типы данных / Структуры и классы - Документация по MQL5
 

Siejecuto el terminal con 12 ventanas abiertas, se come 325 MB de RAM.

Al ejecutar el Asesor Experto multidivisa, el terminal consume 990 Mb de memoria. El Asesor Experto ve las barras de 5 minutos de las últimas 48 horas + utiliza el indicador "fractal". Si corro sólo para operar con un símbolo, se necesitan 400 Mb. ¿Es normal este consumo de memoria cuando se trabaja con 12 símbolos?

 
Konstantin83:
Estoy ejecutando un Asesor Experto multidivisa, el terminal se come 990 Mb de RAM. El experto examina las barras de 5 minutos de las últimas 48 horas + utiliza el indicador "fractal". Si corro sólo para operar con un símbolo, se necesitan 400 Mb. ¿Es normal este consumo de memoria cuando se trabaja con 12 símbolos?
Vea el artículo Principios de recálculo económico de los indicadores
 
Me olvidé de señalar que el fractal es un indicador estándar + todos los cálculos tienen lugar cada cinco minutos
 
Konstantin83:
Olvidé mencionar que el fractal es un indicador estándar + todos los cálculos se realizan cada cinco minutos

¿Cómo saben los desarrolladores lo que están haciendo y cómo lo están haciendo?
Intenta formular y explicar claramente la raíz del problema en tu código.
Describa el problema de forma técnica.

 
sergeev:

¿Cómo pueden los desarrolladores saber lo que están haciendo y cómo lo están haciendo?
Intenta formular claramente y destacar la esencia del problema en tu código. en qué condiciones empieza a crecer el consumo, haz y muestra la impresión del registro.
Describa el problema de forma técnica.

No he prestado atención al tamaño de la memoria antes porque no debe haber sido mucho. Ayer y hoy he notado que el sistema se retrasa, he abierto el administrador de tareas y ahí el terminal se ha comido 900MB. Empezó a buscar. En el arranque se abren 12 ventanas - 325 MB, lo puse en la ventana del Asesor Experto - 990 MB, por lo que pensé que se estaba comiendo al Asesor Experto. He puesto "Gráficos - barras máximas por ventana" en ilimitado. Después de haberlo cambiado a 50 000 , he lanzado el terminal y pesa 110, luego lo he vuelto a cambiar a ilimitado. Ahora mi Asesor Experto tiene 208 MB, es decir, está bien.