AND
AND en ProBuilder es un operador lógico que combina condiciones y devuelve verdadero solo cuando todos los operandos son verdaderos. Sintaxis, precedencia y ejemplos.
Sintaxis
condition1 AND condition2Cómo funciona
AND evalúa las condiciones de ambos lados y devuelve verdadero solo si las dos son verdaderas. Encadenar más condiciones con nuevos AND operadores restringe aún más la prueba, ya que toda condición enlazada debe cumplirse para que el resultado sea verdadero.
La precedencia de operadores importa cuando AND, OR, y NOT aparecen en la misma expresión. NOT tiene mayor precedencia, luego AND, luego OR. Así que a OR b AND c se lee como a OR (b AND c). Cuando la agrupación pretendida no es obvia, envuelve las partes en paréntesis. Hace la lógica explícita y elimina cualquier duda sobre cómo se interpreta la expresión.
AND funciona igual en los indicadores ProBuilder, ProScreener, ProBacktest y ProOrder, porque los cuatro evalúan expresiones booleanas con las mismas reglas.
Ejemplos
Ejemplo 1, Dos condiciones en un indicador (Indicador)
// RSI crossing above 50 from below on this bar
myRSIvalue = RSI[14](close)
myValueCondition = 50
IF (myRSIvalue > myValueCondition AND myRSIvalue[1] < myValueCondition) THEN
signal = 1
ELSE
signal = 0
ENDIF
RETURN signalEste es el patrón de la referencia oficial. La señal se dispara solo cuando el RSI actual está por encima de 50 y el RSI anterior estaba por debajo, de modo que ambas partes del AND debe ser cierto en el mismo bar.
Ejemplo 2, Filtrado con varios criterios (ProScreener)
// Uptrend with volume confirmation
trendUp = close > Average[200](close)
volumeUp = Volume > Average[20](Volume)
cond = trendUp AND volumeUp
SCREENER[cond]El screener devuelve solo los instrumentos donde el precio se sitúa por encima de su media de 200 periodos y el volumen está por encima de su media de 20 periodos. Ambas condiciones son obligatorias.
Ejemplo 3, Proteger una entrada (ProOrder)
DEFPARAM CumulateOrders = false
// Enter long only when flat and the setup holds
IF NOT LongOnMarket AND close CROSSES OVER Average[50](close) THEN
BUY 1 CONTRACT AT MARKET
ENDIFLa entrada solo se permite cuando no hay una posición long abierta y el precio cruza por encima de la media de 50 periodos. Combinar una protección de posición con una señal es uno de los usos más habituales de AND.
Errores y trampas habituales
- Precedencia con OR.
a AND b OR cse interpreta como(a AND b) OR c, lo que a menudo no es lo que se pretendía. Añade paréntesis para indicar la agrupación que quieres. - AND no es a nivel de bits. ProBuilder no tiene un operador bit a bit aparte.
ANDsiempre opera sobre condiciones booleanas, no sobre números tratados como patrones de bits. - Comparar antes de combinar. Cada lado de
ANDdebe ser a su vez una condición.close AND high > lowno es válido porqueclosepor sí solo es un valor, no un booleano. Escribe una comparación completa comoclose > open AND high > low. - Endurecer demasiado un filtro. Cada añadido
ANDcondición solo puede reducir el número de coincidencias. Un screener que no devuelve nada suele tener una condición de más.
Instrucciones relacionadas
OR, verdadero cuando al menos un operando es verdadero.XOR, verdadero cuando exactamente un operando es verdadero.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 que se combinan con frecuencia conAND.