Errores, fallos, preguntas - página 1221

 
Fry:

Error

Desafío:


Lleva a un mensaje en el cuaderno de bitácora:

HistoryBase 'RTS-12.14' 1 barras inválidas eliminadas


Estoy harto de este error. Entre otras cosas, también se está cargando el canal de comunicación.

El mismo error aparece por otros motivos no identificados.

Pero, curiosamente, no aparece en muchos otros instrumentos. Es el que más aparece en los futuros de RTS.


Escribí a servicedesk hace unos meses - sin respuesta(Solicitud iniciada: 2014.07.28 13:41, #1046215).


Adjunto el código del induke que provoca este error en cada tick de los futuros RTS actuales (y pasados) (cuenta demo con broker "O..."):

¿Es un error en el terminal? ¿O en el corredor? ¿O yo?

¿Qué debo hacer? ¿Cómo saber el número de barras en el marco temporal D1 de otra manera?

Buenas noches. ¿Lo has probado?

SeriesInfoInteger( _Symbol, PERIOD_D1, SERIES_BARS_COUNT );
 
Tapochun:

Buenas noches. ¿Has probado esto?

Buenas noches a ti también. Lo he probado. Es todo lo mismo.

El resultado es el mismo. El error aparece en el registro por cada tic.

Gracias por la idea. Si SeriesInfoInteger() no está accediendo a Bares internamente, entonces todo es más probable que se trate de una "estrecha" metedura de pata de datos en el servidor del broker.

Y esa es también una respuesta satisfactoria a mi pregunta.

Después de todo, no es que no sepa dónde va a aparecer el error, si puedo evitarlo, etc.

 
Fry:

Buenas noches a ti también. Lo he probado, y lo mismo.

El resultado es el mismo. El error aparece en el registro por cada tic.

Gracias por la idea. Si SeriesInfoInteger() no está accediendo a Bars internamente, entonces es cada vez más probable que sea una unión de datos "estrecha" en el servidor del broker.

Y eso también es una respuesta satisfactoria a mi pregunta.

Después de todo, no sé dónde va a aparecer el error, si puedo evitarlo, etc.

Quizás realmente haya un error en el broker, ya que el mensaje borra algunas barras "rotas"... o los datos se "matan" por el camino. Pero, esto es sólo una suposición de mi parte. Por cierto, ¿me da algo GetLastError()? Sí, ¿y qué devuelve Bars()?
 
Tapochun:
Probablemente, es un error del corredor, porque el mensaje borra algunas barras "rotas"... o los datos se "matan" por el camino. Pero, esto es sólo una suposición de mi parte. Por cierto, ¿me da algo GetLastError()? Sí, ¿y qué devuelve Bars()?

Si Bars() devuelve 0, entonces el error 4001 (ERR_INTERNAL_ERROR 4001 Unexpected internal error).

Pero a veces Bars() sigue devolviendo el número de barras y entonces no hay error (Bars() no cambia el estado de error).

 

MT4 build 722, ME4 build 989

Intentando copiar los datos actuales de la barra cero:

      MqlRates rates[1];
      int n=CopyRates(_Symbol,PERIOD_CURRENT,time[0],1,rates); 
      Print("n=",n);

Imprime n=0, es decir, los datos no se copian.

Sise escribe_Period en lugar dePERIOD_CURRENT , funciona.

Si se copian datos de barra distintos de cero (tiempo[1], etc.), funcionará, independientemente de si se escribePERIOD_CURRENT o_Period.

P.D. ¿Lo quieres en un cd?

 
Fry:

Si Bars() devuelve 0, entonces el error 4001 (ERR_INTERNAL_ERROR 4001 Unexpected internal error).

Pero a veces Bars() sigue devolviendo el número de barras y entonces no hay error (Bars() no cambia el estado de error).

Lo "inesperado" del error sugiere, una vez más, que algo no tiene tiempo de llegar y se borra, por lo que se produce el error. Según tengo entendido, hay que averiguar el número de barras en D1... ¿Hay que hacerlo en cada tick? Alternativamente, escriba una función que solicite datos una vez por minuto o menos. Y ver si se produce un error.

 
kPVT:

MT4 build 722, ME4 build 989

Intentando copiar los datos actuales de la barra cero:

Imprime n=0, es decir, los datos no se copian.

Sise escribe_Period en lugar dePERIOD_CURRENT , funciona.

Si se copian datos de barra distintos de cero (tiempo[1], etc.), funcionará, independientemente de si se escribePERIOD_CURRENT o_Period.

P.D. ¿Lo quieres en un cd?

Por la noche. Pruébalo... aunque si hay una alternativa, es poco probable que se apresuren a buscar este fallo. Tengo dos solicitudes pendientes desde hace una semana... no hay respuesta, no hay palabra.
 
Fry:

¿Qué hacer? ¿Cómo puedo saber el número de barras en el marco temporal D1?

¿El indicador funciona en D1?
 
MigVRN:
¿El indicador funciona en D1?

No, claro que no. De eso se trata. Para cuando el propio indicador se ejecuta en D1, tenemos trivialmente"constint rates_total, // tamaño de la serie temporal de entrada".

He aquí un ejemplo concreto de su uso.

Inicializamos un par de indicadores y obtenemos sus manejadores (todo está bien aquí). A continuación, en la función ontik tenemos que asegurarnos de que en el momento de la llamada se han calculado todos los datos en los manejadores necesarios (índices externos). Y esto es lo que hago:

   //not all data may be calculated
   if (BarsCalculated(hCCI)<rates_total) {Print("Not all data of trend CCI is calculated. Error#",GetLastError()); return(0);}
   if (Period()!=PERIOD_D1 && BarsCalculated(hDayTrand)<Bars(Symbol(),PERIOD_D1)) return(0);

Y en este caso hDayTrand es un manejador recursivo (el mismo indicador, sólo se carga D1).

Parece que todo lo hago según la documentación y los ejemplos del terminal y según las recomendaciones. El resultado es que todo esto se revuelve en el registro y come megabytes por minuto.

 
Fry:

No, claro que no. Esta es la cuestión. Para cuando el propio indicador se ejecuta en D1, tenemos trivialmente"constint rates_total, // tamaño de la serie temporal de entrada".

He aquí un ejemplo concreto de su uso.

Inicializamos un par de indicadores y obtenemos sus manejadores (todo está bien aquí). A continuación, en la función ontik debemos asegurarnos de que en el momento de la llamada ya se han calculado todos los datos de los manejadores necesarios (índices externos). Y esto es lo que hago:

Y en este caso hDayTrand es un manejador recursivo (el mismo indicador, sólo se carga D1).

Parece que todo lo hago según la documentación y los ejemplos del terminal y según las recomendaciones. El resultado: todo esto queda garabateado en el registro y consume megabytes por minuto.

IMHO, usted tiene que ponerse en contacto con el corredor (Otkrytie, por lo que entiendo). Las cuentas reales no lo tienen, así que lo más probable es que esté en la configuración del servidor.