Word nu lid
Instructies/probuilder · probacktest · proorder · proscreener

Random

Random in ProBuilder genereert een willekeurig geheel getal tussen twee inclusieve grenzen. Nuttig voor testdata, simulaties en gerandomiseerde waarden in ProRealTime™-code.

Syntaxis

probuilder
value = Random(limit1, limit2)

Parameters

NaamTypeStandaardBeschrijving
limit1geheel getalverplichtEén grens van het bereik, inclusief.
limit2geheel getalverplichtDe andere grens van het bereik, inclusief.

Hoe het werkt

Random kiest een geheel getal uit het bereik dat door de twee grenzen wordt bepaald, inclusief beide grenzen. De volgorde van de argumenten maakt niet uit, Random(-100, 1000) en Random(1000, -100) hetzelfde bereik beschrijven, bepaalt de functie welke grens de ondergrens is.

Elke evaluatie levert een nieuwe trekking op. Omdat een ProBuilder-script één keer per bar draait, geeft een Random-aanroep in het hoofdgedeelte op elke bar een andere waarde, en twee keer aanroepen op dezelfde bar geeft twee onafhankelijke waarden. Er is geen controle over de seed, dus resultaten zijn niet reproduceerbaar tussen runs, twee backtests over identieke data kunnen verschillende reeksen opleveren.

De functie geeft alleen gehele getallen. Om een decimale trekking te simuleren, genereer je een groter geheel bereik en deel je, bijvoorbeeld Random(0, 1000) / 1000 benadert een uniforme waarde tussen 0 en 1.

Random heeft geen voorspellende waarde. De praktische toepassingen zijn het genereren van synthetische reeksen tijdens het ontwikkelen van weergavecode, het toevoegen van jitter aan testdata, en het bouwen van willekeurige referentielijnen waartegen een regelgebaseerd systeem in een backtest op redelijkheid kan worden getoetst.

Voorbeelden

Voorbeeld 1, Een willekeurig geheel getal genereren (Indicator)

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

Elke bar plot een nieuwe trekking uit het inclusieve bereik, wat een ruisreeks oplevert die nuttig is om weergave- en schalingslogica te testen.

Voorbeeld 2, Willekeurige instap als vergelijkingsbasis (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 levert een 50/50 instapsignaal. Een strategie vergelijken met deze basislijn laat zien hoeveel van haar resultaat voortkomt uit de instaplogica in plaats van uit de uitstapinstellingen.

Voorbeeld 3, Gesimuleerde random walk-reeks (Indicator)

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

Elke bar voegt een willekeurige stap tussen -10 en 10 toe aan het lopende totaal, wat een synthetische koersachtige reeks oplevert zonder echte data te laden.

Veelvoorkomende fouten en valkuilen

  • Alleen gehele getallen. Random retourneert nooit decimalen. Random(0, 1) levert alleen 0 of 1, geen waarden daartussen. Deel een bredere gehele trekking om decimale bereiken te benaderen.
  • Nieuwe waarde bij elke evaluatie. Twee aanroepen op dezelfde bar geven onafhankelijke trekkingen terug. Sla het resultaat op in een variabele als dezelfde trekking binnen een bar hergebruikt moet worden.
  • Geen reproduceerbaarheid. Er is geen seed-parameter, dus backtests die Random bevatten zijn niet herhaalbaar. Identieke code en data kunnen bij elke run andere equity curves opleveren.
  • Herberekening verandert de historie. Wanneer een indicator herberekent, krijgen eerdere bars nieuwe waarden, dus een plot gebaseerd op Random hertekent zijn eigen historie en kan niet als een stabiele reeks worden beschouwd.
  • ROUND, rondt een decimale waarde af op het naastbijgelegen gehele getal.
  • FLOOR, rondt een waarde naar beneden af op het naastbijgelegen gehele getal.
  • CEIL, rondt een waarde naar boven af op het naastbijgelegen gehele getal.
  • ABS, absolute waarde van een getal.
  • MAX, de grootste van twee waarden, nuttig om trekkingen te begrenzen.
  • MIN, de kleinste van twee waarden, nuttig om trekkingen te begrenzen.
  • MOD, rest van een gehele deling.
  • SGN, teken van een waarde als -1, 0 of 1.