Bli medlem i dag
Operatorer/probuilder · probacktest · proorder · proscreener

AND

AND i ProBuilder er en logisk operator som kombinerer betingelser og returnerer true bare når hver operand er true. Syntaks, presedens og eksempler.

Syntaks

probuilder
condition1 AND condition2

Slik fungerer det

AND evaluerer betingelsene på hver side og returnerer true bare hvis begge er true. Å lenke flere betingelser med ytterligere AND operatorer strammer testen ytterligere, siden hver sammenkoblet betingelse må holde for at resultatet skal bli sant.

Operatorprioritet har betydning når AND, OR, og NOT opptrer i samme uttrykk. NOT binder sterkest, deretter AND, deretter OR. Så a OR b AND c leses som a OR (b AND c). Når den tiltenkte grupperingen ikke er åpenbar, sett delene i parentes. Det gjør logikken eksplisitt og fjerner all tvil om hvordan uttrykket tolkes.

AND fungerer på samme måte i ProBuilder-indikatorer, ProScreener, ProBacktest og ProOrder, fordi alle fire evaluerer boolske uttrykk med de samme reglene.

Eksempler

Eksempel 1, To betingelser i en indikator (Indikator)

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

Dette er mønsteret fra den offisielle referansen. Signalet utløses bare når gjeldende RSI er over 50 og forrige RSI var under, så begge delene av AND må være sann på samme bar.

Eksempel 2, Filtrering med flere kriterier (ProScreener)

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

Screeneren returnerer bare instrumenter der prisen ligger over sitt 200-periodegjennomsnitt og volumet er over sitt 20-periodegjennomsnitt. Begge betingelsene kreves.

Eksempel 3, Sikre en inngang (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

Inngangen tillates bare når det ikke finnes en åpen long-posisjon og prisen krysser over 50-periodegjennomsnittet. Å kombinere en posisjonssperre med et signal er en av de vanligste bruksmåtene for AND.

Vanlige feil og fallgruver

  • Presedens med OR. a AND b OR c tolkes som (a AND b) OR c, noe som ofte ikke er det som var ment. Legg til parenteser for å angi grupperingen du vil ha.
  • AND er ikke bitvis. ProBuilder har ingen separat bitvis operator. AND virker alltid på boolske betingelser, ikke på tall behandlet som bitmønstre.
  • Sammenligne før kombinering. Hver side av AND må selv være en betingelse. close AND high > low er ugyldig fordi close alene er en verdi, ikke en boolsk verdi. Skriv en fullstendig sammenligning som close > open AND high > low.
  • Å stramme et filter for hardt. Hver tilføyde AND betingelse kan bare redusere antallet treff. En screener som ikke returnerer noe har ofte én betingelse for mye.
  • OR, sann når minst én operand er sann.
  • XOR, sann når nøyaktig én operand er sann.
  • NOT, inverterer en enkelt betingelse.
  • IF, den betingede blokken disse operatorene vanligvis står i.
  • THEN, ELSE, strukturer grenene i en IF.
  • CROSSES OVER, CROSSES UNDER, betingelser som ofte kombineres med AND.