Errores, fallos, preguntas - página 438

 
joo:
Tal vez la mera presencia de Sleep (en comparación con su ausencia) en el código afecta de alguna manera el tiempo de ejecución general, pero el hecho de que Sleep no cuenta en el probador - eso es seguro.
Bueno, no soy un experto en esto... Medio minuto de retraso en el procesamiento de la función Sleep() con un argumento negativo y la pérdida de 17 días de pruebas: esos son los hechos.
 

El código cuelga el terminal:

   MqlRates s1[];

   int count=TerminalInfoInteger(TERMINAL_MAXBARS);
   int s1_copied=CopyRates(Symbol(),Period(),0,count,s1);
   if(s1_copied<=0)
      Print("Ошибка копирования ценовых данных ",GetLastError());
   else Print("Скопировано ",ArraySize(s1)," баров");

   Comment(ArrayMaximum(s1,0,WHOLE_ARRAY));

   ArrayFree(s1);

¿Cuál es la razón?

 
Graff:

El código cuelga el terminal:

¿Cuál es la razón?

Para empezar:
 int count=TerminalInfoInteger(TERMINAL_MAXBARS);
 Print("count=",count);

¿El terminal no está configurado como Unlim?

 
uncleVic:
Para empezar:

¿No está Unlim en la configuración del terminal?


El número máximo de barras está fijado en 5000. ¿Se puede reducir este valor?
 
Graff:
las barras máximas son de 5000. ¿se puede reducir este valor?

No creo que se pueda hacer menos (no estoy seguro).

¿Qué muestra Print(count)?

 
uncleVic:

No creo que sea posible menos (no estoy seguro).

¿Qué devuelve Print(count)?

2011.06.30 21:41:29 MultiInstruments3 (EURUSD,M5) 5000 barras copiadas
2011.06.30 21:41:29 MultiInstruments3 (EURUSD,M5) count=5000

en el comentario -1

Lo he intentado con otro símbolo pero no ha aparecido en el comentario -1

OBSERVACIÓN: Congelar después de unos segundos. Comienzo el código desde int OnInit()

 
joo:
Sí, y funciona en el probador, porque Sleep se ignora en el probador.

El sueño se emula completamente y con precisión en el probador del sueño.

En el ejemplo, debido a un desbordamiento aritmético al tratar con valores enteros, sólo hubo una espera de 17,5 días. El probador esperó exactamente ese tiempo.

Por lo tanto, no hay ningún error en el probador o en el entorno de ejecución de MQL5, pero hay un error evidente cometido por el programador.

 

Renat:

Es decir, no hay un error del probador o del entorno de ejecución de MQL5, sino que hay un claro error del programador.

Está bastante claro.

Renat:

El sueño se emula en el probador completamente y con bastante precisión.

Debido al desbordamiento aritmético al trabajar con valores enteros el tiempo de espera es de 17,5 días. Ese es exactamente el tiempo que esperó el probador.

Hmm, ahí lo tienes. Y yo pensaba erróneamente que el sueño era simplemente ignorado.

Resulta que si, por ejemplo, establezco Sleep (3 meses) en Expert Advisor en modo de prueba, el probador simplemente adelantaría el historial durante 3 meses? - Eso es genial.

 
Sí, se rebobina. Sólo el límite de la función es de 49 días, hasta que el contador de milisegundos se llene.

Durante el periodo de espera, el probador sigue emulando completamente el entorno de negociación, incluyendo todo el procesamiento de las órdenes previamente colocadas. El probador en MT5 es muy detallado.
 
Graff:
2011.06.30 21:41:29 MultiInstruments3 (EURUSD,M5) 5000 barras copiadas
2011.06.30 21:41:29 MultiInstruments3 (EURUSD,M5) count=5000

en el comentario -1

Lo he intentado con otro símbolo pero no ha aparecido en el comentario -1

OBSERVACIÓN: Congelar después de unos segundos. Voy a ejecutar el código de int OnInit()

Sí. Ni siquiera notamos el elefante.

Esta línea me hace sospechar mucho:

   Comment(ArrayMaximum(s1,0,WHOLE_ARRAY));

ArrayMaximum

busca el máximo elemento de una matriz numérica unidimensional.

intArrayMaximum(
doblearray[],// array a buscar
intstart=0// a partir de qué índice iniciamos la búsqueda
intcount=WHOLE_ARRAY,// número de índices a comprobar
);


y en nuestro caso:

   MqlRates s1[];

Creo que el compilador no debería saltarse esto. ¿Qué tienes? ¿Ni siquiera una advertencia? Si no es así, póngase en contacto con el Servicio de Atención al Cliente. ¿De acuerdo?

Общайтесь с разработчиками через Сервисдеск!
Общайтесь с разработчиками через Сервисдеск!
  • www.mql5.com
Ваше сообщение сразу станет доступно нашим отделам тестирования, технической поддержки и разработчикам торговой платформы.