Random
Random en ProBuilder génère un entier aléatoire entre deux limites incluses. Utile pour les données de test, les simulations et les valeurs aléatoires dans le code ProRealTime™.
Syntaxe
value = Random(limit1, limit2)Paramètres
| Nom | Type | Par défaut | Description |
|---|---|---|---|
limit1 | entier | requis | Une borne de la plage, incluse. |
limit2 | entier | requis | L'autre borne de la plage, incluse. |
Comment ça marche
Random tire un entier dans l'intervalle défini par ses deux limites, bornes incluses. L'ordre des arguments n'a pas d'importance, Random(-100, 1000) et Random(1000, -100) décrivent la même plage, la fonction détermine laquelle des limites est la borne inférieure.
Chaque évaluation produit un nouveau tirage. Comme un script ProBuilder s'exécute une fois par bar, un appel à Random dans le corps principal donne une valeur différente à chaque bar, et l'appeler deux fois sur le même bar donne deux valeurs indépendantes. Il n'y a pas de contrôle de la graine, donc les résultats ne sont pas reproductibles d'une exécution à l'autre, deux backtests sur des données identiques peuvent produire des séquences différentes.
La fonction ne renvoie que des entiers. Pour simuler un tirage décimal, générez une plage d'entiers plus large et divisez, par exemple Random(0, 1000) / 1000 approche une valeur uniforme entre 0 et 1.
Random n'a aucun contenu prédictif. Ses usages pratiques sont la génération de séries synthétiques pendant le développement du code d'affichage, l'ajout de bruit aux données de test, et la construction de références aléatoires auxquelles un système à base de règles peut être confronté pour vérification dans un backtest.
Exemples
Exemple 1, Générer un entier aléatoire (Indicateur)
// Draw a new integer between -100 and 1000 on each bar
a = Random(-100, 1000)
RETURN aChaque bar trace un nouveau tirage dans la plage inclusive, produisant une série de bruit utile pour tester la logique d'affichage et de mise à l'échelle.
Exemple 2, Référence d'entrée aléatoire pour comparaison (ProBacktest)
// 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 1Random fournit un signal d'entrée 50/50. Comparer une stratégie à cette référence montre quelle part de son résultat provient de la logique d'entrée plutôt que des réglages de sortie.
Exemple 3, Série de marche aléatoire simulée (Indicateur)
// Build a cumulative random walk for testing chart code
ONCE walk = 0
walk = walk + Random(-10, 10)
RETURN walk AS "random walk"Chaque bar ajoute un pas aléatoire compris entre -10 et 10 au total courant, produisant une série synthétique de type prix sans charger de données réelles.
Erreurs et pièges courants
- Entiers uniquement. Random ne renvoie jamais de décimales.
Random(0, 1)ne donne que 0 ou 1, pas de valeurs intermédiaires. Divisez un tirage entier plus large pour approcher des plages décimales. - Nouvelle valeur à chaque évaluation. Deux appels sur la même bar renvoient des tirages indépendants. Stockez le résultat dans une variable lorsque le même tirage doit être réutilisé au sein d'une bar.
- Pas de reproductibilité. Il n'existe pas de paramètre de graine, donc les backtests contenant Random ne sont pas reproductibles. Un code et des données identiques peuvent produire des courbes d'equity différentes à chaque exécution.
- Le recalcul modifie l'historique. Lorsqu'un indicateur se recalcule, les bars passées tracent de nouvelles valeurs, donc un tracé basé sur Random redessine son propre historique et ne peut pas être considéré comme une série stable.
Instructions liées
ROUND, arrondit une valeur décimale à l'entier le plus proche.FLOOR, arrondit une valeur à l'entier inférieur le plus proche.CEIL, arrondit une valeur à l'entier supérieur le plus proche.ABS, valeur absolue d'un nombre.MAX, la plus grande de deux valeurs, utile pour borner les tirages.MIN, la plus petite de deux valeurs, utile pour borner les tirages.MOD, reste d'une division entière.SGN, signe d'une valeur sous forme de -1, 0 ou 1.