Jetzt beitreten
Befehle/probuilder · probacktest · proorder · proscreener

Random

Random in ProBuilder erzeugt eine zufällige Ganzzahl zwischen zwei inklusiven Grenzen. Nützlich für Testdaten, Simulationen und randomisierte Werte in ProRealTime™ Code.

Syntax

probuilder
value = Random(limit1, limit2)

Parameter

NameTypStandardBeschreibung
limit1GanzzahlerforderlichEine Grenze des Bereichs, inklusiv.
limit2GanzzahlerforderlichDie andere Grenze des Bereichs, inklusive.

So funktioniert es

Random zieht eine ganze Zahl aus dem durch seine zwei Grenzen definierten Bereich, beide Grenzen eingeschlossen. Die Reihenfolge der Argumente spielt keine Rolle, Random(-100, 1000) und Random(1000, -100) denselben Bereich beschreiben, klärt die Funktion, welche Grenze die untere ist.

Jede Auswertung erzeugt einen neuen Zufallswert. Da ein ProBuilder-Skript einmal pro Bar läuft, liefert ein Random-Aufruf im Hauptteil auf jedem Bar einen anderen Wert, und ein zweifacher Aufruf auf demselben Bar liefert zwei unabhängige Werte. Es gibt keine Seed-Steuerung, daher sind Ergebnisse zwischen Durchläufen nicht reproduzierbar, zwei Backtests über identische Daten können unterschiedliche Sequenzen erzeugen.

Die Funktion gibt nur ganze Zahlen zurück. Um eine dezimale Ziehung zu simulieren, erzeugen Sie einen größeren Ganzzahlbereich und dividieren, zum Beispiel Random(0, 1000) / 1000 nähert einen gleichverteilten Wert zwischen 0 und 1 an.

Random hat keinen prognostischen Gehalt. Seine praktischen Anwendungen sind das Erzeugen synthetischer Reihen bei der Entwicklung von Anzeigecode, das Hinzufügen von Jitter zu Testdaten und das Bilden von Zufallsbasislinien, gegen die ein regelbasiertes System in einem Backtest auf Plausibilität geprüft werden kann.

Beispiele

Beispiel 1, Eine zufällige Ganzzahl erzeugen (Indikator)

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

Jeder Bar zeichnet einen neuen Zufallswert aus dem inklusiven Bereich und erzeugt so eine Rauschreihe, die zum Testen von Anzeige- und Skalierungslogik nützlich ist.

Beispiel 2, Zufälliger Einstieg als Vergleichsbasis (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 liefert ein 50/50-Einstiegssignal. Der Vergleich einer Strategie mit dieser Basislinie zeigt, wie viel ihres Ergebnisses aus der Einstiegslogik und nicht aus den Ausstiegseinstellungen stammt.

Beispiel 3, Simulierte Random-Walk-Reihe (Indikator)

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

Jeder Bar addiert einen Zufallsschritt zwischen -10 und 10 zur laufenden Summe und erzeugt so eine synthetische, kursähnliche Reihe, ohne echte Daten zu laden.

Häufige Fehler und Stolperfallen

  • Nur Ganzzahlen. Random gibt niemals Dezimalzahlen zurück. Random(0, 1) ergibt nur 0 oder 1, keine Werte dazwischen. Teilen Sie eine größere Ganzzahl-Ziehung, um Dezimalbereiche anzunähern.
  • Neuer Wert bei jeder Auswertung. Zwei Aufrufe auf demselben Bar geben unabhängige Ziehungen zurück. Speichern Sie das Ergebnis in einer Variablen, wenn dieselbe Ziehung innerhalb eines Bars erneut verwendet werden muss.
  • Keine Reproduzierbarkeit. Es gibt keinen Seed-Parameter, daher sind Backtests mit Random nicht wiederholbar. Identischer Code und identische Daten können bei jedem Durchlauf unterschiedliche Equity-Kurven erzeugen.
  • Neuberechnung verändert die Historie. Wenn ein Indikator neu berechnet wird, zeichnen vergangene Bars neue Werte, sodass ein Random-basierter Plot seine eigene Historie neu zeichnet und nicht als stabile Serie behandelt werden kann.
  • ROUND, rundet einen Dezimalwert auf die nächste Ganzzahl.
  • FLOOR, rundet einen Wert auf die nächste Ganzzahl ab.
  • CEIL, rundet einen Wert auf die nächste Ganzzahl auf.
  • ABS, Absolutwert einer Zahl.
  • MAX, der größere von zwei Werten, nützlich zum Begrenzen von Zufallswerten.
  • MIN, der kleinere von zwei Werten, nützlich zum Begrenzen von Zufallswerten.
  • MOD, Rest einer Ganzzahldivision.
  • SGN, Vorzeichen eines Werts als -1, 0 oder 1.