Cualquier pregunta de los recién llegados sobre MQL4 y MQL5, ayuda y discusión sobre algoritmos y códigos - página 1007

 
Alexey Viktorov:

Tiempo menos tiempo dividido por PeriodSeconds()

por lo que podría ser la longitud incorrecta en la transición del viernes al lunes (o si hay barras perdidas en el historial)

es mejor leer el tiempo del punto y luego definir las barras

datetime time1=(datetime)ObjectGetInteger(ExtChartID,name,OBJPROP_TIME,0);
datetime time2=(datetime)ObjectGetInteger(ExtChartID,name,OBJPROP_TIME,1);

int bar1=iBarShift(_Symbol,_Period,time1);
int bar2=iBarShift(_Symbol,_Period,time2);
 
Taras Slobodyanik:

por lo que podría ser la longitud incorrecta en la transición del viernes al lunes (o si hay barras perdidas en el historial)

es mejor leer la hora de los puntos y luego identificar las barras

De acuerdo. No me molestó a mí ni a mi cerebro. Entonces es mejor tomar el número de barras entre las fechas.

int  Bars( 
   string           symbol_name,     // имя символа 
   ENUM_TIMEFRAMES  timeframe,       // период 
   datetime         start_time,      // с какой даты 
   datetime         stop_time        // по какую дату 
   );
 
int start()
{
  if(Check()==false)
      return;  
      
  int TotalOrders;
  double NewPrice, NewLots, NewTP, NewSL;
  /*****************************************************************************/
  /* Здесь часть кода, которая работает при каждом новом тике                  */ 
  /*****************************************************************************/
  TotalOrders = CountOfOrders(); 
     double sprd = Ask-Bid;
     int tot = CountOfOrders2();
     double spred = spred/Point*(tot-1);

  if(tot > 1)PercCloseDown();


Esta parte dice error



¿Puede decirme cómo se pone en marcha el robot?


 
Ivan Butko:

Esta parte escribe un error

¿Cómo consigo que el robot se ponga en marcha?

Aquí se declara la variable e inmediatamente se divide:

double spred = spred/Point*(tot-1); 

El error muestra que el compilador trata esta variable (spred) como no declarada. Esto tampoco es bueno, porque (la variable) no está inicializada - ya que no esuna variable global, puede tener un valor indefinido...

Intenta declararlo antes y asignarle un valor
 
Yevhenii Levchenko:

Aquí se declara una variable e inmediatamente se comparte:

El error muestra que el compilador trata esta variable (spred) como no declarada. Esto tampoco es bueno, porque (la variable) no está inicializada - ya que no es una variable global, puede haber un valor indefinido...

Intenta declararlo antes y asignarle un valor

¡Eugene, de todo corazón!
Está en marcha, gracias.

 

Qué hacer si en MQL5 ...

if(BarsCalculated(handle) == -1)

... ha pasado un minuto y el problema es el mismo. ¿Por qué tanto tiempo?


Error 4806 - Datos solicitados no encontrados ... - ...¿cómo hago para que mi EA lo encuentre?

 
Ivan Butko:
int start()
{
  if(Check()==false)
      return;  
      
  int TotalOrders;
  double NewPrice, NewLots, NewTP, NewSL;
  /*****************************************************************************/
  /* Здесь часть кода, которая работает при каждом новом тике                  */ 
  /*****************************************************************************/
  TotalOrders = CountOfOrders(); 
     double sprd = Ask-Bid;
     int tot = CountOfOrders2();
     double spred = spred/Point*(tot-1);

  if(tot > 1)PercCloseDown();


Esta parte dice error



¿Puede decirme cómo se pone en marcha el robot?


Línea 61, ¿qué línea es?
 

¿Cómo puedo detectar el error de falta de memoria?


¿Qué podría estar causando este mensaje en primer lugar?


He escrito un programa de unas 20 mil líneas. Tengo un montón de clases, arrays y estructuras diferentes.

Aproximadamente una vez cada dos o tres días aparece el mensaje de "memoria agotada".

No sé cómo localizar la función responsable de la fuga de memoria.

 
Sergey Likho:

¿Cómo puedo detectar un error de memoria?


¿Qué podría estar causando este mensaje en primer lugar?


He escrito un programa de unas 20 mil líneas. Tengo un montón de clases, arrays y estructuras diferentes.

Aproximadamente una vez cada dos o tres días aparece el mensaje de "memoria agotada".

No sé cómo atraparlo, qué función es la responsable de la fuga de memoria.

Asegúrese de que cada nuevo tiene su propia eliminación

Es decir, sólo a través de la lectura cuidadosa de su código. Para facilitar la lectura y hacerla más divertida, puedes comentarla :-)

También es una buena idea escribir scripts de casos de prueba para cada clase y comprobar las fugas dentro de las clases de esa manera.

 
Maxim Kuznetsov:

asegúrese de que cada nuevo tiene su propia eliminación

Es decir, simplemente leyendo el código con atención. Para facilitar la lectura y hacerla más divertida, también puedes comentar :-)

También es una buena idea escribir scripts de casos de prueba para cada clase y comprobar las fugas dentro de las clases de esa manera.

Nuevos, los borrados no se usan. Los elementos de la clase están definidos al principio y no los recreo.

Principalmente trabajo con matrices.


¿Qué sonlos scripts de casos de prueba?

Razón de la queja: