[Archivo] Matemáticas puras, física, química, etc.: problemas de entrenamiento cerebral no relacionados con el comercio de ninguna manera - página 510
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
No me gusta usar los operadores continue y break, pero quizás puedan ayudarte, sobre todo porque un 36-fold if en mql podría no funcionar
¡Y acelera Mi código se puede descomponer si, consistente en una compleja condición de comprobación de 36 entradas, en 36 ifs con una simple condición! :)))
Creo que el código se acelerará notablemente, aunque para saberlo con seguridad hay que entender las instrucciones de la máquina, que son el resultado de la compilación.
He ejecutado tu código en MT5. Ya tiene implementadas las evaluaciones cortas de los operadores lógicos (incorporados), por lo que no hay necesidad de romper el código en un montón de ifs.
En MT4 es diferente, esta optimización tiene sentido allí. Pero hice la evaluación del tiempo en MT5, por el esquema corto.
Acelerado por un factor de 4. Reescribir Validar().
Ahora es así:
WorkTime == 200 msHorrible, pero tiene sentido optimizar el código de la siguiente manera. Muchas veces más rápido. Y aquí MT5 ya no ayuda.
No es una idea, por supuesto. Pero me pregunto cómo de rápido funcionará. :))
También en el código he reducido el rango de los valores del divisor. 654321/2 = 327160,5...
Acelerado por un factor de 4. Reescribir Validar().
Ahora se ve así:
WorkTime == 200 ms¡Es hermoso! No como el mío.
Tengo una idea para escribir un algoritmo de división de columnas. Divide entre dígitos, escribe el resto de la división y cuando el resultado sea mayor que 6, haz la operación de continuar. Eso es exactamente lo que he hecho esta tarde, cuando estaba revisando los cinco, he dividido todo en columnas. ¡Pero si hace falta mucho tiempo! :))
Es en la representación numérica hexadecimal donde hay que hacer la optimización, como tú has hecho.
Tengo una idea para escribir un algoritmo de división de columnas. Divide entre dígitos, escribe el resto de la división y si coincide o el resultado es mayor que 6, haz la operación de continuar. Eso es exactamente lo que he hecho esta tarde, cuando estaba revisando los cinco, he dividido todo en columnas. ¡Pero si hace falta mucho tiempo! :))
Es en la representación de los números de seis dígitos donde hay que optimizar, como tú has hecho.
¡О! No es una mala idea. Lo volví a escribir. WorkTime=125 ms.
¡О! No es una mala idea. Vuelve a escribirlo. Tiempo de trabajo=125 ms
¡Ahora los jugadores de hockey estarán definitivamente contentos! :)))) ¡Pero no quería decir eso! ;D
¿Cuánto muestra el contador de tiempo por Mi código?
Entiendo los cambios. Pero aún no lo domino:
"¿Es "|=" un OR lógico? El resto es un callejón sin salida...
¡Ahora los jugadores de hockey estarán contentos seguro! :))))
Sí.
Su nuevo código es aún más rápido, pero hay algunos errores.
El número de llaves rizadas no cuadra. Pero creo que no es nada, se puede arreglar borrando el último.
Explica el significado de las líneas resaltadas. No lo entiendo.
Sí.
Su nuevo código es aún más rápido, pero hay algunos errores.
El número de llaves rizadas no cuadra. Pero creo que no es nada, se puede arreglar borrando el último.
Explica el significado de las líneas separadas. No lo entiendo.
Exactamente... ¡Mentira! :))) Y los paréntesis parecen estar bien, he copiado de un código ya hecho.
Así es como debe ser:
También en MQL5 acelerará un poco la comparación:
Pero está claro que 125 ms no está al día.
¿O tal vez todo esté en C++?
.
Función de validación de un parámetro.
¿Qué tal a la antigua usanza...? asignar memoria y almacenar en caché un bool
para todos los valores válidos del argumento?