Errores, fallos, preguntas - página 2986

 
Andrey Dik:

y, en consecuencia, surge otra pregunta: ¿debo comprobar si la estructura MqlTick tiene valores correctos después de llenarla con la función SymbolInfoTick ()? - Porque los valores de Ask y Bid pueden ser cualquiera, incluso negativos. ¿O es suficiente con obtener true de SymbolInfoTick ()?

Foro sobre comercio, sistemas de comercio automatizados y pruebas de estrategias

Nuevo MetaTrader 5 build 2755: Mejoras en la ventana de cotizaciones y en el depurador

fxsaber, 2021.02.15 03:02

¿El precio cero COPY_TICKS_INFO-tic es un error?

void OnStart()
{
  MqlTick Ticks[];
  
  CopyTicksRange("GBPUSD", Ticks, COPY_TICKS_INFO, D'2020.10.02 23:54:54' * 1000, D'2020.10.05 00:07:01' * 1000);
    
  ArrayPrint(Ticks);
  Print(AccountInfoString(ACCOUNT_SERVER));
}


Resultado.

                         [time]   [bid]   [ask] [last] [volume]    [time_msc] [flags] [volume_real]
        [0] 2020.10.02 23:54:54 1.29378 1.29385 0.0000        0 1601682894091       4       0.00000
        [1] 2020.10.02 23:54:54 1.29377 1.29383 0.0000        0 1601682894404     134       0.00000
        [2] 2020.10.02 23:54:54 1.29375 1.29379 0.0000        0 1601682894471     134       0.00000
        [3] 2020.10.02 23:54:55 1.29375 1.29381 0.0000        0 1601682895248       4       0.00000
        [4] 2020.10.05 00:06:14 0.00000 1.29313 0.0000        0 1601856374091       6       0.00000
        [5] 2020.10.05 00:07:00 1.29271 1.29332 0.0000        0 1601856420497     134       0.00000
        [6] 2020.10.05 00:07:00 1.29271 1.29331 0.0000        0 1601856420497       4       0.00000
        RannForex-Server
 
inwinterborn:

¿Puedes decirme por qué los puntos de interrupción se mueven a la siguiente función cuando se depura, tanto en el historial como en línea (Ctrl+F5, F5)?

Lo he comprobado varias veces. Todas las explicaciones están en las capturas de pantalla adjuntas.

¿Es un error?


Explicación:

1. He establecido manualmente 2 puntos de interrupción: 1) Series.mqh línea 81; 2) TimeSeries.mqh línea 48
2. Paso al archivo ExpertMACD.mq5
3. Iniciar la depuración en datos históricos o reales
4. El depurador se detiene en el archivo Series.mqh en la línea 94, que no tiene punto de interrupción. La línea es el inicio de la siguiente función después de mi punto de interrupción manual, que desde la línea 81 ha desaparecido o se ha movido.
5. Compruebo mi segundo punto de interrupción manual en TimeSeries.mqh, y veo que también se ha movido de la línea 48 a la línea 63, de nuevo la siguiente función después de mi anterior punto de interrupción.


¿Puede decirme cuál puede ser el problema?

 
inwinterborn:


Explicación:

1. He establecido manualmente 2 puntos de interrupción: 1) Series.mqh línea 81; 2) TimeSeries.mqh línea 48
2. Paso al archivo ExpertMACD.mq5
3. Iniciar la depuración en datos históricos o reales
4. El depurador se detiene en el archivo Series.mqh en la línea 94, que no tiene punto de interrupción. La línea es el inicio de la siguiente función después de mi punto de interrupción manual, que desde la línea 81 ha desaparecido o se ha movido.
5. Compruebo mi segundo punto de interrupción manual en TimeSeries.mqh, y veo que también se ha movido de la línea 48 a la línea 63, de nuevo la siguiente función después de mi anterior punto de interrupción.


¿Puede decirme cuál puede ser el problema?

Compruebe la configuración en el editor: desactive la optimización:

 
Vladimir Karputov:

Compruebe la configuración en el editor - desactive la optimización:

Gracias por la respuesta, pero no sirve de nada.

La opción estaba efectivamente activada.

Desactivado. Lo repitió. El resultado es el mismo que el descrito anteriormente.

Terminal cerrado y editor con nueva configuración.

Vuelve a abrirlo. Repitiendo. El resultado es el mismo.

¿Qué otra cosa podría ser el problema?


 
inwinterborn:

Gracias por la respuesta, pero no sirve de nada.

La opción estaba efectivamente activada.

Desactivado. Lo repitió. El resultado es el mismo que el descrito anteriormente.

Terminal cerrado y editor con nueva configuración.

Vuelve a abrirlo. Repitiendo. El resultado es el mismo.

¿Qué otra cosa podría ser el problema?


Pruebe la versión 2833 - tal vez algo ha cambiado...

 
Vladimir Karputov:

Pruebe la versión 2833 - tal vez algo ha cambiado ...

Hubo una actualización automática a 2834.

El resultado no cambia. Los puntos de ruptura se desplazan.

 
fxsaber:

Tu código no comprueba el valor de retorno de la función, por lo que es imposible juzgar sobre la corrección del contenido de la estructura Ticks.

Y si no hay errores al llamar aCopyTicksRange, entonces deberíamos considerar los valores cero de la estructura como normales, de lo contrario, ¿de quién nos podemos fiar? ¿Qué precios pueden considerarse normales en absoluto (nos referimos incluso no a los precios 0,0, sino a ¡cualquier! precio)? ¿A quién reclamar en caso de precios erróneos, al Sportlotto? El corredor culpará a MQ y MQ culpará al corredor. El asunto es más grave de lo que parece.

 
Andrey Dik:

Tu código no comprueba el valor de retorno de la función, por lo que es imposible juzgar sobre la corrección del contenido de la estructura Ticks.

Y si no hay errores al llamar aCopyTicksRange, entonces deberíamos considerar los valores cero de la estructura como normales, de lo contrario, ¿de quién nos podemos fiar? ¿Qué precios pueden considerarse normales en absoluto (nos referimos incluso no a los precios de 0,0, sino a ¡cualquier! precio)? ¿A quién reclamar en caso de precios erróneos, al Sportlotto? El corredor culpará a MQ y MQ culpará al corredor. El asunto es más grave de lo que parece.

El código muestra lo que pueden ser los precios. He mirado mis propios códigos. No hagas estas y otras comprobaciones estúpidas. Definitivamente han hecho más de un millón de operaciones en varios lugares en MT5 solo. La cuestión está muy lejos de la práctica.

 
fxsaber:

El código muestra cuáles pueden ser los precios. He mirado mis propios códigos. No hagas estas y otras comprobaciones estúpidas. Definitivamente han hecho más de un millón de operaciones en varios lugares en MT5 solo. La cuestión está muy lejos de la práctica.

¿Y? Esa es la cuestión, los precios pueden ser cualquier cosa, así que ¿cuáles crees que son los correctos? No se hacen estas y otras comprobaciones tontas, pero se hacen comprobaciones igualmente tontas, pero mucho más caras de valor 0.0?

 
inwinterborn:

¿Puedes decirme por qué los puntos de interrupción se mueven a la siguiente función cuando se depura, tanto en el historial como en línea (Ctrl+F5, F5)?

Lo he comprobado varias veces. Todas las explicaciones están en las capturas de pantalla adjuntas.

¿Es un error?

Elpunto de interrupción se desplaza - como en CSeries::BufferResize experto nunca entra en absoluto.