XOR
XOR en ProBuilder es el operador OR exclusivo, verdadero cuando exactamente una de dos condiciones es verdadera. Cubre la sintaxis, la regla de exclusividad y ejemplos.
Sintaxis
result = expression1 XOR expression2Cómo funciona
XOR compara dos condiciones booleanas y devuelve verdadero solo cuando difieren, es decir cuando una es verdadera y la otra falsa. Si ambas condiciones son verdaderas, o ambas falsas, el resultado es falso. Esta es la diferencia con OR, que también es verdadero cuando ambos operandos son verdaderos.
Como los demás operadores lógicos, XOR puede combinarse con AND, OR, y NOT. NOT tiene mayor precedencia, luego AND, luego OR, así que mezclar XOR dentro de una expresión mayor queda más claro con paréntesis. XOR se evalúa igual en los indicadores de ProBuilder, en ProScreener, en ProBacktest y en ProOrder.
Ejemplos
Ejemplo 1, Exactamente una comparación verdadera (Indicador)
// 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 resultEste es el patrón de la referencia oficial. Aquí c es mayor que a pero no b, por lo que exactamente una comparación es verdadera y result se establece en 1. Si c fuera mayor que ambos, el XOR sería falso.
Ejemplo 2, Un breakout pero no los dos (ProScreener)
// 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]El filtro devuelve instrumentos en los que solo una de las dos medidas de máximos marcó un nuevo extremo, excluyendo aquellos en los que ambas se activaron a la vez.
Ejemplo 3, Señales contradictorias (ProOrder)
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
ENDIFLa entrada permite una posición solo cuando los dos filtros de medias móviles discrepan, uno por encima y otro por debajo. Cuando ambos coinciden, en cualquier dirección, la XOR es falso y no se coloca ninguna orden.
Errores y trampas habituales
- XOR no es OR. Los dos se comportan igual salvo que ambos operandos sean verdaderos. Cuando ambos lo son,
ORes verdadero peroXORes falso. ElijaXORsolo cuando necesites excluir el caso en que ambos son verdaderos. - Cada lado debe ser una condición.
close XOR highno es válido porque esos son valores, no booleanos. Usa comparaciones completas en cada lado. - Precedencia en expresiones mixtas. Cuando
XORva junto aANDoOR, encierra las partes entre paréntesis para hacer explícita la agrupación, como en el Ejemplo 3. - Encadenarlo rara vez es lo que quieres.
a XOR b XOR ces verdadero cuando un número impar de los tres es verdadero, lo que rara vez es el significado buscado. Estructura la lógica con paréntesis explícitos en su lugar.
Instrucciones relacionadas
OR, verdadero cuando al menos uno de los operandos es verdadero, incluidos ambos.AND, verdadero solo cuando todos los operandos son verdaderos.NOT, invierte una sola condición.IF, el bloque condicional en el que suelen aparecer estos operadores.THEN,ELSE, estructura las ramas de unIF.CROSSES OVER,CROSSES UNDER, condiciones a menudo combinadas con operadores lógicos.