ArrayMin
ArrayMin restituisce il valore più piccolo memorizzato in un array ProBuilder. Usalo per estrarre il minimo dai dati raccolti in indicatori e strategie.
Sintassi
result = ArrayMin($MyArray)Parametri
| Nome | Tipo | Predefinito | Descrizione |
|---|---|---|---|
$MyArray | array | obbligatorio | La variabile array da analizzare. I nomi degli array iniziano sempre con $. |
Come funziona
ArrayMin esamina gli elementi assegnati di un array e restituisce il singolo valore più piccolo. È la controparte di ArrayMax ed evita il codice ripetitivo di iterare sugli indici tenendo traccia di un minimo progressivo.
Il risultato riflette l'intero contenuto dell'array al momento della chiamata. Poiché gli array di ProBuilder persistono tra i bar, un array che guadagna un elemento su ogni bar continua a crescere, e ArrayMin copre quindi tutto lo storico accumulato anziché una finestra recente. Per valutare solo i dati recenti, sovrascrivi un intervallo fisso di indici su ogni bar oppure svuota l'array con Unset prima di riempirlo di nuovo.
ArrayMin funziona solo con dati numerici. Quando l'array è vuoto, la funzione restituisce un valore indefinito, quindi le chiamate dovrebbero essere protette con IsSet o un LastSet controlla quando il popolamento dell'array è condizionale.
Per le serie integrate esistono alternative più semplici: Lowest[n](series) restituisce il minimo di una serie sugli ultimi n bar, e MIN(a, b) confronta due scalari. ArrayMin è lo strumento giusto quando i valori sono stati raccolti manualmente in un array, per esempio campioni filtrati che non corrispondono a barre consecutive.
Esempi
Esempio 1, Il più basso di cinque prezzi memorizzati (Indicatore)
// 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 lowestPriceL'array contiene cinque valori e ArrayMin restituisce 128, il più piccolo di essi.
Esempio 2, Stop protettivo dai minimi di pullback registrati (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
ENDIFLa strategia accumula i minimi di pullback in un array e usa ArrayMin per collocare lo stop sotto il minimo registrato più profondo.
Esempio 3, Nuovo minimo rispetto a una finestra memorizzata (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")Lo screener memorizza gli ultimi 20 minimi e mantiene solo gli strumenti il cui minimo corrente scende sotto l'ArrayMin di quella finestra.
Errori e insidie comuni
- L'argomento deve essere un array. Passare ad ArrayMin una semplice variabile o una serie di prezzi impedisce la compilazione. Solo
$-prefissate e indicizzate tra parentesi quadre, le variabili array sono accettate. - Un array vuoto restituisce undefined. Prima che venga assegnato un qualsiasi elemento, ArrayMin restituisce un valore indefinito che può corrompere silenziosamente i calcoli successivi. Verifica con
IsSetoLastSetprima di fare affidamento sul risultato. - I contenuti non numerici causano errori. La funzione è definita solo per dati numerici. I flag booleani memorizzati come 0 e 1 vanno bene, ma l'array deve contenere numeri.
- Lo storico continua ad accumularsi. Un array a cui si aggiunge un elemento a ogni barra rende ArrayMin un minimo di tutta la storia, non un minimo mobile. Riutilizza indici fissi o azzera con
Unsetper ottenere un risultato su finestra.
Istruzioni correlate
ArrayMax, restituisce il valore più grande memorizzato in un array.ArraySort, ordina gli elementi di un array in ordine crescente o decrescente.IsSet, verifica se un dato elemento di un array è stato assegnato.LastSet, restituisce l'indice più alto assegnato in un array.Unset, svuota un array o un singolo elemento.Lowest, il valore più basso di una serie su un numero fisso di bar.MIN, il minore di due valori scalari.BarIndex, posizione della bar corrente nei dati caricati.