Errores, fallos, preguntas - página 3150
![MQL5 - Lenguaje de estrategias comerciales para el terminal de cliente MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
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
el operador ternario parece más conciso (IMHO)
manera aún más concisa :
:))
Ya escribí que con esta construcción estás accediendo al índice del buffer con rates_total(cuando prev_calculated == 0 ).
Y esto es un desbordamiento, porque rates_total es el tamaño del buffer cuyo último elemento es rates_total-1
¡Sí, entiendo por qué el desbordamiento está sucediendo ahora!
¿Por qué esta construcción funcionaba antes y por qué nofunciona ahora?
Porque el buffer se asigna exactamente a rates_total
Estoy esperando a escuchar lo que Artyom tiene que decir, él entiende el tema.y no arates_total+1
¡Sí, entiendo por qué el desbordamiento está sucediendo ahora!
¿Por qué este diseño funcionaba antesy ahora no?
Porque el buffer se asigna exactamente a rates_total
y no arates_total+1
Los milagros no existen.
Si antes funcionaba, debía ser un código diferente.
Con este diseño.
El búfer del indicador se sale de los límites.
Por favor, muéstrame un ejemplo paraticks con ciclo i>=0
tal vez he olvidado lo que estoy haciendo mal.
aproximadamente reducir el índice en 2 o 3 en el borde máximo para estar seguros).
No hay milagros.
Si antes funcionaba, debía ser un código diferente
Anteriormente, el cálculo correcto del límite era
y pasaría al bucle i>=0.
Pero ahora no funcionará porque el límite resulta ser -1
El cálculo correcto solía ser
y entraría en el bucle i>=0
Ahora no entra porque el límite resulta ser -1
Antes tampoco podía entrar con el mismo código.
no se inventa nada.
descargue la antigua compilación de Hatimlansky y compruébela, si no me cree.
Esta discusión está fuera de tema aquí, pertenece a algún hilo de novatos
Si no ha utilizado este diseño antes, entonces absténgase con su offtop.
Tampoco pude entrar con el mismo código antes
no inventes esto
de Hatimlansky descarga la build antigua y compruébala si no me crees.
Artem también utilizó esta construcción.
Que describió anteriormente, por lo que sólo él entiende el problema aquí.
El cálculo correcto solía ser
y entraría en el bucle i>=0
Y ahora no lo hace, porque el límite resulta ser -1.
Siempre había una comprobación: if(limit>1) limit= rates_total-1. Esto es para los casos en que no hay i+algo en los cálculos. Si lo hay, entonces hay que incluir estos "cuántos-algo" a la construcción: limit=total_de_tasas-1-algo.
Sin ella, siempre habría un rebasamiento de la matriz. Porque rates_total no es otra cosa que Bars(). En consecuencia, si hay 5000 barras y nos dirigimos al índice 5000, quedaremos fuera de los límites del array (el cálculo de las barras empieza por cero).
En tu ejemplo, el cálculo del límite es erróneo:
Debería ser así:
int limit = rates_total-prev_calculated;
Y después comprueba si hay límite>1
y si el límite es mayor que uno, entonces el límite = rates_total-1