Bli medlem i dag
Instruksjoner/probuilder · probacktest · proorder · proscreener

ArrayMax

ArrayMax returnerer den største verdien som er lagret i et ProBuilder-array. Bruk den til å hente ut maksimum fra innsamlede datapunkter i indikatorer og strategier.

Syntaks

probuilder
result = ArrayMax($MyArray)

Parametere

NavnTypeStandardBeskrivelse
$MyArrayarraypåkrevdArray-variabelen som skal skannes. Array-navn starter alltid med $.

Slik fungerer det

ArrayMax undersøker hvert element som er tilordnet i arrayet og returnerer den enkeltstående største verdien. Den erstatter det vanlige mønsteret med å løkke over indekser og sammenligne hvert element mot et løpende maksimum, noe som holder skriptene kortere og mindre feilutsatte.

Funksjonen opererer på arrayet slik det er i det øyeblikket kallet skjer. Arrayer i ProBuilder består fra bar til bar, så et array som får ett nytt element per bar samler opp historikk, og ArrayMax gjenspeiler alt som er lagret så langt, ikke bare den gjeldende baren. For å begrense resultatet til et rullerende vindu kan du enten overskrive et fast sett av indekser eller tømme arrayet med Unset før den fylles på nytt.

Hvis matrisen ikke inneholder noen elementer i det hele tatt, returnerer ArrayMax en udefinert verdi. Å sikre kallet med IsSet eller å sjekke LastSet unngår at et udefinert resultat føres inn i senere beregninger.

ArrayMax skiller seg fra Highest, som virker på prisserier over et fast antall barer, og fra MAX, som sammenligner nøyaktig to skalarverdier. ArrayMax er den eneste av de tre som opererer på en vilkårlig brukerfylt samling.

Eksempler

Eksempel 1, Høyeste av fem lagrede priser (Indikator)

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

Arrayet inneholder fem verdier, og ArrayMax returnerer 140, den største av dem. Dette er den kanoniske bruken: fyll opp, deretter spør.

Eksempel 2, Breakout-nivå fra registrerte swing-topper (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

Strategien legger en topp til arrayet hver gang momentum er sterkt, og bruker deretter ArrayMax til å utlede en breakout-terskel fra alle registrerte topper.

Eksempel 3, Filter for volumtopper (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")

Screeneren lagrer de 20 forrige volumavlesningene og beholder deretter bare instrumenter der volumet på gjeldende bar overstiger ArrayMax for det vinduet.

Vanlige feil og fallgruver

  • Argumentet må være en array. Å sende inn en vanlig variabel, en prisserie eller et indikatorresultat gir en kompileringsfeil. Bare variabler med prefikset $ og indeksert med klammer kvalifiserer.
  • En tom array returnerer undefined. Å kalle ArrayMax før noe element er tilordnet gir en udefinert verdi som forplanter seg stille gjennom regneoperasjonene. Sjekk IsSet($array[index]) eller LastSet først.
  • Arrayer akkumulerer på tvers av barer. Et array som utvides på hver bar, vokser så lenge diagrammet lever, så ArrayMax dekker hele den akkumulerte historikken. For et rullerende maksimum, gjenbruk et fast indeksområde eller tøm arrayet med Unset.
  • Ikke en erstatning for Highest. For maksimum av en innebygd serie over de siste n barer, Highest[n](series) er enklere og raskere enn å kopiere verdier inn i en array.
  • ArrayMin, returnerer den minste verdien lagret i en array.
  • ArraySort, sorterer array-elementer i stigende eller synkende rekkefølge.
  • IsSet, tester om et gitt array-element er tilordnet.
  • LastSet, returnerer den høyeste indeksen som er tilordnet i en array.
  • Unset, tømmer en array eller et enkelt element.
  • Highest, høyeste verdi i en serie over et fast antall barer.
  • MAX, den største av to skalarverdier.
  • BarIndex, posisjonen til gjeldende bar i de innlastede dataene.