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

Random

Random en ProBuilder genera un entero aleatorio entre dos límites inclusive. Útil para datos de prueba, simulaciones y valores aleatorios en código de ProRealTime™.

Sintaxis

probuilder
value = Random(limit1, limit2)

Parámetros

NombreTipoPor defectoDescripción
limit1enteroobligatorioUno de los límites del rango, inclusive.
limit2enteroobligatorioEl otro límite del rango, inclusive.

Cómo funciona

Random extrae un número entero del rango definido por sus dos límites, ambos extremos incluidos. El orden de los argumentos no importa, Random(-100, 1000) y Random(1000, -100) describen el mismo rango, la función determina cuál de los límites es el inferior.

Cada evaluación produce una nueva extracción. Como un script de ProBuilder se ejecuta una vez por bar, una llamada a Random dentro del cuerpo principal devuelve un valor diferente en cada bar, y llamarla dos veces en la misma bar devuelve dos valores independientes. No hay control de la semilla, por lo que los resultados no son reproducibles entre ejecuciones, dos backtests sobre datos idénticos pueden producir secuencias diferentes.

La función devuelve solo enteros. Para simular un sorteo decimal, genera un rango entero mayor y divide, por ejemplo Random(0, 1000) / 1000 aproxima un valor uniforme entre 0 y 1.

Random no tiene contenido predictivo. Sus usos prácticos son generar series sintéticas mientras se desarrolla el código de visualización, añadir ruido a los datos de prueba y construir referencias aleatorias contra las que comprobar la coherencia de un sistema basado en reglas en un backtest.

Ejemplos

Ejemplo 1, Generar un entero aleatorio (Indicador)

probuilder
// Draw a new integer between -100 and 1000 on each bar
a = Random(-100, 1000)
RETURN a

Cada bar traza una nueva extracción del rango inclusivo, produciendo una serie de ruido útil para probar la lógica de visualización y de escalado.

Ejemplo 2, Referencia de entrada aleatoria para comparar (ProBacktest)

probuilder
// Coin-flip entries with fixed exits, used as a neutral baseline
// against which a real entry rule can be compared
IF NOT onmarket THEN
  coin = Random(0, 1)
  IF coin = 1 THEN
    BUY 1 CONTRACT AT MARKET
  ENDIF
ENDIF

SET STOP %LOSS 1
SET TARGET %PROFIT 1

Random proporciona una señal de entrada 50/50. Comparar una estrategia con esta referencia muestra qué parte de su resultado proviene de la lógica de entrada y no de los ajustes de salida.

Ejemplo 3, Serie simulada de paseo aleatorio (Indicador)

probuilder
// Build a cumulative random walk for testing chart code
ONCE walk = 0
walk = walk + Random(-10, 10)
RETURN walk AS "random walk"

Cada bar añade un paso aleatorio entre -10 y 10 al total acumulado, produciendo una serie sintética similar a un precio sin cargar datos reales.

Errores y trampas habituales

  • Solo enteros. Random nunca devuelve decimales. Random(0, 1) devuelve solo 0 o 1, no valores intermedios. Divide un sorteo entero más amplio para aproximar rangos decimales.
  • Un valor nuevo en cada evaluación. Dos llamadas en la misma bar devuelven extracciones independientes. Guarda el resultado en una variable cuando haya que reutilizar la misma extracción dentro de una bar.
  • Sin reproducibilidad. No hay parámetro de semilla, por lo que los backtests que contienen Random no son repetibles. Un código y unos datos idénticos pueden producir curvas de equity diferentes en cada ejecución.
  • El recálculo cambia el histórico. Cuando un indicador se recalcula, las bars pasadas dibujan valores nuevos, por lo que un gráfico basado en Random redibuja su propio histórico y no puede tratarse como una serie estable.
  • ROUND, redondea un valor decimal al entero más cercano.
  • FLOOR, redondea un valor a la baja hasta el entero más cercano.
  • CEIL, redondea un valor al alza hasta el entero más cercano.
  • ABS, valor absoluto de un número.
  • MAX, el mayor de dos valores, útil para acotar las extracciones aleatorias.
  • MIN, el menor de dos valores, útil para acotar las extracciones aleatorias.
  • MOD, resto de una división entera.
  • SGN, signo de un valor como -1, 0 o 1.