CALL
CALL voert vanuit ProBuilder-code een door de gebruiker gedefinieerde indicator uit en geeft de waarden ervan terug. Hergebruik aangepaste indicatorlogica binnen indicatoren, strategieën en screeners.
Syntaxis
myValue = CALL "myIndicator"[parameter1, parameter2]Meerdere teruggegeven waarden opvangen:
myValue1, myValue2, myValue3 = CALL "myIndicator"[parameter1, parameter2]Waarden overslaan die niet nodig zijn:
myValue1, ignored, myValue3 = CALL "myIndicator"[parameter1, parameter2]Een specifieke prijsconstante toepassen:
myValue = CALL "myIndicator"[parameter1, parameter2] (Close)Parameters
| Naam | Type | Standaard | Beschrijving |
|---|---|---|---|
| indicatornaam | string | verplicht | Exacte naam van de door de gebruiker gedefinieerde indicator, tussen aanhalingstekens. |
[p1, p2, ...] | lijst | geen | Argumenten die in volgorde aan de gedeclareerde variabelen van de indicator worden doorgegeven. |
| prijsconstante | sleutelwoord | indicatorstandaard | Optionele toegepaste prijs zoals Close, High, of Low, tussen haakjes na de blokhaken. |
Hoe het werkt
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 dient als plaatshouder voor uitvoerwaarden die de aanroeper niet nodig heeft, wat de toekenning uitgelijnd houdt zonder wegwerpvariabelen te verzinnen.
Een optionele prijsconstante tussen haakjes bepaalt op welke prijsserie de aangeroepen indicator wordt toegepast. Als de aangeroepen indicator rekent op customclose intern, het opgeven van (Close) of een andere constante op de plek van de aanroep houdt de twee scripts consistent. Het weglaten laat de eigen standaard van de aangeroepen indicator gelden.
Elke CALL evalueert de volledige aangeroepen indicator over de historie die nodig is om voor de huidige bar antwoord te geven. Scripts die meerdere indicatoren met CALL aanroepen, of CALL binnen loops gebruiken, vermenigvuldigen die kosten, wat een veelvoorkomende oorzaak is van langzame backtests. Waar performance van belang is, is het inline opnemen van korte formules in het aanroepende script vaak sneller dan een CALL.
Voorbeelden
Voorbeeld 1, Een aangepaste indicator met twee parameters aanroepen (Indicator)
// 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 aDe aangepaste indicator wordt geëvalueerd met de twee opgegeven parameters, en het aanroepende script halveert het resultaat voordat het dit teruggeeft.
Voorbeeld 2, Handelssignalen uit een gedeelde indicator (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
ENDIFDe strategie gebruikt beide uitvoerwaarden van een aangepaste indicator. Door de signaallogica in één indicator te houden, kunnen de grafiekweergave en de strategie nooit uit elkaar lopen.
Voorbeeld 3, Screenen op een aangepaste 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")De screener hergebruikt een eigen oscillator, slaat de eerste output over met ignored, en zet de toegepaste prijs vast op Close zodat de resultaten overeenkomen met de versie op de grafiek.
Veelvoorkomende fouten en valkuilen
- Naam moet exact overeenkomen. De string tussen aanhalingstekens moet de naam van de indicator precies weergeven, inclusief spaties. Een hernoemde of ontbrekende indicator breekt elk script dat hem met CALL aanroept.
- Aantal en volgorde van parameters. De argumenten tussen haakjes worden positioneel toegewezen aan de gedeclareerde variabelen van de indicator. Te weinig, te veel of herschikte argumenten leveren verkeerde waarden of compilatiefouten op.
- Performancekosten. Elke CALL evalueert de volledige aangeroepen indicator opnieuw. Meerdere CALLs, of een CALL naar een indicator die zelf andere indicatoren met CALL aanroept, kunnen grafieken en backtests dramatisch vertragen.
- Toegepaste prijs komt niet overeen. Als de aangeroepen indicator gebruikmaakt van
customclose, kan het weglaten van de prijsconstante op de aanroepplek stilzwijgend een andere serie toepassen dan de grafiekversie. Geef hem expliciet op, bijvoorbeeld(Close).
Gerelateerde instructies
RETURN, definieert de waarden die een indicator beschikbaar stelt aan aanroepers.Close, slotkoersconstante die in CALL als toegepaste prijs kan worden gebruikt.High, hoogste-koersconstante die als toegepaste prijs kan worden gebruikt.Low, laagste-koersconstante die als toegepaste prijs kan worden gebruikt.CustomClose, door de gebruiker selecteerbare prijsreeks binnen aangepaste indicatoren.DEFPARAM, parameters op scriptniveau van het aanroepende programma.