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

ArrayMin

ArrayMin geeft de kleinste waarde die in een ProBuilder-array is opgeslagen. Gebruik het om het minimum uit verzamelde datapunten in indicatoren en strategieën te halen.

Syntaxis

probuilder
result = ArrayMin($MyArray)

Parameters

NaamTypeStandaardBeschrijving
$MyArrayarrayverplichtDe arrayvariabele die gescand wordt. Arraynamen beginnen altijd met $.

Hoe het werkt

ArrayMin inspecteert de toegewezen elementen van een array en geeft de enige kleinste waarde terug. Het is de tegenhanger van ArrayMax en bespaart je het standaardwerk van het doorlopen van indices terwijl je een lopend minimum bijhoudt.

Het resultaat weerspiegelt de volledige inhoud van de array op het moment van de aanroep. Omdat arrays in ProBuilder tussen bars blijven bestaan, blijft een array die op elke bar een element krijgt groeien, en dekt ArrayMin dan de hele opgebouwde historie in plaats van een recent venster. Om alleen recente data te beoordelen, overschrijf je elke bar een vast bereik van indices of leeg je de array met Unset voordat je het opnieuw vult.

ArrayMin werkt alleen met numerieke data. Wanneer de array leeg is, retourneert de functie een ongedefinieerde waarde, dus aanroepen moeten worden afgeschermd met IsSet of een LastSet controle wanneer het vullen van de array voorwaardelijk is.

Voor ingebouwde reeksen zijn er eenvoudigere alternatieven: Lowest[n](series) geeft het minimum van een reeks over de laatste n bars, en MIN(a, b) vergelijkt twee scalairen. ArrayMin is het juiste gereedschap wanneer de waarden handmatig in een array zijn verzameld, bijvoorbeeld gefilterde steekproeven die niet op opeenvolgende bars vallen.

Voorbeelden

Voorbeeld 1, Laagste van vijf opgeslagen koersen (Indicator)

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

De array bevat vijf waarden en ArrayMin geeft 128, de kleinste daarvan.

Voorbeeld 2, Beschermende stop uit vastgelegde pullback-lows (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

De strategie verzamelt pullback-lows in een array en gebruikt ArrayMin om de stop onder de diepste vastgelegde low te plaatsen.

Voorbeeld 3, Nieuwe low tegenover een opgeslagen venster (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")

De screener slaat de laatste 20 lows op en houdt alleen instrumenten over waarvan de huidige low onder de ArrayMin van dat venster ligt.

Veelvoorkomende fouten en valkuilen

  • Het argument moet een array zijn. ArrayMin een gewone variabele of een prijsreeks geven compileert niet. Alleen $-voorvoegsel en met haken geïndexeerde arrayvariabelen worden geaccepteerd.
  • Een lege array geeft undefined terug. Voordat er een element is toegekend, geeft ArrayMin een ongedefinieerde waarde die stilletjes de verdere berekeningen kan verzieken. Test met IsSet of LastSet voordat je op het resultaat vertrouwt.
  • Niet-numerieke inhoud veroorzaakt fouten. De functie is alleen gedefinieerd voor numerieke data. Booleaanse vlaggen opgeslagen als 0 en 1 zijn in orde, maar de array moet getallen bevatten.
  • De historie blijft accumuleren. Een array waaraan op elke bar wordt toegevoegd, maakt van ArrayMin een minimum over de hele looptijd, niet een rollend minimum. Hergebruik vaste indices of leeg hem met Unset om een resultaat over een venster te krijgen.
  • ArrayMax, geeft de grootste in een array opgeslagen waarde terug.
  • ArraySort, sorteert array-elementen in op- of aflopende volgorde.
  • IsSet, test of een bepaald array-element is toegekend.
  • LastSet, geeft de hoogste toegekende index in een array terug.
  • Unset, wist een array of een enkel element.
  • Lowest, laagste waarde van een reeks over een vast aantal bars.
  • MIN, de kleinste van twee scalaire waarden.
  • BarIndex, positie van de huidige bar in de geladen data.