Iscriviti ora
Operatori/probuilder · probacktest · proorder · proscreener

XOR

XOR in ProBuilder è l'operatore OR esclusivo, vero quando esattamente una delle due condizioni è vera. Copre la sintassi, la regola di esclusività e gli esempi.

Sintassi

probuilder
result = expression1 XOR expression2

Come funziona

XOR confronta due condizioni booleane e restituisce vero solo quando differiscono, cioè quando una è vera e l'altra falsa. Se entrambe le condizioni sono vere, o entrambe false, il risultato è falso. Questa è la differenza rispetto a OR, che è vero anche quando entrambi gli operandi sono veri.

Come gli altri operatori logici, XOR può essere combinato con AND, OR, e NOT. NOT ha la precedenza maggiore, poi AND, poi OR, quindi mescolare XOR in un'espressione più ampia è più chiaro con le parentesi. XOR si valuta nello stesso modo negli indicatori ProBuilder, in ProScreener, ProBacktest e ProOrder.

Esempi

Esempio 1, Esattamente un confronto vero (Indicatore)

probuilder
// c beats a but not b, or beats b but not a
a = 5
b = 7
c = 6
IF (c > a XOR c > b) THEN
    result = 1
ELSE
    result = 0
ENDIF
RETURN result

Questo è il pattern della documentazione ufficiale. Qui c è maggiore di a ma non b, quindi esattamente un confronto è vero e result è impostato a 1. Se c fosse maggiore di entrambi, il XOR sarebbe falso.

Esempio 2, Un breakout ma non entrambi (ProScreener)

probuilder
// New 20-bar high on close or on high, but not on both at once
newCloseHigh = close >= Highest[20](close)
newHigh = high >= Highest[20](high)
cond = newCloseHigh XOR newHigh
SCREENER[cond]

Il filtro restituisce gli strumenti in cui solo una delle due misure di massimo ha stampato un nuovo estremo, escludendo quelli in cui entrambe si sono attivate insieme.

Esempio 3, Segnali in conflitto (ProOrder)

probuilder
DEFPARAM CumulateOrders = false
// Act only when one filter agrees and the other does not
fast = close > Average[20](close)
slow = close > Average[200](close)
IF NOT OnMarket AND (fast XOR slow) THEN
    BUY 1 CONTRACT AT MARKET
ENDIF

L'ingresso consente una posizione solo quando i due filtri a media mobile sono in disaccordo, uno sopra e uno sotto. Quando concordano entrambi, in una direzione o nell'altra, il XOR è falsa e nessun ordine viene inviato.

Errori e insidie comuni

  • XOR non è OR. I due si comportano allo stesso modo a meno che entrambi gli operandi siano veri. Quando entrambi sono veri, OR è vera ma XOR è falso. Scegli XOR solo quando devi escludere il caso in cui entrambi sono veri.
  • Ogni lato deve essere una condizione. close XOR high non è valido perché quelli sono valori, non booleani. Usa confronti completi su entrambi i lati.
  • Precedenza nelle espressioni miste. Quando XOR si colloca accanto a AND o OR, racchiudi le parti per rendere esplicito il raggruppamento, come nell'Esempio 3.
  • Concatenarlo è raramente ciò che si desidera. a XOR b XOR c è vero quando un numero dispari dei tre è vero, il che raramente è il significato voluto. Struttura invece la logica con parentesi esplicite.
  • OR, vero quando almeno un operando è vero, inclusi entrambi.
  • AND, vero solo quando ogni operando è vero.
  • NOT, inverte una singola condizione.
  • IF, il blocco condizionale in cui questi operatori di solito si trovano.
  • THEN, ELSE, struttura i rami di un IF.
  • CROSSES OVER, CROSSES UNDER, condizioni spesso combinate con operatori logici.