AND
AND in ProBuilder is een logische operator die voorwaarden combineert en alleen true teruggeeft wanneer elke operand true is. Syntaxis, voorrang en voorbeelden.
Syntaxis
condition1 AND condition2Hoe het werkt
AND evalueert de condities aan beide zijden en geeft alleen true terug als beide waar zijn. Meer condities aaneenschakelen met extra AND operatoren maakt de test nog strenger, omdat elke gekoppelde voorwaarde moet gelden om het resultaat true te maken.
Operatorprioriteit is van belang wanneer AND, OR, en NOT in dezelfde expressie voorkomen. NOT bindt het sterkst, dan AND, dan OR. Dus a OR b AND c wordt gelezen als a OR (b AND c). Wanneer de bedoelde groepering niet duidelijk is, zet de onderdelen tussen haakjes. Dat maakt de logica expliciet en neemt elke twijfel weg over hoe de expressie wordt geparseerd.
AND werkt op dezelfde manier in ProBuilder-indicatoren, ProScreener, ProBacktest en ProOrder, omdat alle vier booleaanse expressies met dezelfde regels evalueren.
Voorbeelden
Voorbeeld 1, Twee voorwaarden in een indicator (Indicator)
// 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 signalDit is het patroon uit de officiële referentie. Het signaal vuurt alleen wanneer de huidige RSI boven 50 staat en de vorige RSI eronder lag, zodat beide delen van de AND moet waar zijn op dezelfde bar.
Voorbeeld 2, Filteren met meerdere criteria (ProScreener)
// Uptrend with volume confirmation
trendUp = close > Average[200](close)
volumeUp = Volume > Average[20](Volume)
cond = trendUp AND volumeUp
SCREENER[cond]De screener geeft alleen instrumenten waar de koers boven zijn 200-periodegemiddelde staat en het volume boven zijn 20-periodegemiddelde. Beide voorwaarden zijn vereist.
Voorbeeld 3, Een instap beschermen (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
ENDIFDe entry is alleen toegestaan wanneer er geen open long positie is en de prijs boven het 50-perioden gemiddelde kruist. Een positiebewaking combineren met een signaal is een van de meest voorkomende toepassingen van AND.
Veelvoorkomende fouten en valkuilen
- Voorrang met OR.
a AND b OR cwordt geparseerd als(a AND b) OR c, wat vaak niet de bedoeling is. Voeg haakjes toe om de gewenste groepering vast te leggen. - AND is niet bitsgewijs. ProBuilder heeft geen aparte bitwise-operator.
ANDwerkt altijd op booleaanse condities, niet op getallen die als bitpatronen worden behandeld. - Vergelijken voordat je combineert. Elke zijde van
ANDmoet zelf een voorwaarde zijn.close AND high > lowis ongeldig omdatcloseis op zichzelf een waarde, geen boolean. Schrijf een volledige vergelijking zoalsclose > open AND high > low. - Een filter te strak maken. Elke toegevoegde
ANDconditie kan het aantal treffers alleen verkleinen. Een screener die niets teruggeeft, heeft vaak één conditie te veel.
Gerelateerde instructies
OR, waar wanneer ten minste één operand waar is.XOR, waar wanneer precies één operand waar is.NOT, keert een enkele voorwaarde om.IF, het voorwaardelijke blok waarin deze operatoren meestal staan.THEN,ELSE, structureer de takken van eenIF.CROSSES OVER,CROSSES UNDER, voorwaarden die vaak worden gecombineerd metAND.