Word nu lid
Operatoren/probuilder · probacktest · proorder · proscreener

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

probuilder
condition1 AND condition2

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

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

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

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

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

De 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 c wordt 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. AND werkt altijd op booleaanse condities, niet op getallen die als bitpatronen worden behandeld.
  • Vergelijken voordat je combineert. Elke zijde van AND moet zelf een voorwaarde zijn. close AND high > low is ongeldig omdat close is op zichzelf een waarde, geen boolean. Schrijf een volledige vergelijking zoals close > open AND high > low.
  • Een filter te strak maken. Elke toegevoegde AND conditie kan het aantal treffers alleen verkleinen. Een screener die niets teruggeeft, heeft vaak één conditie te veel.
  • 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 een IF.
  • CROSSES OVER, CROSSES UNDER, voorwaarden die vaak worden gecombineerd met AND.