Script o estrategia da diferentes resultados después de actualizar la página.

Los datos históricos no incluyen registros de movimientos de precios dentro de la barra; solo apertura, alto, bajo y cierre (OHLC). Esto lleva a una secuencia de comandos que a veces funciona de manera diferente en los datos históricos y en tiempo real, donde solo se conoce el precio de apertura y donde el precio generalmente se moverá muchas veces antes de que los valores máximos, mínimos y de cierre de la barra en tiempo real se establezcan después de que la barra en tiempo real cierra.

Si agregamos un script en un gráfico, espere hasta que se calcule en varias barras en tiempo real y luego vuelva a cargar la página. A veces veremos que las tramas de un script cambian ligeramente. Este comportamiento es uno de los pocos tipos de comportamientos comúnmente conocidos como repintado de indicadores. Es el tipo de repintado que nos interesa aquí y al que nos referiremos al utilizar repintado. Se debe al hecho de que cuando ciertas características se usan en scripts, se calcularán de manera diferente en barras históricas y en tiempo real.

Otros tipos de comportamiento, referidos correcta o incorrectamente como repintado, incluyen el trazado con un desplazamiento negativo en barras pasadas y el uso de información futura no disponible recibida a través de llamadas mal entendidas a la función de seguridad. Esto puede introducir datos no disponibles en tiempo real en los cálculos de script.

No todos los indicadores están sujetos al tipo de repintado que discutimos aquí. En la mayoría de los casos, depende de si ciertas funciones o construcciones de lenguaje se usan o no en el código. Tenga en cuenta que este efecto de repintado no es un error, sino el resultado de las diferencias inherentes entre las barras históricas y la información de barras en tiempo real en TradingView.

Podemos ver repintado en los siguientes casos:

1. Estrategias usando calc_on_every_tick = true. Una estrategia con el parámetro calc_on_every_tick = false también puede ser propensa a repintar, pero en menor grado.

2. Uso de la seguridad para solicitar datos de una resolución superior a la resolución del símbolo principal del gráfico:

// Add this study on 1 minute chart
//@version=4
study("My Script")
c = security(syminfo.tickerid, "5", lose)
plot(close)
plot(c, color=color.red)

Este estudio calculará de manera diferente los datos históricos y en tiempo real, independientemente del valor del parámetro anticipado (consulte Entendiendo lookahead).

3. Uso de la seguridad para solicitar datos de una resolución inferior a la resolución del símbolo principal del gráfico (más información aquí):

// Add this study on 5 minute chart
//@version=3
study("My Script")
c = security(tickerid, "1", close, lookahead=false)
plot(close)
plot(c, color=red)

Si lookahead = false, se volverá a pintar. Cuando lookahead = true, repintar es menos probable. Todavía puede suceder cuando las actualizaciones de 1 y 5 minutos se superan entre sí.

4. Todos los cálculos de guiones dependen de su punto de partida. Los datos intradía se alinean con el comienzo de la semana, mes o año, según la resolución. Debido a esto, los resultados producidos por dichos scripts pueden diferir de vez en cuando. Estos son casos en los que los guiones dependerán de un punto de partida:

  • cuando usan las funciones valuewhen, barssince o ema (debido a peculiaridades en su algoritmo)
  • cualquier estrategia de backtesting (independientemente de cómo se defina el parámetro calc_on_every_tick)

Existe una dependencia entre la resolución y la alineación de un punto de partida:

  • 1–14 minutos: se alinea al comienzo de una semana
  • 15–29 minutos: se alinea al comienzo de un mes
  • a partir de 30 minutos y más: se alinea al comienzo de un año

Las siguientes limitaciones de la duración del historial se tienen en cuenta al procesar los datos:

  • 10000 barras históricas para todos los planes Pro
  • 5000 barras históricas para otros planes

5. Cambios en los datos históricos, por ejemplo, debido a una división.

6. La presencia de las siguientes variables en el script generalmente lleva a repintar: