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

ArrayMin

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

Syntaxe

probuilder
result = ArrayMin($MyArray)

Paramètres

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

Comment ça marche

ArrayMin examine les éléments affectés d'un tableau et renvoie la plus petite valeur. C'est le pendant de ArrayMax et évite d'écrire la boucle sur les indices avec suivi d'un minimum courant.

Le résultat reflète l'intégralité du contenu du tableau au moment de l'appel. Comme les tableaux ProBuilder persistent d'un bar à l'autre, un tableau qui gagne un élément à chaque bar continue de grossir, et ArrayMin couvre alors tout l'historique accumulé plutôt qu'une fenêtre récente. Pour n'évaluer que les données récentes, écrasez une plage fixe d'indices à chaque bar ou videz le tableau avec Unset avant de le remplir à nouveau.

ArrayMin ne fonctionne qu'avec des données numériques. Lorsque le tableau est vide, la fonction renvoie une valeur indéfinie, les appels doivent donc être protégés par IsSet ou un LastSet vérifiez lorsque le remplissage du tableau est conditionnel.

Pour les séries intégrées, il existe des solutions plus simples : Lowest[n](series) renvoie le minimum d'une série sur les n derniers bars, et MIN(a, b) compare deux scalaires. ArrayMin est l'outil approprié lorsque les valeurs ont été rassemblées manuellement dans un tableau, par exemple des échantillons filtrés qui ne correspondent pas à des bars consécutifs.

Exemples

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

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

// Extract the smallest stored value
lowestPrice = ArrayMin($myPrices)
RETURN lowestPrice

Le tableau contient cinq valeurs et ArrayMin renvoie 128, la plus petite d'entre elles.

Exemple 2, Stop de protection à partir des plus bas de pullback enregistrés (ProOrder)

probuilder
DEFPARAM CumulateOrders = false

// Record the low of each bar where RSI dipped below 40
IF RSI[14](close) < 40 THEN
  $pullbackLows[LastSet($pullbackLows) + 1] = low
ENDIF

// Long entry on a moving average cross, stop below the weakest recorded low
IF Average[20](close) CROSSES OVER Average[50](close) AND IsSet($pullbackLows[1]) THEN
  supportLevel = ArrayMin($pullbackLows)
  BUY 1 CONTRACT AT MARKET
  SET STOP PRICE supportLevel
ENDIF

La stratégie accumule les plus bas de pullback dans un tableau et utilise ArrayMin pour placer le stop sous le plus bas enregistré le plus profond.

Exemple 3, Nouveau plus bas face à une fenêtre stockée (ProScreener)

probuilder
// Collect the lows of the previous 20 bars into an array
FOR i = 1 TO 20 DO
  $lows[i] = low[i]
NEXT

// Flag instruments printing a low beneath every stored value
windowMin = ArrayMin($lows)
SCREENER[low < windowMin] (close AS "Last price")

Le screener stocke les 20 derniers plus bas et ne conserve que les instruments dont le plus bas actuel passe sous l'ArrayMin de cette fenêtre.

Erreurs et pièges courants

  • L'argument doit être un tableau. Passer à ArrayMin une simple variable ou une série de prix empêche la compilation. Seuls $-préfixées et indexées par crochets, les variables de tableau sont acceptées.
  • Un tableau vide renvoie undefined. Avant qu'un élément ne soit affecté, ArrayMin renvoie une valeur indéfinie qui peut corrompre silencieusement les calculs en aval. Testez avec IsSet ou LastSet avant de se fier au résultat.
  • Un contenu non numérique provoque des erreurs. La fonction n'est définie que pour des données numériques. Les drapeaux booléens stockés sous forme de 0 et de 1 conviennent, mais le tableau doit contenir des nombres.
  • L'historique continue de s'accumuler. Un tableau auquel on ajoute un élément à chaque bar fait d'ArrayMin un minimum depuis l'origine, et non un minimum glissant. Réutilisez des indices fixes ou videz-le avec Unset pour obtenir un résultat fenêtré.
  • ArrayMax, renvoie la plus grande 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.
  • Lowest, la valeur la plus basse d'une série sur un nombre fixe de bars.
  • MIN, la plus petite de deux valeurs scalaires.
  • BarIndex, position du bar courant dans les données chargées.