Iscriviti ora
Istruzioni/probuilder · probacktest · proorder · proscreener

Random

Random in ProBuilder genera un intero casuale tra due limiti inclusi. Utile per dati di test, simulazioni e valori casuali nel codice ProRealTime™.

Sintassi

probuilder
value = Random(limit1, limit2)

Parametri

NomeTipoPredefinitoDescrizione
limit1interoobbligatorioUn limite dell'intervallo, incluso.
limit2interoobbligatorioL'altro limite dell'intervallo, incluso.

Come funziona

Random estrae un numero intero dall'intervallo definito dai suoi due limiti, entrambi inclusi. L'ordine degli argomenti non conta, Random(-100, 1000) e Random(1000, -100) descrivono lo stesso intervallo, la funzione determina quale limite è il minore.

Ogni valutazione produce una nuova estrazione. Poiché uno script ProBuilder viene eseguito una volta per barra, una chiamata a Random all'interno del corpo principale restituisce un valore diverso su ogni barra, e chiamarla due volte sulla stessa barra restituisce due valori indipendenti. Non c'è controllo del seed, quindi i risultati non sono riproducibili tra esecuzioni diverse, due backtest sugli stessi dati possono produrre sequenze differenti.

La funzione restituisce solo numeri interi. Per simulare un'estrazione decimale, genera un intervallo di interi più ampio e dividi, per esempio Random(0, 1000) / 1000 approssima un valore uniforme tra 0 e 1.

Random non ha contenuto predittivo. I suoi usi pratici sono generare serie sintetiche durante lo sviluppo del codice di visualizzazione, aggiungere jitter ai dati di test e costruire riferimenti casuali con cui verificare la plausibilità di un sistema basato su regole in un backtest.

Esempi

Esempio 1, Generare un intero casuale (Indicatore)

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

Ogni barra traccia una nuova estrazione dall'intervallo inclusivo, producendo una serie di rumore utile per testare la logica di visualizzazione e di scala.

Esempio 2, Riferimento con ingressi casuali per confronto (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 fornisce un segnale di ingresso 50/50. Confrontare una strategia con questo riferimento mostra quanta parte del suo risultato deriva dalla logica di ingresso piuttosto che dalle impostazioni di uscita.

Esempio 3, Serie simulata di random walk (Indicatore)

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

Ogni barra aggiunge un passo casuale tra -10 e 10 al totale progressivo, producendo una serie sintetica simile a un prezzo senza caricare dati reali.

Errori e insidie comuni

  • Solo numeri interi. Random non restituisce mai decimali. Random(0, 1) produce solo 0 o 1, non valori intermedi. Dividi un'estrazione intera più ampia per approssimare intervalli decimali.
  • Nuovo valore a ogni valutazione. Due chiamate sulla stessa bar restituiscono estrazioni indipendenti. Memorizza il risultato in una variabile quando la stessa estrazione deve essere riutilizzata nella stessa bar.
  • Nessuna riproducibilità. Non esiste un parametro seed, quindi i backtest che contengono Random non sono ripetibili. Codice e dati identici possono produrre curve di equity diverse a ogni esecuzione.
  • Il ricalcolo modifica lo storico. Quando un indicatore si ricalcola, le bar passate disegnano nuovi valori, quindi un tracciato basato su Random ridisegna il proprio storico e non può essere considerato una serie stabile.
  • ROUND, arrotonda un valore decimale all'intero più vicino.
  • FLOOR, arrotonda un valore per difetto all'intero più vicino.
  • CEIL, arrotonda un valore per eccesso all'intero più vicino.
  • ABS, valore assoluto di un numero.
  • MAX, il maggiore di due valori, utile per limitare le estrazioni.
  • MIN, il minore di due valori, utile per limitare le estrazioni.
  • MOD, resto di una divisione intera.
  • SGN, segno di un valore come -1, 0 o 1.