CopyTicksRange () no funciona correctamente en MQL5. a - página 2

 
Alexey Viktorov #:

He resaltado las palabras clave.

NO solicite garrapatas que no existan ya por definición. Si solicita ticks incluso un milisegundo más allá del tiempo actual en milisegundos, obtendrá el propio g.........y en forma de los problemas que ha enumerado.


Por lo tanto, en su comprensión, debo comprobar en primer lugar, si estas garrapatas están disponibles? por ejemplo, ¿cómo? puedo también comprobar, si el rango solicitado está de vacaciones? debe ser hecho por la función CopyTicksRange() . Mi trabajo consiste en darle los parámetros de entrada según la documentación. Y puede comprobarlos, y en todo caso, devolver un error, pero no una basura en la respuesta.

¿Se te ocurre alguna forma de comprobar si una barra existente contiene ticks de segundo a tercer segundo, para evitar que esta función se bloquee?


Arriba escribí un ejemplo de código donde todo está ahí, pero la respuesta sigue siendo incorrecta.

 
RusPro #:


Entonces, según su entendimiento, primero debería comprobar si estos ticks están disponibles? ¿Cómo, por ejemplo? ¿Debería también comprobar si el rango solicitado está en el día libre? Esto debería hacerse mediante la función CopyTicksRange(). Mi trabajo consiste en darle los parámetros de entrada según la documentación. Y puede comprobarlos, y si pasa algo, devolverá un error, pero no una tontería como respuesta.


Arriba he escrito un ejemplo de código donde todo está presente, pero la respuesta sigue siendo incorrecta.

SymbolInfoTick

Devuelve los precios actuales de un símbolo especificado en una variable de tipo MqlTick.

bool  SymbolInfoTick(
   string    symbol,     // символ
   MqlTick&  tick        // ссылка на структуру
   );
struct MqlTick
  {
   datetime     time;          // Время последнего обновления цен
   double       bid;           // Текущая цена Bid
   double       ask;           // Текущая цена Ask
   double       last;          // Текущая цена последней сделки (Last)
   ulong        volume;        // Объем для текущей цены Last
   long         time_msc;      // Время последнего обновления цен в миллисекундах
   uint         flags;         // Флаги тиков
   double       volume_real;   // Объем для текущей цены Last c повышенной точностью
  };

No es necesario consultar los ticks más allá de time_msc

 

1)En mi ejemplo anterior existe el rango solicitado.

2) pero ¿qué impide hacer esta comprobación en el propioCopyTicksRange y reflejarlo en la documentación también? ¿por qué los desarrolladores me piden que haga muletas en lugar de simples correcciones de sus errores?


Hablando deSymbolInfoTick - también funciona mal, al menos para los caracteressintéticos:)

Según recuerdo, siempre devuelve la hora del primer tick en lugar del último

 
RusPro SymbolInfoTick - también funciona mal, al menos para los caracteressintéticos:)

Que yo recuerde, siempre devuelve la hora del primer tick en lugar del último.

Ya no participo en este diálogo.

 
Alexey Viktorov #:

Ya no participo en este diálogo.

Usted tampoco es un desarrollador de Metatrader, ¿por qué ha asumido el papel de su defensor?

En esencia los puntos planteados son correctos, la función debería funcionar correctamente.
 
Sergey Gridnev #:
Usted tampoco es un desarrollador de Metatrader, ¿por qué ha asumido el papel de su defensor?

En esencia, los puntos planteados son correctos, la función debería funcionar correctamente.

Una línea de vuelta al diálogo:

La función debe funcionar como los desarrolladores pretenden, no como los usuarios quieren que funcione. Uno quiere una cosa, otro quiere otra y otro quiere tonterías.

Esta es la razón por la que los desarrolladores no te responden. Y no soy un abogado, estoy tratando de llevarle una simple verdad, no cargue a otros si no puede hacerlo usted mismo. Tú, en cambio, has encendido el "no......... ceder..." y te estás inventando mitos sobre las muletas.

 
RusPro #:

Y aquí está el error:

es decir, la función utilizada por miles de programadores, me ha devuelto personalmente todos los ticks desde el inicio de la barra actual, pero no incluidos en el rango solicitado

Se trata, efectivamente, de un error. Proporcione los datos completos para la reproducción. Si se confirma, los desarrolladores harán una corrección en las próximas compilaciones.

Quizás el problema esté en el array estático MqlTick.
 

Alexey Viktorov #:

No es necesario solicitar ticks más allá de time_msc

El último tick histórico puede ser más reciente que SymbolInfoTick (llamado después de CopyTicks). Me encuentro con esto a diario.

Puede darse la situación contraria. Flujos que no están sincronizados.
 
fxsaber #:

Efectivamente, se trata de un error. Proporcionar datos completos para la repetición. Si se confirma, los desarrolladores harán una corrección en las próximas compilaciones.

Tal vez, el problema está en el array estático MqlTick.

Ok, intentaré reducir el código al mínimo y publicarlo. CopyTicks también contiene estos fallos, pero ocurren de manera menos predecible, lo que me llevó a muletas sólo para CopyTicksRange. Probablemente sea un error de alguna función interna común.

Te voy a dibujar un ejemplo para SymbolInfoTick también.

 
RusPro #:

función utilizada por miles de programadores

Unidades.