Rejoignez-nous
Instructions/probuilder · probacktest · proorder · proscreener

ArrayMax

ArrayMax renvoie la plus grande valeur stockée dans un tableau ProBuilder. Utilisez-le pour extraire le maximum de points de données collectés dans les indicateurs et les stratégies.

Syntaxe

probuilder
result = ArrayMax($MyArray)

Paramètres

NomTypePar défautDescription
$MyArraytableaurequisLa variable tableau à parcourir. Les noms de tableaux commencent toujours par $.

Comment ça marche

ArrayMax examine chaque élément assigné dans le tableau et renvoie la plus grande valeur unique. Il remplace le schéma courant qui consiste à boucler sur les indices et à comparer chaque élément à un maximum courant, ce qui rend les scripts plus courts et moins sujets aux erreurs.

La fonction travaille sur le tableau tel qu'il existe au moment de l'appel. Les tableaux en ProBuilder persistent d'un bar à l'autre, donc un tableau qui reçoit un nouvel élément par bar accumule l'historique, et ArrayMax reflète tout ce qui a été stocké jusque-là, pas seulement le bar courant. Pour limiter le résultat à une fenêtre glissante, soit écrasez un ensemble fixe d'indices, soit videz le tableau avec Unset avant de le remplir à nouveau.

Si le tableau ne contient aucun élément, ArrayMax renvoie une valeur indéfinie. Protéger l'appel avec IsSet ou vérifier LastSet évite d'injecter un résultat indéfini dans les calculs suivants.

ArrayMax diffère de Highest, qui travaille sur des séries de prix sur un nombre fixe de bars, et de MAX, qui compare exactement deux valeurs scalaires. ArrayMax est la seule des trois à opérer sur une collection arbitraire remplie par l'utilisateur.

Exemples

Exemple 1, Le plus haut de cinq prix stockés (Indicateur)

probuilder
// Store five closing prices in an array
$prices[1] = 130
$prices[2] = 135
$prices[3] = 128
$prices[4] = 140
$prices[5] = 138

// Extract the largest stored value
highestPrice = ArrayMax($prices)
RETURN highestPrice

Le tableau contient cinq valeurs et ArrayMax renvoie 140, la plus grande d'entre elles. C'est l'usage canonique : remplir, puis interroger.

Exemple 2, Niveau de breakout à partir de swing highs enregistrés (ProOrder)

probuilder
DEFPARAM CumulateOrders = false

// Record the high of each bar where RSI was above 60
IF RSI[14](close) > 60 THEN
  $swingHighs[LastSet($swingHighs) + 1] = high
ENDIF

// Enter long on a break above the strongest recorded high
IF IsSet($swingHighs[1]) THEN
  breakoutLevel = ArrayMax($swingHighs)
  IF close CROSSES OVER breakoutLevel THEN
    BUY 1 CONTRACT AT MARKET
  ENDIF
ENDIF

SET STOP %LOSS 2

La stratégie ajoute un plus haut au tableau chaque fois que le momentum est fort, puis utilise ArrayMax pour dériver un seuil de breakout à partir de tous les plus hauts enregistrés.

Exemple 3, Filtre de pic de volume (ProScreener)

probuilder
// Collect the volume of the last 20 bars into an array
FOR i = 1 TO 20 DO
  $vols[i] = volume[i]
NEXT

// Flag instruments whose current volume exceeds every stored value
maxVol = ArrayMax($vols)
SCREENER[volume > maxVol] (volume AS "Volume")

Le screener stocke les 20 lectures de volume précédentes, puis ne conserve que les instruments dont le volume de la bar en cours dépasse l'ArrayMax de cette fenêtre.

Erreurs et pièges courants

  • L'argument doit être un tableau. Passer une simple variable, une série de prix ou un résultat d'indicateur produit une erreur de compilation. Seules les variables préfixées par $ et indexées avec des crochets conviennent.
  • Un tableau vide renvoie undefined. Appeler ArrayMax avant qu'un élément ait été affecté renvoie une valeur indéfinie qui se propage silencieusement dans les calculs. Vérifiez IsSet($array[index]) ou LastSet d'abord.
  • Les tableaux s'accumulent au fil des bars. Un tableau alimenté à chaque bar grandit pendant toute la vie du graphique, ArrayMax couvre donc tout l'historique accumulé. Pour un maximum glissant, réutilisez une plage d'index fixe ou videz le tableau avec Unset.
  • Pas un substitut à Highest. Pour le maximum d'une série intégrée sur les n derniers bars, Highest[n](series) est plus simple et plus rapide que de copier les valeurs dans un tableau.
  • ArrayMin, renvoie la plus petite valeur stockée dans un tableau.
  • ArraySort, ordonne les éléments d'un tableau par ordre croissant ou décroissant.
  • IsSet, teste si un élément donné d'un tableau a été affecté.
  • LastSet, renvoie l'indice le plus élevé attribué dans un tableau.
  • Unset, efface un tableau ou un seul élément.
  • Highest, valeur la plus élevée d'une série sur un nombre fixe de bars.
  • MAX, la plus grande de deux valeurs scalaires.
  • BarIndex, position du bar courant dans les données chargées.