Bli medlem idag
Instruktioner/probuilder · probacktest · proorder · proscreener

CALL

CALL kör en användardefinierad indikator från ProBuilder-kod och returnerar dess värden. Återanvänd egen indikatorlogik inuti indikatorer, strategier och screeners.

Syntax

probuilder
myValue = CALL "myIndicator"[parameter1, parameter2]

Fånga flera returnerade värden:

probuilder
myValue1, myValue2, myValue3 = CALL "myIndicator"[parameter1, parameter2]

Hoppa över värden som inte behövs:

probuilder
myValue1, ignored, myValue3 = CALL "myIndicator"[parameter1, parameter2]

Tillämpa en specifik priskonstant:

probuilder
myValue = CALL "myIndicator"[parameter1, parameter2] (Close)

Parametrar

NamnTypStandardBeskrivning
indikatornamnsträngobligatoriskExakt namn på den användardefinierade indikatorn, inom citattecken.
[p1, p2, ...]listaingenArgument som skickas till indikatorns deklarerade variabler, i ordning.
priskonstantnyckelordindikatorns standardValfritt tillämpat pris såsom Close, High, eller Low, inom parentes efter hakparenteserna.

Så fungerar 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 fungerar som platshållare för utdata som anroparen inte behöver, vilket håller tilldelningen i linje utan att hitta på slaskvariabler.

En valfri priskonstant i parentes styr vilken prisserie den anropade indikatorn tillämpas på. Om den anropade indikatorn beräknas på customclose internt, att ange (Close) eller en annan konstant vid anropet håller de två skripten konsekventa. Att utesluta den lämnar den anropade indikatorns eget standardvärde i kraft.

Varje CALL utvärderar hela den anropade indikatorn över den historik som behövs för att svara för den aktuella baren. Skript som gör CALL till flera indikatorer, eller CALL inuti loopar, multiplicerar den kostnaden, vilket är en vanlig orsak till långsamma backtester. När prestanda spelar roll är det ofta snabbare att skriva in korta formler direkt i det anropande skriptet än att använda CALL.

Exempel

Exempel 1, Anropa en egen indikator med två parametrar (Indikator)

probuilder
// 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 a

Den egna indikatorn utvärderas med de två angivna parametrarna, och det anropande skriptet halverar resultatet innan det returneras.

Exempel 2, Handelssignaler från en delad indikator (ProOrder)

probuilder
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
ENDIF

Strategin använder båda utdata från en egen indikator. Att hålla signallogiken i en enda indikator innebär att diagramvisningen och strategin aldrig kan glida ifrån varandra.

Exempel 3, Screening på en egen oscillator (ProScreener)

probuilder
// 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")

Screenern återanvänder en egen oscillator, hoppar över dess första utdata med ignored, och låser det tillämpade priset till Close så att resultaten stämmer med diagramversionen.

Vanliga fel och fallgropar

  • Namnet måste stämma exakt. Strängen inom citattecken måste återge indikatorns namn exakt, inklusive blanksteg. En omdöpt eller saknad indikator förstör varje skript som gör CALL till den.
  • Antal parametrar och ordning. Argumenten inom hakparenteser mappas positionellt mot indikatorns deklarerade variabler. För få, för många eller omordnade argument ger felaktiga värden eller kompileringsfel.
  • Prestandakostnad. Varje CALL utvärderar om hela den anropade indikatorn. Flera CALL, eller ett CALL till en indikator som själv gör CALL till andra, kan göra diagram och backtester dramatiskt långsammare.
  • Felmatchat tillämpat pris. Om den anropade indikatorn använder customclose, kan utelämnande av priskonstanten vid anropet tyst tillämpa en annan serie än diagramversionen. Ange den explicit, till exempel (Close).
  • RETURN, definierar de värden en indikator exponerar för anropare.
  • Close, konstant för stängningspris som kan användas som tillämpat pris i CALL.
  • High, konstant för högstapris som kan användas som tillämpat pris.
  • Low, konstant för lägstapris som kan användas som tillämpat pris.
  • CustomClose, användarvalbar prisserie inuti egna indikatorer.
  • DEFPARAM, parametrar på skriptnivå i det anropande programmet.