Errores, fallos, preguntas - página 1681
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
Es indiferente que las cotizaciones sean de ida o de vuelta. Es necesario controlar la condición prev_calculate==0 en el indicador - esto es el intercambio de la historia y el segundo punto - el modo de recuento de las barras cambiadas, es decir, de hecho rates_total -prev_calculate+1.
Deberías leer lo que se escribe antes de responder. ¡El código para reproducir el error del depurador! Se dan todos los datos para reproducirlo.
Aquí hay un script para reproducir el mismo error
Debería leer lo que está escrito antes de responder. Código para reproducir el error del depurador Se dan todos los datos para la reproducción.
Te he contestado: no te importa cuántas veces se llame a OnCalculate. Su tarea es proporcionar un recálculo total o parcial del indicador analizando dos valores: rates_total, prev_calculate y la condición cuando prev_calculate==0.
No hay ninguna condición estricta de que OnCalculate() deba ser llamado una o dos veces. OnCalculate() no debe nada a nadie. Pero el programador debe controlar dos valores: rates_total, prev_calculate y la condición cuando prev_calculate==0.
Te lo dije: no te importa cuántas veces se llame a OnCalculate. Su tarea es proporcionar un recálculo total o parcial del indicador, analizando dos valores: rates_total, prev_calculate y la condición cuando prev_calculate==0.
Me importa cuántas veces se llama al depurador y cuántas veces se llama a OnCalculate. Soy una persona increíble por naturaleza. Y me importa todo.
Intentas enseñarme algo sin entender la esencia del problema. Gracias, por supuesto. Pero escuchemos y oigamos a nuestro oponente.
No, lo estoy ejecutando en RTS ahora, cuando los kotirs están de pie. Se ha descubierto que se llama una vez y el depurador miente, mostrando como si fueran dos. Código para jugar (ejecutar en un personaje en el que no hay ticks)
Después de pulsar F5, llegará a un punto de interrupción. Y después de una segunda pulsación en F5 - de forma similar. Aunque esto no debería ser - como una confirmación, puedes acortar esa línea en el código y probar con ella.
Así se puede ver lo que está mal. Observa el valor de i en la primera y segunda parada.
Así se puede ver cuál es el problema. Traza el valor de i en la primera y segunda paradas.
Lo rastreé, por eso lo escribí.
Descubrí que se llama una vez, pero el depurador miente, mostrándolo como si fueran dos.
¿Por qué el depurador me devuelve al mismo lugar después de la segunda pulsación de F5? No ocurre lo mismo con return(0), que es correcto.
No miente, se detiene dos veces - antes de calcular la expresión entre corchetes, y después de ella, justo antes del retorno.
Por cierto, un truco muy práctico, en mi opinión. Necesito recordarlo. No es necesario poner el resultado entre paréntesis en una variable separada para comprobar el valor de retorno antes de salir, el propio depurador se detendrá de nuevo.
No miente, se detiene dos veces - antes de calcular la expresión entre corchetes, y después de ella, justo antes del retorno.
Por cierto, un truco muy práctico, en mi opinión. Necesito recordarlo.No es necesario poner el resultado entre paréntesis en una variable separada para comprobar el valor de retorno antes de salir, el propio depurador se detendrá por segunda vez.
Pon el código así:
y poner el indicador en el gráfico. Y luego volver a cargar el terminal (no es necesario quitar el indicador del gráfico). Verá que OnCalculate() puede ser llamado una o dos o incluso tres veces. Es decir, como he dicho antes, no hay reglas estrictas.
Pon el código así:
y poner el indicador en el gráfico. Y luego volver a cargar el terminal (no es necesario quitar el indicador del gráfico). Verá que OnCalculate() puede ser llamado una o dos o incluso tres veces. Es decir, como he dicho antes, no hay reglas estrictas.
Estoy de acuerdo en que esto es útil. Pero, ¿cómo puedo averiguar el resultado de retorno antes de la salida sin una variable en el depurador?
Mira en el cuerpo de Func() para ver lo que devuelve antes de salir. Estoy hablando de un caso especial. Si el valor se calcula directamente entre paréntesis, por supuesto, no se puede.
PS. Aunque... ¿Por qué no? En la segunda parada, busca todos los argumentos return() y calcula el resultado. )