ArrayMin
ArrayMin returnerar det minsta värdet som lagras i en ProBuilder-array. Använd den för att extrahera minimum från insamlade datapunkter i indikatorer och strategier.
Syntax
result = ArrayMin($MyArray)Parametrar
| Namn | Typ | Standard | Beskrivning |
|---|---|---|---|
$MyArray | array | obligatorisk | Arrayvariabeln som ska skannas. Arraynamn börjar alltid med $. |
Så fungerar det
ArrayMin granskar de tilldelade elementen i en array och returnerar det enskilt minsta värdet. Den är motsvarigheten till ArrayMax och sparar standardkoden för att iterera över index samtidigt som ett löpande minimum hålls.
Resultatet speglar arrayens hela innehåll vid tidpunkten för anropet. Eftersom ProBuilder-arrayer bevaras mellan barer fortsätter en array som får ett element på varje bar att växa, och ArrayMin täcker då hela den ackumulerade historiken snarare än ett nyligt fönster. För att bara utvärdera färska data kan du skriva över ett fast indexintervall varje bar eller rensa arrayen med Unset innan den fylls på igen.
ArrayMin fungerar bara med numeriska data. När arrayen är tom returnerar funktionen ett odefinierat värde, så anrop bör skyddas med IsSet eller en LastSet kontrollera när fyllningen av arrayen är villkorlig.
För inbyggda serier finns det enklare alternativ: Lowest[n](series) returnerar minimum av en serie över de senaste n barerna, och MIN(a, b) jämför två skalärer. ArrayMin är rätt verktyg när värdena samlats in manuellt i en array, till exempel filtrerade stickprov som inte motsvarar på varandra följande barer.
Exempel
Exempel 1, Lägsta av fem lagrade priser (Indicator)
// 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 lowestPriceArrayen innehåller fem värden och ArrayMin returnerar 128, det minsta av dem.
Exempel 2, Skyddande stopp från registrerade pullback-lows (ProOrder)
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
ENDIFStrategin ackumulerar pullback-lows i en array och använder ArrayMin för att placera stoppet under den djupaste registrerade bottnen.
Exempel 3, Ny low jämfört med ett lagrat fönster (ProScreener)
// 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")Screenern lagrar de senaste 20 lows och behåller endast instrument vars aktuella low underskrider ArrayMin för det fönstret.
Vanliga fel och fallgropar
- Argumentet måste vara en array. Att ge ArrayMin en vanlig variabel eller en prisserie går inte att kompilera. Endast
$-prefixade arrayvariabler med hakparentesindex accepteras. - Tom array returnerar undefined. Innan något element har tilldelats ger ArrayMin ett odefinierat värde som i tysthet kan förstöra efterföljande beräkningar. Testa med
IsSetellerLastSetinnan du förlitar dig på resultatet. - Icke-numeriskt innehåll orsakar fel. Funktionen är definierad endast för numeriska data. Booleska flaggor lagrade som 0 och 1 är okej, men arrayen måste innehålla tal.
- Historiken fortsätter att ackumuleras. En array som fylls på varje bar gör ArrayMin till ett minimum för hela historiken, inte ett rullande. Återanvänd fasta index eller rensa med
Unsetför att få ett fönstrat resultat.
Relaterade instruktioner
ArrayMax, returnerar det största värdet som lagras i en array.ArraySort, sorterar arrayelement i stigande eller fallande ordning.IsSet, testar om ett givet arrayelement har tilldelats.LastSet, returnerar det högsta index som tilldelats i en array.Unset, rensar en array eller ett enskilt element.Lowest, det lägsta värdet i en serie över ett fast antal barer.MIN, det mindre av två skalära värden.BarIndex, den aktuella barens position i inläst data.