Errores, fallos, preguntas - página 2754
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
La cuestión es poder pasar por referencia.
Al igual que con las cadenas, los desarrolladores tienen la oportunidad (si no lo han hecho ya) de pasar todo por referencia sin copiar realmente la variable.
Y será una solución no para una estructuraMqlTick en particular, sino para todas las ocasiones
Lo que confirma una vez más que no tiene sentidoutilizar directamente _Digits,_Point , _Period, _LastError, etc. (e incluso _Symbol puede ser sustituido por NULL). De hecho, deben ser declarados como volátiles const
Y usted, por el contrario, propone ampliar este rango
Tienes razón, pero soncasi volátiles, excepto la bandera IsStopped - es 100% volátil, es decir, cualquier lectura de IsStopped es 100% lectura de memoria.
Para otros,casivollatylе significa que el compilador PUEDE almacenar en caché el valor de una variable en un registro en la primera llamada y utilizar el valor almacenado en caché la próxima vez que se acceda a dicha variable, pero sólo dentro de una función o rama de llamadas, si están inlineadas en una función.
Esto es posible (y necesario) porque el cambio de variables predefinidas (excepto IsStopped) no puede ocurrir dentro de un punto de entrada MQL (función OnXXX)
En cuanto al MODIFICADOR DEVARIABLES, digamos que lo utilizan los programadores de const para los programadores.
Como sabemos, se puede cambiar la constante de una variable a través de la conversión, por lo que no se puede confiar en el compilador con el modificador const.
Si el compilador ve que la variable no ha cambiado su valor y está inicializada como una constante, convertirá dicha variable en un valor inmediato (ImmediateValue) incluso sin el modificador const
. Respecto a _LastTick, estamos discutiendo pero...
Se trata de una estructura, no de un simple tipo atómico, y puede cambiarse de repente, en cualquier punto del programa MQL, incluso en el momento de obtener el valor.
Resulta que para abordar esta estructura hay que introducir un sincronizador.
Estamos trabajando constantemente en el rendimiento, en particular, debido a este alto ritmo de lanzamiento de compilaciones.
Planeamos hacer mucho trabajo para acelerar el código MQL
En cuanto a _LastTick, estamos discutiendo, pero...
Se trata de una estructura, no de un tipo simple-atómico y puede ser cambiado repentinamente, en cualquier punto del programa MQL, incluyendo el momento de obtener el valor.
Resulta que para abordar esta estructura tenemos que introducir un sincronizador.
¿pero en el probador _LastTick no puede cambiar en ningún punto del programa MQL?
si es así, entonces dé esa solución sólo para los probadores, donde la velocidad de los cálculos es lo más importante
¿pero en el probador _LastTick no puede cambiar en ningún punto del programa MQL?
si es así, entonces dé una solución de este tipo sólo para el probador donde la velocidad de cálculo es lo más importante
Entonces, ¿qué le impide solicitar este tick en el manejador OnTick una vez y luego trabajar con los datos recibidos?
La escasa cualificación de los creadores de EA con la que se cargan Market y Cloud es un obstáculo.
Entonces, ¿qué impide solicitar el tick una vez en el manejador OnTick, y de seguir trabajando con los datos recibidos? Prácticamente no cuesta nada. ¿Por qué volver a solicitarlo 100 veces (como en las pruebas anteriores), creando artificialmente frenos en el lugar? Entonces, se propone resolver el problema de un código EA torcido complicando el trabajo interno de MT. ¿O tiene algunas medidas normales?
Los eventos a ser manejados por "OnTick" son recibidos externamente en alguna cola con prioridades. En otros manejadores, es útil asegurarse de que no se han producido nuevos eventos de este tipo, de lo contrario los datos del tick anterior no son válidos/están desactualizados.
Entonces, ¿qué te impide solicitar este tick una vez en el manejador OnTick y luego trabajar con los datos resultantes? Prácticamente no sirve para nada. Para qué molestarse en solicitarlo 100 veces (como en las pruebas anteriores), creando artificialmente un freno en el momento.
Esto es exactamente lo que hago en el probador
Es decir, se supone que el problema de un código EA torcido se resuelve complicando el funcionamiento interno de la MT. ¿O tiene algunas medidas normales?
Bueno, el código está determinado por las prácticas comunes de codificación, mira el QB y el uso de las líneas de seguridad en estos ejemplos
No uso SB, llevo meses midiendo con un perfilador y buscando soluciones, había un hilo sobre pruebas de velocidad, en parte tirando a soluciones alternativas
la normalidad de la medición ... es una pendiente resbaladiza que tendrá que ser tratado con seriedad, estoy contento con mi EA para la optimización, había un pase a los 18 meses 6 seg, ahora 2,5 seg , imho he hecho un buen trabajo en mí ))))
no 0 como en la actualidad, es decir, efectivamente REASON_PROGRAM
Al reiniciar el terminal, escribe de forma continua y sin parar en el registro de grabaciones
El tiempo de la barra de historia en el registro aumenta constantemente. El gráfico diario de GBPUSD está abierto y se mueve - cero, la primera y la segunda barra se borran/crean. Y así se va dando vueltas y más vueltas.
Aquí estoy esperando. ¿Se llenará todo el SSD con estos registros o se detendrá por fin...
La bitácora de ayer está en el trailer.