Saltar a contenido

Cómo crear un indicador personalizado en cTrader

En este artículo y su vídeo correspondiente, discutiremos cómo puede crear un nuevo indicador personalizado en cTrader. Crearemos un indicador de media móvil simple y le mostraremos cómo personalizar rápidamente los parámetros del indicador.

Antes de seguir nuestras instrucciones, asegúrese de haber descargado e instalado la aplicación cTrader Windows o cTrader Mac desde el sitio web oficial. Iníciela y navegue hasta la sección cTrader Algo. Localice la pestaña Algo en el panel izquierdo y haga clic en ella. Ahora debería ver la interfaz de cTrader Algo.

Añadir un nuevo indicador personalizado

Para crear un nuevo indicador personalizado, debemos hacer clic en el botón Nuevo y seleccionar En blanco. Aparecerá un nuevo indicador en la parte inferior de la lista de indicadores junto con una plantilla de código en el panel derecho.

A continuación, cambie el nombre del indicador desde su nombre predeterminado. Para hacerlo, haga clic derecho sobre él y seleccione Renombrar, o selecciónelo y pulse F2. Escribiremos Media móvil simple como el nuevo nombre de nuestro indicador. Una vez hecho esto, presione Enter. En este punto, estamos listos para empezar a codificar la lógica y las fórmulas para el indicador personalizado.

Ver la estructura del indicador

Antes de comenzar, echaremos un vistazo rápido a la estructura del código del indicador que se muestra en la ventana del editor de código. Esta estructura incluye la configuración predeterminada de los parámetros y los métodos para calcular y mostrar el indicador en un gráfico.

Para empezar, cada indicador tiene una sección que contiene sus atributos de clase. Aquí es donde puede configurar los derechos de acceso que tiene el indicador, dónde se mostrará el indicador en el gráfico, la zona horaria utilizada por el indicador, el escalado del indicador y varios otros ajustes avanzados.

También notará que cada nueva plantilla de código de indicador define una clase llamada NewIndicator que contiene todos los eventos del indicador y cualquier método personalizado. La declaración del nombre de la clase va seguida de : Indicator. Esto significa que la clase NewIndicator hereda de la clase base Indicator que, a su vez, contiene todos los objetos predefinidos a los que accederemos al construir nuestro indicador personalizado.

Una revisión más detallada de la estructura del código del indicador y los principios de herencia en la programación orientada a objetos se proporciona en nuestra documentación técnica.

En la sección siguiente, verá el bloque de código que contiene todos los ajustes predeterminados del indicador. Inicialmente, esta sección solo contendrá el siguiente código.

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

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

Inmediatamente debajo de la declaración de parámetros, debería ver los métodos del indicador. Piense en los métodos como ciertos eventos que se ejecutan cuando el indicador se inicia y también cuando se introducen nuevos datos de precios en el indicador. La siguiente tabla define tres métodos clave del indicador.

Nombre del método Definición
Initialize() Este método de evento se llama cuando el indicador se adjunta a un gráfico. Se utiliza para inicializar cualquier variable que planee usar en su indicador. También puede definir y hacer referencia a indicadores adicionales para crear un solo indicador utilizando fórmulas de otros indicadores.
OnCalculate() Este método se llama en cada tick entrante de datos. Dentro de este método, puede codificar lógicas que procesarán los datos entrantes para calcular las siguientes líneas trazadas que el indicador debe mostrar.
OnExcepion() Este método se llama si su indicador encuentra una excepción. Puede usarlo para definir lo que su indicador debe hacer al capturar un error. Tenga en cuenta que este método está ausente de la plantilla de código de indicador predeterminada.

Escribir el código del indicador

Ahora procederemos a añadir código personalizado a nuestro indicador de media móvil simple. Nuestro indicador se mostrará en el gráfico de trading como una superposición sobre el tipo de gráfico actual.

Primero, tenemos que declarar los atributos de clase del indicador como se discutió anteriormente. Vamos a añadir los siguientes ajustes de atributos al indicador.

1
[Indicator(IsOverlay = true, TimeZone = TimeZones.UTC, AutoRescale = false, AccessRights = AccessRights.None)] 

Puede interpretar el código anterior de la siguiente manera:

  • IsOverlay = true - el indicador se trazará en el gráfico sobre las velas, barras de rango, ladrillos Renko o cualquier otro elemento dependiendo del tipo de gráfico elegido.
  • TimeZone = TimeZones.UTC - el indicador utilizará el Tiempo Universal Coordinado, que es el valor predeterminado para todos los indicadores. Cambiar el valor de este atributo solo se recomienda si su indicador utiliza algún tipo de características de fecha y hora en sus cálculos.
  • AutoRescale = false - este atributo define si el indicador debe reescalar automáticamente el gráfico al que está adjunto. Como el valor de este atributo es igual a false, nuestro indicador no reescalará el gráfico.
  • AccessRights = AccessRights.None - al indicador no se le permitirá acceder a Internet ni manipular los archivos en las máquinas locales.

Ahora podemos definir los parámetros de nuestro indicador. Estos son los ajustes que se pueden modificar en el panel de configuración después de añadir el indicador a un gráfico. Codificaremos los siguientes parámetros:

  • La fuente de datos para la fórmula del indicador.
  • Los períodos utilizados en la fórmula.
  • La línea trazada del resultado de salida del indicador.

Añada el siguiente fragmento al indicador.

1
2
3
4
5
6
7
8
[Parameter("Source")]
public DataSeries Source { get; set; }

[Parameter("Periods", DefaultValue = 14)]
public int Periods { get; set; }

[Output("Main", LineColor = "Turquoise")]
public IndicatorDataSeries Result { get; set; }

Estableceremos 14 como el valor predeterminado del parámetro Periods y turquoise como el color de línea predeterminado. Sin embargo, puede establecer estos parámetros a casi cualquier valor predeterminado compatible con cTrader.

Ahora podemos añadir el código que trazará la salida del indicador en el gráfico utilizando el método de evento Calculate().

1
2
3
4
5
6
7
8
9
public override void Calculate(int index)
{
    var sum = 0.0;

    for (var i = index - Periods + 1; i <= index; i++)
    sum += Source[i];

    Result[index] = sum / Periods;
}

Este código asigna el resultado de los cálculos del indicador al parámetro Result que hemos definido anteriormente.

Compilar y probar el indicador

Tan pronto como hayamos terminado de escribir el código de nuestro indicador, podemos hacer clic en el botón Compilar ubicado en la barra superior de la interfaz de usuario de cTrader. Alternativamente, haga clic derecho en su indicador y seleccione Compilar en el menú recién abierto o presione Ctrl + B.

Si la compilación es exitosa, verá un mensaje verde en el área de Resultado de la compilación en la parte inferior del editor de código.

Image title

Sin embargo, si hay problemas con su código, verá un mensaje rojo y un resumen detallado de todos los errores de compilación.

Image title

Después de compilar con éxito su indicador, ahora podemos proceder a crear una instancia. La forma más sencilla de hacerlo es hacer clic derecho en el indicador y elegir la opción Añadir una instancia.

Image title

Esto creará una nueva instancia del indicador para el gráfico h1 de EURUSD. Sin embargo, puede cambiar el tipo de gráfico, el marco temporal y el símbolo haciendo clic en la instancia y abriendo el menú correspondiente.

La pestaña Parámetro recién aparecida debería mostrar los tres parámetros personalizables que hemos codificado anteriormente. Puede dejarlos como están o cambiar sus valores directamente en la interfaz de usuario de cTrader.

El gráfico de trading ahora debería mostrar la salida del indicador. En nuestro caso, será una línea turquesa que muestra la media móvil simple.

Si hace clic derecho en la línea, verá una nueva ventana que permite personalizar los parámetros del indicador. Por ejemplo, podemos cambiar el color de la línea de salida de turquesa a azul. También podemos ajustar el grosor de la línea. Para guardar sus cambios, haga clic en Aceptar.

Nota

cTrader permite cambiar rápidamente entre las salidas de la instancia y la ventana del editor de código para su indicador personalizado. Esto lo convierte en la herramienta ideal para probar rápidamente ciertos parámetros del indicador o cualquier lógica de cálculo personalizada.

Añadir el indicador a un gráfico en vivo

Ahora cambiaremos a la pestaña Operar en cTrader para adjuntar nuestro indicador personalizado a un gráfico en vivo. Abra el gráfico para el símbolo que desea analizar.

En el menú de la parte superior, haga clic en el icono Indicadores para abrir una nueva sección.

Después, seleccione Personalizado y, en el menú recién aparecido, elija el indicador personalizado que hemos creado (Media móvil simple).

Verá una nueva ventana que le permite personalizar los parámetros del indicador. Después de elegir los valores que prefiera, haga clic en Aceptar para añadir el indicador al gráfico del símbolo elegido.

Para volver a la ventana de configuración del indicador, haga clic derecho en las salidas del indicador. En nuestro caso, podemos hacer clic derecho en la línea turquesa. Alternativamente, haga clic en el icono Propiedades que aparece cuando pasa el cursor sobre el nombre del indicador en el gráfico.

Aparecerá la ventana de configuración del indicador, y podrá cambiar el color de la línea trazada así como su grosor.

Image title