CALL
CALL ejecuta un indicador definido por el usuario desde código ProBuilder y devuelve sus valores. Reutiliza la lógica de indicadores personalizados dentro de indicadores, estrategias y screeners.
Sintaxis
myValue = CALL "myIndicator"[parameter1, parameter2]Capturar varios valores devueltos:
myValue1, myValue2, myValue3 = CALL "myIndicator"[parameter1, parameter2]Omitir los valores que no se necesitan:
myValue1, ignored, myValue3 = CALL "myIndicator"[parameter1, parameter2]Aplicar una constante de precio concreta:
myValue = CALL "myIndicator"[parameter1, parameter2] (Close)Parámetros
| Nombre | Tipo | Por defecto | Descripción |
|---|---|---|---|
| nombre del indicador | cadena | obligatorio | Nombre exacto del indicador definido por el usuario, entre comillas. |
[p1, p2, ...] | lista | ninguno | Argumentos pasados a las variables declaradas del indicador, en orden. |
| constante de precio | palabra clave | valor por defecto del indicador | Precio aplicado opcional, como Close, High, o Low, entre paréntesis después de los corchetes. |
Cómo funciona
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 actúa como marcador de posición para las salidas que quien llama no necesita, lo que mantiene alineada la asignación sin inventar variables desechables.
Una constante de precio opcional entre paréntesis controla a qué serie de precios se aplica el indicador llamado. Si el indicador llamado calcula sobre customclose internamente, especificar (Close) u otra constante en el punto de llamada mantiene coherentes los dos scripts. Omitirlo deja en vigor el valor por defecto del propio indicador llamado.
Cada CALL evalúa el indicador llamado por completo sobre el histórico necesario para responder en la bar actual. Los scripts que hacen CALL a varios indicadores, o CALL dentro de bucles, multiplican ese coste, lo que es una causa habitual de backtests lentos. Cuando el rendimiento importa, insertar fórmulas cortas directamente en el script que llama suele ser más rápido que un CALL.
Ejemplos
Ejemplo 1, Llamar a un indicador personalizado de dos parámetros (Indicador)
// 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 aEl indicador personalizado se evalúa con los dos parámetros suministrados, y el script que llama divide el resultado por la mitad antes de devolverlo.
Ejemplo 2, Señales de trading a partir de un indicador compartido (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
ENDIFLa estrategia consume ambas salidas de un indicador personalizado. Mantener la lógica de señales en un único indicador significa que la representación en el gráfico y la estrategia nunca pueden divergir.
Ejemplo 3, Filtrar con un oscilador personalizado (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")El screener reutiliza un oscilador personalizado, omite su primera salida con ignored, y fija el precio aplicado a Close así los resultados coinciden con la versión del gráfico.
Errores y trampas habituales
- El nombre debe coincidir exactamente. La cadena entre comillas debe reproducir el nombre del indicador con precisión, incluidos los espacios. Un indicador renombrado o ausente rompe todos los scripts que lo llaman con CALL.
- Número y orden de los parámetros. Los argumentos entre corchetes se asignan por posición a las variables declaradas del indicador. Argumentos de menos, de más o reordenados producen valores erróneos o errores de compilación.
- Coste de rendimiento. Cada CALL vuelve a evaluar por completo el indicador llamado. Varios CALL, o un CALL a un indicador que a su vez hace CALL a otros, pueden ralentizar drásticamente los gráficos y los backtests.
- Desajuste del precio aplicado. Si el indicador llamado usa
customclose, omitir la constante de precio en la llamada puede aplicar de forma silenciosa una serie distinta de la versión del gráfico. Indícala de forma explícita, por ejemplo(Close).
Instrucciones relacionadas
RETURN, define los valores que un indicador expone a quien lo llama.Close, constante de precio de cierre utilizable como precio aplicado en CALL.High, constante de precio máximo utilizable como precio aplicado.Low, constante de precio mínimo utilizable como precio aplicado.CustomClose, series de precios seleccionables por el usuario dentro de indicadores personalizados.DEFPARAM, parámetros a nivel de script del programa que llama.