ABS
ABS in ProBuilder restituisce il valore assoluto di un numero, la sua grandezza senza segno, così un input negativo diventa positivo. Sintassi, parametri ed esempi.
Sintassi
ABS(expression)Parametri
| Nome | Tipo | Descrizione |
|---|---|---|
expression | numero | Il valore numerico o la formula di cui viene restituito il valore assoluto. Può essere una costante, una variabile o un'espressione completa. |
Formula
ABS(x) = |x|Per qualsiasi input, ABS restituisce un valore nullo o positivo. Un input positivo passa inalterato, un input negativo ha il segno invertito e lo zero restituisce zero.
Come funziona
Su ogni bar ABS valuta il suo argomento e rimuove il segno. È una funzione pura, senza lookback e senza memoria, quindi ABS(close - open) fornisce la dimensione del corpo del bar corrente indipendentemente dal fatto che il bar abbia chiuso in rialzo o in ribasso. Questo lo rende lo strumento standard per misurare distanze, gap e deviazioni quando la direzione non conta.
ABS si abbina naturalmente con SGN, che restituisce il segno come -1, 0 o 1. Insieme scompongono un valore in magnitudine e direzione: value = SGN(value) * ABS(value).
Esempi
Esempio 1, Dimensione del corpo della bar corrente (Indicatore)
// Absolute distance between open and close, regardless of direction
bodySize = ABS(close - open)
RETURN bodySize AS "Body size"La sottrazione è negativa sui bar in discesa e positiva sui bar in salita. Racchiuderla in ABS restituisce il valore assoluto in entrambi i casi, quindi la serie tracciata è sempre zero o positiva.
Esempio 2, Movimenti ampi su una singola bar (ProScreener)
// Instruments whose last bar moved more than 2% in either direction
pct = ABS(close - close[1]) / close[1] * 100
SCREENER[pct > 2](pct AS "Abs move %")Usare ABS rende la scansione simmetrica: un calo del 2% e un rialzo del 2% rientrano entrambi. Senza di esso la condizione catturerebbe i movimenti in una sola direzione.
Esempio 3, Protezione dello stop basata sulla distanza (ProOrder)
// Block new entries when price sits far from its average
ma = Average[50](close)
gap = ABS(close - ma)
IF gap < close * 0.01 THEN
IF NOT LongOnMarket AND close CROSSES OVER ma THEN
BUY 1 CONTRACT AT MARKET
ENDIF
ENDIFABS(close - ma) misura quanto il prezzo si è allontanato dalla media mobile senza considerare da quale lato si trovi, quindi una sola soglia copre sia i casi di allontanamento verso l'alto sia quelli verso il basso.
Errori e insidie comuni
- Modifica solo i valori negativi.
ABSnon rende mai un valore più piccolo in modulo e non restituisce mai un negativo. Applicarlo a una serie già positiva non ha effetto e può nascondere un segno di cui avevi davvero bisogno. - La grandezza scarta la direzione. Dopo
ABSnon è possibile sapere se il valore originale era al rialzo o al ribasso. Conserva il valore grezzo, oppure usaSGN, se il segno conta in seguito. - Non è una funzione di arrotondamento.
ABS(-3.7)è3.7, non4. Per arrotondare usaROUND,CEILoFLOOR.
Istruzioni correlate
SGN, restituisce il segno di un valore come -1, 0 o 1, la direzione cheABSscarta.SQRT, radice quadrata, definita solo per input non negativi cheABSpuò fornire.SQUARE, eleva al quadrato un valore, un altro modo per eliminare il segno a costo della scala.MAX, il maggiore tra due valori, utile conABSper limitare le distanze.MIN, il minore di due valori.ROUND, arrotonda all'intero o al decimale più vicino, a differenza diABS.Momentum, variazione di prezzo grezza spesso racchiusa inABSper misurare la dimensione.Variation, variazione percentuale tra bar.