Iscriviti ora
Matematica/probuilder · probacktest · proorder · proscreener

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

probuilder
ABS(expression)

Parametri

NomeTipoDescrizione
expressionnumeroIl valore numerico o la formula di cui viene restituito il valore assoluto. Può essere una costante, una variabile o un'espressione completa.

Formula

codice
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)

probuilder
// 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)

probuilder
// 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)

probuilder
// 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
ENDIF

ABS(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. ABS non 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 ABS non è possibile sapere se il valore originale era al rialzo o al ribasso. Conserva il valore grezzo, oppure usa SGN, se il segno conta in seguito.
  • Non è una funzione di arrotondamento. ABS(-3.7) è 3.7, non 4. Per arrotondare usa ROUND, CEIL o FLOOR.
  • SGN, restituisce il segno di un valore come -1, 0 o 1, la direzione che ABS scarta.
  • SQRT, radice quadrata, definita solo per input non negativi che ABS può 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 con ABS per limitare le distanze.
  • MIN, il minore di due valori.
  • ROUND, arrotonda all'intero o al decimale più vicino, a differenza di ABS.
  • Momentum, variazione di prezzo grezza spesso racchiusa in ABS per misurare la dimensione.
  • Variation, variazione percentuale tra bar.