Saltar a contenido

Cómo añadir nubes a los indicadores de cTrader

cTrader Algo le permite dibujar nubes entre líneas en un gráfico. Estas nubes le permiten identificar rápidamente áreas clave en los gráficos y detectar cambios en el comportamiento del mercado.

En este artículo y su vídeo correspondiente, le mostraremos cómo añadir y personalizar nubes en los indicadores.

Añadir un indicador

Un indicador típico de Bollinger Bands consiste en una banda superior, una banda inferior y una media móvil simple en el medio. Para mejorar la apariencia del indicador, planeamos rellenar el espacio entre las bandas con una nube.

Para crear el indicador, abra la aplicación Algo y navegue a la pestaña Indicadores. Haga clic en el botón Nuevo, escriba un nombre para el indicador, como "Bollinger Bands Cloud" y luego haga clic en el botón Crear.

Ahora podemos modificar el código del indicador. Haremos de nuestro ejemplo un indicador de superposición.

1
[Indicator(AccessRights = AccessRights.None, IsOverlay = true)]

Luego añadimos las tres líneas de salida necesarias para dibujar las Bollinger Bands en el gráfico.

1
2
3
4
5
6
7
8
[Output("Main", LineColor = "Yellow", PlotType = PlotType.Line, Thickness = 1)]
public IndicatorDataSeries Main { get; set; }

[Output("Top", LineColor = "Red", PlotType = PlotType.Line, Thickness = 1)]
public IndicatorDataSeries Top { get; set; }

[Output("Bottom", LineColor = "Red", PlotType = PlotType.Line, Thickness = 1)]
public IndicatorDataSeries Bottom { get; set; }

Declaramos nuestro indicador de Bollinger Bands.

1
private BollingerBands _bollingerBands;

Inicializamos el indicador.

1
_bollingerBands = Indicators.BollingerBands(Bars.ClosePrices, 20, 2, MovingAverageType.Simple);

Poblamos las líneas con los valores del indicador en el método Calculate().

1
2
3
Main[index] = _bollingerBands.Main[index];
Top[index] = _bollingerBands.Top[index];
Bottom[index] = _bollingerBands.Bottom[index];

Puede copiar el código completo 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
27
28
29
30
31
32
33
34
35
36
37
38
using System;
using cAlgo.API;
using cAlgo.API.Collections;
using cAlgo.API.Indicators;
using cAlgo.API.Internals;

namespace cAlgo
{
    [Indicator(AccessRights = AccessRights.None, IsOverlay = true)]

    public class BollingerBandsCloud : Indicator
    {

        [Output("Main", LineColor = "Yellow", PlotType = PlotType.Line, Thickness = 1)]
        public IndicatorDataSeries Main { get; set; }

        [Output("Top", LineColor = "Red", PlotType = PlotType.Line, Thickness = 1)]
        public IndicatorDataSeries Top { get; set; }

        [Output("Bottom", LineColor = "Red", PlotType = PlotType.Line, Thickness = 1)]
        public IndicatorDataSeries Bottom { get; set; }

        private BollingerBands _bollingerBands;


        protected override void Initialize()
        {
            _bollingerBands = Indicators.BollingerBands(Bars.ClosePrices, 20, 2, MovingAverageType.Simple);
        }

        public override void Calculate(int index)
        {
            Main[index] = _bollingerBands.Main[index];
            Top[index] = _bollingerBands.Top[index];
            Bottom[index] = _bollingerBands.Bottom[index];
        }
    }
}

Haga clic en Compilar o use el atajo Ctrl+B para compilar el indicador.

Añada una instancia de indicador para el símbolo EURUSD.

Debería ver un indicador típico de Bollinger Bands en el gráfico.

Añadir una nube a las Bollinger Bands

Ahora, volvemos al editor de código y luego trabajamos en añadir una nube entre las bandas.

Para lograr nuestro objetivo, añadimos el atributo Cloud al indicador existente. El atributo Cloud instruye al indicador para que dibuje una nube entre las líneas Top y Bottom.

1
[Cloud("Top", "Bottom", Opacity = 0.2)]

Puede copiar el código completo alterado 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
27
28
29
30
31
32
33
34
35
36
37
38
using System;
using cAlgo.API;
using cAlgo.API.Collections;
using cAlgo.API.Indicators;
using cAlgo.API.Internals;

namespace cAlgo
{
    [Indicator(AccessRights = AccessRights.None, IsOverlay = true)]
    [Cloud("Top", "Bottom", Opacity = 0.2)]

    public class BollingerBandsCloud : Indicator
    {

        [Output("Main", LineColor = "Yellow", PlotType = PlotType.Line, Thickness = 1)]
        public IndicatorDataSeries Main { get; set; }

        [Output("Top", LineColor = "Red", PlotType = PlotType.Line, Thickness = 1)]
        public IndicatorDataSeries Top { get; set; }

        [Output("Bottom", LineColor = "Red", PlotType = PlotType.Line, Thickness = 1)]
        public IndicatorDataSeries Bottom { get; set; }

        private BollingerBands _bollingerBands;

        protected override void Initialize()
        {
            _bollingerBands = Indicators.BollingerBands(Bars.ClosePrices, 20, 2, MovingAverageType.Simple);
        }

        public override void Calculate(int index)
        {
            Main[index] = _bollingerBands.Main[index];
            Top[index] = _bollingerBands.Top[index];
            Bottom[index] = _bollingerBands.Bottom[index];
        }
    }
}

Recompilamos el algoritmo y luego comprobamos nuestro indicador para ver qué ha cambiado.

Debería ver una nube roja entre las bandas. Si cambia el color de la línea Top, el color de la nube se actualizará automáticamente.

Volvemos al editor de código y cambiamos el atributo Cloud para dibujar una nube solo antes de la línea Main (amarilla).

1
[Cloud("Top", "Main", Opacity = 0.2)]

Recompile el indicador y luego compruébelo para confirmar su nuevo aspecto.

Añadir nube al cruce de MA

Crearemos un nuevo indicador y lo usaremos para demostrar cómo se pueden añadir nubes de diferentes colores a un gráfico. Tenemos la intención de desarrollar un indicador de Cruce de Media Móvil (MA) con una nube verde para tendencias alcistas y una nube roja para tendencias bajistas.

Repita los pasos de la sección anterior para crear un nuevo indicador. Esta vez, el nombre del indicador debe ser "MA Cloud".

Comenzamos modificando el nuevo indicador estableciendo su propiedad IsOverlay en True.

1
[Indicator(AccessRights = AccessRights.None, IsOverlay = true)]

Añadimos el atributo Cloud requerido.

1
[Cloud("Fast", "Slow", Opacity = 0.2)]

Añadimos las líneas de salida y declaramos las medias móviles.

1
2
3
4
5
6
7
8
[Output("Fast", LineColor = "Green", PlotType = PlotType.Line, Thickness = 1)]
public IndicatorDataSeries Fast { get; set; }

[Output("Slow", LineColor = "Red", PlotType = PlotType.Line, Thickness = 1)]
public IndicatorDataSeries Slow { get; set; }

SimpleMovingAverage _fastMA;
SimpleMovingAverage _slowMA;

Repetimos el paso del ejemplo anterior (Bollinger Bands). Inicializamos las medias móviles y pasamos los valores resultantes a las líneas para que se muestren en el gráfico.

1
2
3
4
5
_fastMA = Indicators.SimpleMovingAverage(Bars.ClosePrices, 7);
_slowMA = Indicators.SimpleMovingAverage(Bars.ClosePrices, 13);

Fast[index] = _fastMA.Result[index];
Slow[index] = _slowMA.Result[index];

Puede copiar el código completo 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
27
28
29
30
31
32
33
34
35
36
37
38
using System;
using cAlgo.API;
using cAlgo.API.Collections;
using cAlgo.API.Indicators;
using cAlgo.API.Internals;

namespace cAlgo
{
    [Indicator(AccessRights = AccessRights.None, IsOverlay = true)]
    [Cloud("Top", "Bottom", Opacity = 0.2)]

    public class BollingerBandsCloud : Indicator
    {

        [Output("Main", LineColor = "Yellow", PlotType = PlotType.Line, Thickness = 1)]
        public IndicatorDataSeries Main { get; set; }

        [Output("Top", LineColor = "Red", PlotType = PlotType.Line, Thickness = 1)]
        public IndicatorDataSeries Top { get; set; }

        [Output("Bottom", LineColor = "Red", PlotType = PlotType.Line, Thickness = 1)]
        public IndicatorDataSeries Bottom { get; set; }

        private BollingerBands _bollingerBands;

        protected override void Initialize()
        {
            _bollingerBands = Indicators.BollingerBands(Bars.ClosePrices, 20, 2, MovingAverageType.Simple);
        }

        public override void Calculate(int index)
        {
            Main[index] = _bollingerBands.Main[index];
            Top[index] = _bollingerBands.Top[index];
            Bottom[index] = _bollingerBands.Bottom[index];
        }
    }
}

Compile el indicador y añada una instancia para ver el indicador en un gráfico.

Los colores de la nube cambian en cada cruce (intersección) de las medias móviles.

Este artículo le mostró cómo añadir nubes útiles a los indicadores en cTrader.

Image title