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

Unset

Unset efface toutes les valeurs stockées d'un tableau ProBuilder en un seul appel, ramenant le tableau à un état vide pour qu'il puisse être rempli ultérieurement avec de nouvelles données.

Syntaxe

probuilder
Unset($array)

Paramètres

NomTypePar défautDescription
$arraytableaurequisLa variable tableau dont le contenu est effacé. Les noms de tableaux commencent toujours par $.

Comment ça marche

Unset efface d'un coup tous les éléments du tableau indiqué. Après l'appel, aucun index n'est plus considéré comme affecté : IsSet renvoie 0 pour chaque position et LastSet renvoie -1, exactement comme si le tableau n'avait jamais été écrit. La variable elle-même n'est pas supprimée, les affectations suivantes la remplissent normalement.

L'instruction existe parce que les tableaux persistent d'une barre à l'autre. Les valeurs écrites sur des barres antérieures restent disponibles sur les suivantes, ce qui rend les tableaux utiles comme buffers d'accumulation, mais cela signifie aussi que des données périmées subsistent tant qu'elles ne sont pas explicitement effacées. Unset est l'interrupteur de réinitialisation de cette persistance.

Les schémas typiques lient la réinitialisation à un événement de marché ou à une limite de calendrier : vider un buffer de séance quand un nouveau jour de bourse commence, abandonner les statistiques collectées quand le prix franchit un niveau clé, ou vider un tableau temporaire au début d'un calcul par barre avant de le remplir à nouveau. Seul le tableau nommé est affecté, les autres tableaux et les variables simples conservent leurs valeurs.

Lire un élément après Unset sans l'avoir réassigné renvoie l'état non assigné plutôt que l'ancienne valeur ; tout code qui consomme le tableau doit donc soit le remplir à nouveau, soit vérifier IsSet avant la lecture.

Exemples

Exemple 1, Vider un buffer lors d'une cassure baissière (Indicateur)

probuilder
// Fill the array with moving average values
FOR i = 0 TO 19 DO
  $Array1[i] = average[i](close)
NEXT

// Reset the buffer when price breaks the 20-bar low
IF close crosses under low[20] THEN
  Unset($Array1)
ENDIF
RETURN lastset($Array1) AS "filled up to index"

Le tableau conserve des valeurs moyennes jusqu'à ce que la condition de cassure baissière se déclenche, moment où Unset le vide pour qu'il puisse être reconstruit à partir de données fraîches.

Exemple 2, Réinitialiser les statistiques de séance chaque jour (ProOrder)

probuilder
// Collect the range of every bar during the session
IF intradaybarindex = 0 THEN
  // new trading day, discard yesterday's data
  Unset($barRanges)
ENDIF
$barRanges[max(0, lastset($barRanges) + 1)] = high - low

// Trade only when today already shows expanding ranges
IF lastset($barRanges) >= 5 THEN
  IF high - low > arraymax($barRanges) * 0.9 AND NOT onmarket THEN
    BUY 1 CONTRACT AT MARKET
  ENDIF
ENDIF

SET STOP %LOSS 1

Unset s'exécute sur la première barre de chaque jour, le tableau de statistiques ne décrit donc jamais que la séance en cours.

Exemple 3, Tableau temporaire reconstruit à chaque barre (ProScreener)

probuilder
// Start from an empty scratch buffer on each evaluation
Unset($gains)
FOR k = 0 TO 9 DO
  IF close[k] > close[k + 1] THEN
    $gains[k] = close[k] - close[k + 1]
  ENDIF
NEXT

// Sum only the indices that were actually set
total = 0
FOR k = 0 TO 9 DO
  IF isset($gains[k]) THEN
    total = total + $gains[k]
  ENDIF
NEXT

SCREENER[total > 0] (total AS "10-bar gain sum")

Comme les tableaux persistent entre les barres, l'Unset en tête garantit que le buffer ne contient que des valeurs calculées pour la barre courante.

Erreurs et pièges courants

  • Lire après avoir effacé. Les éléments lus après Unset sont non affectés, et non des restes garantis à zéro. Remplissez à nouveau le tableau ou protégez les lectures avec IsSet avant de consommer les valeurs.
  • Oublier que les tableaux persistent. Omettre Unset ne déclenche pas d'erreur, cela mélange silencieusement les données d'anciennes barres aux nouveaux calculs. Les buffers reconstruits par barre ou par séance nécessitent une réinitialisation explicite.
  • Effacer plus que prévu. Unset efface toujours l'intégralité du tableau. Il n'existe pas de forme par index, retirer un seul élément exige de reconstruire le tableau sans celui-ci.
  • LastSet renvoie -1 ensuite. Le code qui ajoute avec $array[lastset($array) + 1] fonctionne encore après Unset car -1 + 1 = 0, mais un code qui lit $array[lastset($array)] sans garde indexe -1.
  • IsSet, teste si un index de tableau précis contient une valeur.
  • LastSet, renvoie l'index assigné le plus élevé, -1 après Unset.
  • ArrayMax, plus grande valeur actuellement stockée dans un tableau.
  • ArrayMin, plus petite valeur actuellement stockée dans un tableau.
  • ArraySort, trie le contenu d'un tableau sur place.
  • ONCE, initialisation unique pour les variables simples.
  • BarIndex, position de la barre courante, souvent associée aux tableaux comme index.