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
condition1 AND condition2Så 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)
// 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 signalDet 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)
// 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)
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
ENDIFEntryn 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 ctolkas 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.
ANDarbetar alltid på booleska villkor, inte på tal som behandlas som bitmönster. - Jämför före kombinering. Varje sida av
ANDmåste själv vara ett villkor.close AND high > lowär ogiltigt eftersomcloseär i sig ett värde, inte en boolean. Skriv en fullständig jämförelse somclose > open AND high > low. - Att dra åt ett filter för hårt. Varje tillagd
ANDvillkor kan bara minska antalet träffar. En screener som inte returnerar något har ofta ett villkor för mycket.