Características del lenguaje mql5, sutilezas y técnicas - página 84
Está perdiendo oportunidades comerciales:
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Registro
Entrada
Usted acepta la política del sitio web y las condiciones de uso
Si no tiene cuenta de usuario, regístrese
¿Puede proporcionar el código de referencia para demostrarlo?
Resultado(liberación)
Y esto es lo que se obtiene cuando se ejecuta en modo de perfilado
Lamentablemente, en este caso no se puede confiar en el perfilador.
Resultado ( Liberación )
HH Y esto es lo que obtengo, si lo ejecuto en modo de perfilado
No sólo es imposible confiar en el perfilador en este caso, sino que Bench1 se ejecuta 10 veces más rápido que en la versión de lanzamiento.
Gracias por eso.
Resultado ( Liberación )
Probado con el Asesor Experto por estrategia.
2018.04.16 14:24:28.049 Core 1 OnTester result 39725470 (µs bench1)
2018.04.16 14:26:14.629 Core 1 OnTester result 39270950 (µs bench2)
2018.04.16 14:27:13.566 Core 1 OnTester result 20467067 (µs bench3)
Otras 2 veces más rápido (pero no más de 10 veces, lo que seguramente se debe a la optimización del compilador).
Probado con un asesor de estrategia.
2018.04.16 14:24:28.049 Core 1 OnTester result 39725470 (µs bench1)
2018.04.16 14:26:14.629 Core 1 OnTester result 39270950 (µs bench2)
2018.04.16 14:27:13.566 Core 1 OnTester result 20467067 (µs bench3)
Es 2 veces más rápido todavía (pero no más de 10 veces más rápido, lo que obviamente se debe a la optimización del compilador).
Se mide el tiempo que queda para generar ticks, no sólo el cálculo de OnTick.
Aquí está sólo la medida OnTick
Banco1
Banco3
Por un factor de tres. No se puede ser 10 veces más rápido por las múltiples llamadas a la función BenchX. StringToDouble2 en sí es 10 veces más rápido.
Se mide el tiempo todavía para generar ticks, no sólo para calcular OnTick.
...Tienes razón.
Realmente me sorprende que sea 10 veces más rápido, pero su función sólo se puede utilizar cuando se sabe que la cadena contiene un valor doble válido.
2018.04.16 17: 14: 16.183 170952_180416 (EURUSD, H1) StringToDouble2 (abcdef) = 5456784.0
Gracias, pero este script también guarda incorrectamente.
En mi monitor, la limitación en el lado derecho está marcada con una línea vertical, y la captura de pantalla está mucho más allá de esa línea.
Permítanme citar la respuesta de servicedesk:
En este caso, la ayuda de ChartScreenShot debe tomarse literalmente
align_mode=ALIGN_RIGHT
[en] Modo de una salida de pantalla estrecha. El valor de la enumeración ENUM_ALIGN_MODE. ALIGN_RIGHT indica la alineación al borde derecho (salida desde el final). ALIGN_LEFT especifica la alineación a la izquierda.
Significa que cuando se especifica la alineación ALIGN_RIGHT el gráfico se desplazará forzosamente hacia el borde derecho, lo que equivale a ejecutar el comando
Este comportamiento se estableció hace muchos años (así que históricamente) cuando todavía no existía la función ChartNavigate(). Si se establece align_mode=ALIGN_RIGHT se garantiza que se eliminará exactamente el borde derecho del gráfico.
Cuando se añadió la función ChartNavigate(), el comportamiento de la función ChartScreenShot no cambió.
Por lo tanto, si desea obtener el efecto deseado (el gráfico no se desplazará hacia el borde derecho), utilice el valor ALIGN_LEFT para el parámetro align_mode.
su función sólo puede utilizarse cuando se sabe que la cadena contiene un valor doble válido.
2018.04.16 17: 14: 16.183 170952_180416 (EURUSD, H1) StringToDouble2 (abcdef) = 5456784.0
Arreglado, ahora funciona como el original
Foro sobre trading, sistemas de trading automatizados y pruebas de estrategias de trading
Características del lenguaje mql5, sutilezas y trucos
fxsaber, 2018.04.16 13:23
Si elimina la const resaltada, el tiempo de ejecución de la función se duplicará. Esto demuestra que el compilador no siempre crea un código óptimo y necesita este tipo de pistas.
Si eliminamos la const marcada, el tiempo de ejecución de la función se duplicará. Indica que el compilador no siempre crea un código óptimo y necesita este tipo de pistas.
Interesante, gracias.
Por favor, no edites tu código cuando ya hayas recibido una respuesta, no recibí la notificación de que lo habías actualizado.
Si eliminamos la const marcada, el tiempo de ejecución de la función se duplicará. Indica que el compilador no siempre crea un código óptimo y necesita este tipo de pistas.
Muy interesante...
¿Alguna idea de por qué ocurre esto?
¿Cuál es el mecanismo?
Para determinar la anchura de una captura de pantalla tomada con MQL5 que incluya todas las barras de un determinado periodo, se ofrece la siguiente solución.
Una peculiaridad resultó ser el hecho de que la anchura de la captura de pantalla tiene que ser corregida en diferentes aproximaciones del gráfico.
Los "coeficientes" reales resultaron ser diferentes (para mí específicamente) para la variante con y sin la escala.