Saltar a contenido

Ciclo de vida del indicador personalizado

Estructura de código de muestra

Este artículo le guiará a través de la estructura del código y explicará la lógica detrás de los eventos y el ciclo de vida de un indicador de cTrader. Para acceder a los indicadores personalizados, abra la pestaña Local en la aplicación Algo.

Image title

Como ejemplo, puede crear un nuevo indicador llamado "LifeCycle Test" con el siguiente código de muestra disponible en la ventana del editor de código.

Image title

Para restablecer a la versión predeterminada, copie el código a continuación.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
{
    [Indicator(AccessRights = AccessRights.None)]
    public class LifeCycleTest : Indicator
    {
        [Parameter(DefaultValue = "Hello world!")]
        public string Message { get; set; }

        [Output("Main")]
        public IndicatorDataSeries Result { get; set; }

        protected override void Initialize()
        {
            // To learn more about cTrader Algo visit our Help Center:
            // https://help.ctrader.com/ctrader-algo/


            Print(Message);
        }

        public override void Calculate(int index)
        {
            // Calculate value at specified index
            // Result[index] = 
        }
    }
}

A primera vista, la estructura del código incluye solo dos métodos, el método Initialize() y el método Calculate(). Haga clic en Compilar para proceder con la prueba de este indicador. Añadiremos un método adicional llamado OnDestroy() y explicaremos su propósito más adelante.

El evento de inicialización

Cuando un indicador de cTrader se adjunta por primera vez a un gráfico o cuando el usuario cambia cualquiera de los ajustes de parámetros, se recrea una instancia del indicador y se llama al método Initialize(). Se utiliza para inicializar cualquier variable que planee emplear en su indicador. También puede definir y hacer referencia a indicadores adicionales para crear un solo indicador utilizando fórmulas de otros indicadores.

Por defecto, la nueva plantilla de código incluye un ajuste de parámetro llamado Message con el valor de "Hello world!".

1
2
[Parameter(DefaultValue = "Hello world!")]
public string Message { get; set; }

En el método Initialize(), hay una línea de código para imprimir este mensaje en el registro.

1
Print(Message);

Para demostrar el método Initialize(), añada una instancia de indicador haciendo clic en el icono Más junto al icono Compilar y seleccionando un símbolo. Si hace clic en Más en la fila del indicador y elige Añadir una instancia, el símbolo EURUSD con el marco temporal h1 se añadirá automáticamente.

Image title

Nota

Añadir una instancia en cTrader Algo es lo mismo que adjuntar un indicador a un gráfico en la aplicación Operar.

Ahora, abra la pestaña Registro en el panel Visualización de operaciones debajo del gráfico. Como puede ver, se ha impreso el mensaje "Hello world".

Image title

Cada vez que el indicador se añade por primera vez a un gráfico o cuando se cambia un parámetro, el gráfico se actualiza y se llama de nuevo al método Initialize(). Escriba un mensaje diferente en la sección Parámetros para ver cómo se actualiza la entrada del registro en consecuencia.

Image title

Calcular la salida del indicador

El método Calculate() se llama para cada índice de datos históricos y en cada tic entrante. Por ejemplo, si el gráfico actual tiene 1000 barras, el método Calculate() se llamará para el índice 0, 1, 2, y así sucesivamente, hasta un máximo de 999.

1
public override void Calculate(int index)

El método Calculate() puede ser llamado varias veces por segundo durante períodos de alta volatilidad o menos veces cuando el mercado está plano. Para probar cómo funciona, puede añadir una línea de código al cuerpo del método Calculate() para imprimir el valor del índice que se está pasando al método para cada nuevo tic de datos. No olvide hacer clic en Compilar cada vez después de añadir cambios en la ventana del editor de código.

1
Print("Index: " + index);

Para cambiar de la ventana del editor de código al gráfico, haga clic en la instancia de indicador añadida. Si abre la pestaña Registro en el panel Visualización de operaciones, verá los valores impresos para cada índice pasado al método.

Image title

El método OnDestroy()

El método OnDestroy() se llama cuando el indicador se elimina de un gráfico y ya no es necesario. Necesitará implementar este método, ya que no se añade por defecto cuando crea un nuevo indicador.

1
2
3
4
protected override void OnDestroy()
        {
            base.OnDestroy();            
        }

Este método es útil para los programadores, ya que les permite liberar recursos no administrados y realizar tareas de finalización. Ayuda a prevenir fugas de memoria y asegura que el indicador no retenga recursos después de su eliminación. Los ejemplos incluyen cerrar conexiones a fuentes de datos externas, liberar objetos de datos grandes y otras operaciones que liberan memoria.

Resumen

En resumen, los métodos Initialize(), Calculate() y OnDestroy() ilustran diferentes etapas del ciclo de vida del indicador personalizado. Al ajustar el código de muestra en la aplicación Algo, usted es libre de decidir cómo inicializar las variables del indicador, calcular la salida del indicador y ejecutar tareas de finalización.

Image title