OR
OR i ProBuilder er en logisk operator som returnerer sann når minst én av betingelsene er sann. Dekker syntaks, presedens og gjennomgåtte eksempler.
Syntaks
condition1 OR condition2Slik fungerer det
OR evaluerer betingelsene på hver side og returnerer true hvis én av dem er sann, eller hvis begge er. Resultatet er false bare når alle operander er false. Å legge til flere betingelser med ytterligere OR operatorer utvider testen, siden ett enkelt treff gjør hele uttrykket sant.
Presedens er viktig når OR deler et uttrykk med AND og NOT. NOT binder sterkest, deretter AND, deretter OR. Så a OR b AND c grupperes som a OR (b AND c). Når den tilsiktede rekkefølgen ikke er åpenbar ved første blikk, legg til parenteser så logikken leses akkurat som ment.
OR oppfører seg likt i ProBuilder-indikatorer, ProScreener, ProBacktest og ProOrder, siden alle fire deler de samme reglene for boolsk evaluering.
Eksempler
Eksempel 1, Én av to betingelser i en indikator (Indikator)
// Fire when the previous close or the previous low undercut the 10-bar lowest close
i1 = Lowest[10](close)
IF (close[1] < i1 OR low[1] < i1) THEN
result = 1
ELSE
result = 0
ENDIF
RETURN resultDette er mønsteret fra den offisielle referansen. At enten forrige stengekurs eller forrige lavpunkt ligger under den laveste stengekursen i de siste 10 periodene setter result til 1, fordi bare én side av OR må være sann.
Eksempel 2, Hvilken som helst av flere breakouts (ProScreener)
// New 20-bar high on close or on high
newCloseHigh = close >= Highest[20](close)
newHigh = high >= Highest[20](high)
cond = newCloseHigh OR newHigh
SCREENER[cond]Screeneren returnerer instrumenter som setter en ny 20-bars høyde på ett av de to målene. Et treff på én av betingelsene er nok.
Eksempel 3, Utgang på mer enn én trigger (ProOrder)
DEFPARAM CumulateOrders = false
// Exit the long if price loses the average or momentum turns down
lostTrend = close < Average[50](close)
momentumDown = MACDLine[12,26,9](close) CROSSES UNDER 0
IF LongOnMarket AND (lostTrend OR momentumDown) THEN
SELL AT MARKET
ENDIFParentesene grupperer de to utgangstriggerne slik at hver av dem, kombinert med en åpen long, lukker posisjonen. Uten dem ville presedensreglene endret betydningen.
Vanlige feil og fallgruver
- Overraskelser med presedens.
a AND b OR ctolkes som(a AND b) OR c. Hvis én enkelt utgang skal utløses av hvilken som helst av flere triggere, grupper dem med parenteser som i Eksempel 3. - Hver side må være en betingelse.
close OR high > lower ugyldig, fordiclosealene er en verdi. Skriv en fullstendig sammenligning på hver side. - Å utvide forbi punktet der det er nyttig. Hver tilføyde
ORbetingelsen kan bare øke antallet treff. En screener som returnerer nesten alt har ofte én løs betingelse for mye. - OR er ikke eksklusiv. Hvis nøyaktig én av to betingelser skal være sann og ikke begge, bruk
XORi stedet.