Únete hoy
Instrucciones/probuilder · probacktest · proorder · proscreener

DOWNTO

DOWNTO en ProBuilder hace que un bucle FOR cuente hacia abajo desde un valor inicial más alto hasta un valor final más bajo, decrementando en uno en cada pasada por el bucle.

Sintaxis

probuilder
FOR variable = startValue DOWNTO endValue DO
  // loop body
NEXT

Cómo funciona

Un bucle FOR con DOWNTO inicia el contador en startValue y lo decrementa en uno tras cada pasada, ejecutando el cuerpo para cada valor hasta e incluyendo endValue. Es la contraparte descendente de TO, que incrementa.

La dirección importa siempre que el orden de iteración afecte al resultado. Los desplazamientos de bar en ProBuilder crecen con la antigüedad, así que close[20] es más antiguo que close[0]. Un bucle escrito FOR i = 20 DOWNTO 0 recorre por tanto los bars del más antiguo al más reciente, que es el orden natural para cálculos que acumulan estado cronológicamente, como seguir la aparición más reciente de un evento o reproducir una secuencia de bars en orden temporal.

El valor inicial debe ser mayor o igual que el valor final. Si startValue es menor que endValue, el cuerpo nunca se ejecuta y el script continúa después de NEXT sin ningún error. BREAK sigue disponible dentro del cuerpo para abandonar el bucle antes de tiempo.

Ejemplos

Ejemplo 1, Contar barras a la baja de la más antigua a la más reciente (Indicador)

probuilder
Value = 0
// Scan from 20 bars back toward the current bar
FOR i = 20 DOWNTO 0 DO
  IF (Close[i] < Open[i]) THEN
    Value = Value + 1
  ELSE
    BREAK
  ENDIF
NEXT
RETURN Value

El contador va de 20 hasta 0, por lo que el recorrido empieza en la barra más antigua de la ventana y avanza hacia el presente, deteniéndose en la primera barra que cerró en o por encima de su apertura.

Ejemplo 2, Desplazamiento del gap al alza más reciente (Indicador)

probuilder
lastGap = -1
// Visit bars oldest first so the final assignment is the newest gap
FOR i = 50 DOWNTO 1 DO
  IF low[i - 1] > high[i] THEN
    lastGap = i - 1
  ENDIF
NEXT
RETURN lastGap AS "bars since last up gap"

Como DOWNTO procesa primero las barras más antiguas, cada hueco detectado sobrescribe el anterior, dejando el desplazamiento del hueco más reciente en lastGap cuando termina el bucle.

Ejemplo 3, Puntuación de momentum cronológica (ProOrder)

probuilder
score = 0
// Compare each bar with the one before it, oldest pair first
FOR i = 10 DOWNTO 1 DO
  IF close[i] > close[i + 1] THEN
    score = score + 1
  ELSE
    score = score - 1
  ENDIF
NEXT

IF score >= 8 AND NOT ONMARKET THEN
  BUY 1 CONTRACT AT MARKET
ENDIF

El bucle recorre los últimos diez cambios de barra a barra en orden temporal y compensa las subidas con las bajadas. Una puntuación de 8 o más indica un avance persistente y activa una entrada long.

Errores y trampas habituales

  • Inicio menor que el final. FOR i = 0 DOWNTO 20 ejecuta cero iteraciones. No se lanza ningún error, así que las variables posteriores conservan en silencio sus valores iniciales. Comprueba que los límites están en orden descendente.
  • La dirección cambia el resultado. Los bucles que sobrescriben una variable al encontrar una coincidencia, o que hacen BREAK ante una condición, dan respuestas distintas con DOWNTO que con TO. Elige la dirección que coincida con la cronología deseada.
  • Error de uno en los extremos. Ambos límites son inclusivos. FOR i = 20 DOWNTO 0 se ejecuta 21 veces. Referenciar close[i + 1] dentro del cuerpo también alcanza una bar más allá de la ventana indicada.
  • Sin paso personalizado. El contador siempre avanza exactamente de uno en uno. Saltarse valores alternos requiere aritmética sobre el contador dentro del cuerpo, no una cláusula de paso.
  • FOR, el bucle contado que DOWNTO modifica.
  • TO, la contraparte ascendente de DOWNTO.
  • NEXT, cierra el bucle FOR y mueve el contador.
  • DO, marcador opcional entre el encabezado del bucle y el cuerpo.
  • BREAK, sale del bucle antes de que el contador alcance el valor final.
  • WHILE, alternativa guiada por una condición cuando no se conoce el número de iteraciones.
  • WEND, cierra un bucle WHILE.
  • BarIndex, número de la barra actual, a menudo combinado con recorridos descendentes.