CALL
CALL kjører en brukerdefinert indikator fra ProBuilder-kode og returnerer verdiene dens. Gjenbruk egendefinert indikatorlogikk inne i indikatorer, strategier og screenere.
Syntaks
myValue = CALL "myIndicator"[parameter1, parameter2]Fange opp flere returnerte verdier:
myValue1, myValue2, myValue3 = CALL "myIndicator"[parameter1, parameter2]Hoppe over verdier som ikke er nødvendige:
myValue1, ignored, myValue3 = CALL "myIndicator"[parameter1, parameter2]Bruke en spesifikk priskonstant:
myValue = CALL "myIndicator"[parameter1, parameter2] (Close)Parametere
| Navn | Type | Standard | Beskrivelse |
|---|---|---|---|
| indikatornavn | tekststreng | påkrevd | Det eksakte navnet på den brukerdefinerte indikatoren, i anførselstegn. |
[p1, p2, ...] | liste | ingen | Argumenter som sendes til indikatorens deklarerte variabler, i rekkefølge. |
| priskonstant | nøkkelord | indikatorstandard | Valgfri anvendt pris, for eksempel Close, High, eller Low, i parentes etter klammene. |
Slik fungerer det
CALL bridges scripts. A custom indicator built in the indicator editor exposes whatever its RETURN statement emits, and any other script can pull those values in with CALL instead of duplicating the logic. Changes to the shared indicator then propagate to every caller automatically.
The values listed in brackets are bound, in order, to the indicator's declared parameters, so their count and meaning must match what the indicator expects. When the indicator returns several values, the left-hand side lists one variable per returned value in the same order as the RETURN statement. The keyword ignored fungerer som en plassholder for utdata kalleren ikke trenger, noe som holder tilordningen justert uten å finne opp engangsvariabler.
En valgfri priskonstant i parentes styrer hvilken prisserie den kalte indikatoren brukes på. Hvis den kalte indikatoren beregner på customclose internt, og å angi (Close) eller en annen konstant der kallet skjer, holder de to skriptene konsistente. Å utelate den lar den kalte indikatorens eget standardvalg gjelde.
Hvert CALL evaluerer hele den kalte indikatoren over den historikken som er nødvendig for å svare for den gjeldende baren. Skript som CALLer flere indikatorer, eller CALLer inne i løkker, multipliserer denne kostnaden, noe som er en vanlig årsak til langsomme backtester. Der ytelse betyr noe, er det ofte raskere å legge korte formler direkte inn i det kallende skriptet enn å bruke et CALL.
Eksempler
Eksempel 1, Kalle en egendefinert indikator med to parametere (Indikator)
// Fetch the value of a personal indicator with parameters 7 and 14
myValue = CALL "my Personal Indicator Name"[7, 14]
// Post-process the result before plotting
a = myValue / 2
RETURN aDen egendefinerte indikatoren evalueres med de to oppgitte parameterne, og det kallende skriptet halverer resultatet før det returneres.
Eksempel 2, Handelssignaler fra en delt indikator (ProOrder)
DEFPARAM CumulateOrders = false
// The custom indicator "TrendGauge" returns a trend line and a signal flag
trendLine, signalFlag = CALL "TrendGauge"[20, 2]
// Enter long when the shared indicator flags a signal above its trend line
IF signalFlag = 1 AND close > trendLine THEN
BUY 1 CONTRACT AT MARKET
ENDIF
IF signalFlag = -1 THEN
SELL AT MARKET
ENDIFStrategien bruker begge utdataene fra en egendefinert indikator. Å holde signallogikken i én indikator betyr at diagramvisningen og strategien aldri kan komme i utakt.
Eksempel 3, Screening på en egendefinert oscillator (ProScreener)
// Only the second output of "DualOscillator" is needed here
ignored, oscValue = CALL "DualOscillator"[14, 3] (Close)
// Keep instruments where the custom oscillator signals oversold
SCREENER[oscValue < 20] (oscValue AS "Oscillator")Screeneren gjenbruker en egendefinert oscillator, hopper over dens første utdata med ignored, og fester den anvendte prisen til Close slik at resultatene stemmer med diagramversjonen.
Vanlige feil og fallgruver
- Navnet må stemme eksakt. Strengen i anførselstegn må gjengi indikatorens navn presist, inkludert mellomrom. En indikator som er omdøpt eller mangler, ødelegger alle skript som CALLer den.
- Antall parametere og rekkefølge. Argumentene i klammene tilordnes indikatorens deklarerte variabler etter posisjon. For få, for mange eller omstokkede argumenter gir feil verdier eller kompileringsfeil.
- Ytelseskostnad. Hvert CALL evaluerer hele den kalte indikatoren på nytt. Flere CALL, eller et CALL til en indikator som selv CALLer andre, kan gjøre diagrammer og backtester dramatisk langsommere.
- Avvik i anvendt pris. Hvis den kalte indikatoren bruker
customclose, kan det å utelate priskonstanten i kallet stille bruke en annen serie enn diagramversjonen. Angi den eksplisitt, for eksempel(Close).
Relaterte instruksjoner
RETURN, definerer verdiene en indikator gjør tilgjengelig for de som kaller den.Close, konstant for sluttkurs som kan brukes som anvendt pris i CALL.High, konstant for høyeste kurs som kan brukes som anvendt pris.Low, konstant for laveste kurs som kan brukes som anvendt pris.CustomClose, prisserier brukeren kan velge inne i egendefinerte indikatorer.DEFPARAM, parametere på skriptnivå i det kallende programmet.