La función StrToTime provoca el error 4051 - página 3

 
Las funciones StrToTime y StringToTime son las mismas.
RaptorUK:
¿Por qué querría compatibilidad con mql5? Estoy usando el código mql4 para MT4.

No he dicho que debas hacerlo.
 
RaptorUK:
ResetLastError() antes de llamar a StrToTime() y luego llamar a GetLastError(). StrToTime() no debería causar un error pero lo hace. . . es un error. Algo similar ya ha sido reconocido y corregido: https://www.mql5.com/en/forum/149475/page2


¿Hay algún lugar en la documentación donde esté escrito que StrToTime() utiliza el manejador de errores?

Si no es así, entonces hay

1) No hay razón para comprobarlo

2) No hay razón para esperar que el valor devuelto tenga algo que ver con el resultado de la función StrToTime().

Además, ¿qué significa el error 4051? Cantidad de lotes no válidos?????

 
graziani:


¿Hay algún lugar en la documentación donde esté escrito que StrToTime() utiliza un manejador de errores?

Si no es así, entonces hay

1) No hay razón para comprobarlo

2) No hay razón para esperar que el valor devuelto tenga algo que ver con el resultado de la función StrToTime().

Además, ¿qué significa el error 4051? Cantidad de lotes no válidos?????

Este error puede ser generado por muchas funciones, incluso las que no devuelven un valor.

ERR_INVALID_FUNCTION_PARAMVALUE4051Valor de parámetro de función no válido.
 

¿Puede mostrarme una referencia en la documentación en la que se indique que StrToTime() utiliza un gestor de errores y que, una vez finalizada la función, se debe comprobar su éxito llamando a GetLastError()?

 

De todos modos, hay una cosa en la que estamos de acuerdo, así que vamos a hacer algo de ruido al respecto:

Obligar a que los comentarios en el código fuente de EA después de la definición de las variables externas/de entrada sean visibles como la definición de las variables en las propiedades de los expertos en el probador de estrategias es arrogante, insolente e irrespetuoso hacia los programadores. MQ no tiene derecho a imponer tal regla y obligar a los usuarios a perder tiempo para cambiar numerosas líneas de código fuente y cambiar los comentarios y los hábitos de escritura de código fuente, de tal manera no estándar. Si quieren este comportamiento no estándar, deberían implementarlo usando directivas #pragma, ya que es la forma estándar y aceptada.

 
graziani: debería implementarse usando directivas #pragma, ya que es la forma estándar y aceptada.
O la más compacta "forma estándar y aceptada" pero aún controlada por el codificador.
Doxygen
int var; /*!< Detailed description after the member */
int var; //!< Brief description after the member
O estilo QT
int var; /**< Detailed description after the member */
 
graziani:

¿Puede mostrarme una referencia en la documentación en la que se indique que StrToTime() utiliza un gestor de errores y que, una vez finalizada la función, se debe comprobar su éxito llamando a GetLastError()?

No, no puedo.

Una situación similar ya ha sido arreglada con TerminalInfoString() ... como ya mencioné. Pero entiendo tu punto, si el usuario usara GetLastError() correctamente el "error" nunca se hubiera visto.
 
graziani:

De todos modos, hay una cosa en la que estamos de acuerdo, así que mejor hagamos algo de ruido al respecto:

Probablemente hay más de una cosa en la que estamos de acuerdo
 
RaptorUK:
Probablemente hay más de una cosa en la que estamos de acuerdo

parece. Puedes crear un club
 
RaptorUK: ¿Por qué iba a querer la compatibilidad con mql5? Estoy usando código mql4 para MT4.
graziani: Str vs. String, deberías usar las nuevas funciones ya que son las mismas que en MQL5, para tener compatibilidad de origen.
Los documentos de mq4 han sido actualizados. Ambos están en mt4. https://docs.mql4.com/convert/StrToTime y https://docs.mql4.com/convert/stringtotime