Iscriviti ora
Istruzioni/probuilder · probacktest · proorder · proscreener

CALL

CALL esegue un indicatore definito dall'utente dal codice ProBuilder e ne restituisce i valori. Riutilizza la logica degli indicatori personalizzati dentro indicatori, strategie e screener.

Sintassi

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

Catturare più valori restituiti:

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

Saltare i valori che non servono:

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

Applicare una costante di prezzo specifica:

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

Parametri

NomeTipoPredefinitoDescrizione
nome indicatorestringaobbligatorioNome esatto dell'indicatore definito dall'utente, tra virgolette.
[p1, p2, ...]elenconessunoArgomenti passati alle variabili dichiarate dell'indicatore, nell'ordine.
costante di prezzoparola chiavevalore predefinito dell'indicatorePrezzo applicato opzionale come Close, High, o Low, tra parentesi tonde dopo le parentesi quadre.

Come funziona

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 funge da segnaposto per gli output di cui il chiamante non ha bisogno, mantenendo l'assegnazione allineata senza inventare variabili inutili.

Una costante di prezzo opzionale tra parentesi controlla a quale serie di prezzi viene applicato l'indicatore chiamato. Se l'indicatore chiamato calcola su customclose internamente, specificando (Close) o un'altra costante nel punto di chiamata mantiene coerenti i due script. Ometterlo lascia in vigore il valore predefinito dell'indicatore chiamato.

Ogni CALL valuta l'intero indicatore chiamato sullo storico necessario a rispondere per la bar corrente. Gli script che fanno CALL di più indicatori, o che usano CALL dentro i cicli, moltiplicano questo costo, una causa comune di backtest lenti. Dove le prestazioni contano, inserire direttamente le formule brevi nello script chiamante è spesso più veloce di un CALL.

Esempi

Esempio 1, Chiamare un indicatore personalizzato a due parametri (Indicatore)

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

L'indicatore personalizzato viene valutato con i due parametri forniti e lo script chiamante dimezza il risultato prima di restituirlo.

Esempio 2, Segnali operativi da un indicatore condiviso (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

La strategia utilizza entrambi gli output di un indicatore personalizzato. Tenere la logica dei segnali in un unico indicatore fa sì che la visualizzazione sul grafico e la strategia non possano mai divergere.

Esempio 3, Screening su un oscillatore personalizzato (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")

Lo screener riutilizza un oscillatore personalizzato, salta il suo primo output con ignored, e fissa il prezzo applicato a Close così i risultati coincidono con la versione sul grafico.

Errori e insidie comuni

  • Il nome deve corrispondere esattamente. La stringa tra virgolette deve riprodurre esattamente il nome dell'indicatore, spazi compresi. Un indicatore rinominato o mancante rompe ogni script che lo richiama con CALL.
  • Numero e ordine dei parametri. Gli argomenti tra parentesi si mappano per posizione sulle variabili dichiarate dell'indicatore. Argomenti troppo pochi, troppi o riordinati producono valori errati o errori di compilazione.
  • Costo in prestazioni. Ogni CALL rivaluta l'intero indicatore chiamato. Più CALL, o un CALL a un indicatore che a sua volta ne chiama altri, possono rallentare drasticamente grafici e backtest.
  • Prezzo applicato non corrispondente. Se l'indicatore richiamato usa customclose, omettere la costante di prezzo nel punto di chiamata può applicare silenziosamente una serie diversa da quella della versione sul grafico. Indicala esplicitamente, per esempio (Close).
  • RETURN, definisce i valori che un indicatore espone ai chiamanti.
  • Close, costante del prezzo di chiusura utilizzabile come prezzo applicato in CALL.
  • High, costante del prezzo massimo utilizzabile come prezzo applicato.
  • Low, costante del prezzo minimo utilizzabile come prezzo applicato.
  • CustomClose, serie di prezzo selezionabili dall'utente negli indicatori personalizzati.
  • DEFPARAM, parametri a livello di script del programma chiamante.