Bli medlem idag
Operatorer/probuilder · probacktest · proorder · proscreener

AND

AND i ProBuilder är en logisk operator som kombinerar villkor och returnerar true endast när varje operand är true. Syntax, prioritet och exempel.

Syntax

probuilder
condition1 AND condition2

Så fungerar det

AND utvärderar villkoren på båda sidor och returnerar true endast om båda är true. Att kedja fler villkor med ytterligare AND operatorer skärper testet ytterligare, eftersom varje länkat villkor måste gälla för att resultatet ska bli sant.

Operatorprioritet spelar roll när AND, OR, och NOT förekommer i samma uttryck. NOT binder starkast, sedan AND, sedan OR. Så a OR b AND c läses som a OR (b AND c). När den avsedda grupperingen inte är uppenbar, omslut delarna med parenteser. Det gör logiken explicit och tar bort allt tvivel om hur uttrycket tolkas.

AND fungerar på samma sätt i ProBuilder-indikatorer, ProScreener, ProBacktest och ProOrder, eftersom alla fyra utvärderar booleska uttryck med samma regler.

Exempel

Exempel 1, Två villkor i en indikator (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

Det här är mönstret från den officiella referensen. Signalen utlöses bara när aktuell RSI ligger över 50 och föregående RSI låg under, så båda delarna av AND måste vara sant på samma bar.

Exempel 2, Filtrera med flera kriterier (ProScreener)

probuilder
// Uptrend with volume confirmation
trendUp = close > Average[200](close)
volumeUp = Volume > Average[20](Volume)
cond = trendUp AND volumeUp
SCREENER[cond]

Screenern returnerar endast instrument där priset ligger över sitt 200-periodsgenomsnitt och volymen ligger över sitt 20-periodsgenomsnitt. Båda villkoren krävs.

Exempel 3, Skydda en entry (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

Entryn tillåts endast när det inte finns någon öppen long-position och priset korsar upp över 50-periodersmedelvärdet. Att kombinera ett positionsskydd med en signal är en av de vanligaste användningarna av AND.

Vanliga fel och fallgropar

  • Prioritet med OR. a AND b OR c tolkas som (a AND b) OR c, vilket ofta inte är vad som avsågs. Lägg till parenteser för att ange den gruppering du vill ha.
  • AND är inte bitvis. ProBuilder har ingen separat bitvis operator. AND arbetar alltid på booleska villkor, inte på tal som behandlas som bitmönster.
  • Jämför före kombinering. Varje sida av AND måste själv vara ett villkor. close AND high > low är ogiltigt eftersom close är i sig ett värde, inte en boolean. Skriv en fullständig jämförelse som close > open AND high > low.
  • Att dra åt ett filter för hårt. Varje tillagd AND villkor kan bara minska antalet träffar. En screener som inte returnerar något har ofta ett villkor för mycket.
  • OR, sant när minst en operand är sann.
  • XOR, sant när exakt en operand är sann.
  • NOT, inverterar ett enskilt villkor.
  • IF, det villkorsblock som dessa operatorer vanligtvis står i.
  • THEN, ELSE, strukturera grenarna i ett IF.
  • CROSSES OVER, CROSSES UNDER, villkor som ofta kombineras med AND.