Ir para o conteúdo

Como adicionar nuvens aos indicadores do cTrader

O cTrader Algo permite-lhe desenhar nuvens entre linhas num gráfico. Estas nuvens permitem-lhe identificar rapidamente áreas-chave nos gráficos e detetar mudanças no comportamento do mercado.

Neste artigo e no vídeo correspondente, mostraremos como adicionar e personalizar nuvens nos indicadores.

Adicionar um indicador

Um indicador típico de Bollinger Bands consiste numa banda superior, uma banda inferior e uma média móvel simples no meio. Para melhorar a aparência do indicador, planeamos preencher o espaço entre as bandas com uma nuvem.

Para criar o indicador, abra a aplicação Algo e navegue até ao separador Indicadores. Clique no botão Novo, digite um nome para o indicador, como "Bollinger Bands Cloud" e depois clique no botão Criar.

Agora podemos modificar o código do indicador. Faremos do nosso exemplo um indicador de sobreposição.

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

Em seguida, adicionamos as três linhas de saída necessárias para desenhar as Bollinger Bands no 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 o nosso indicador de Bollinger Bands.

1
private BollingerBands _bollingerBands;

Inicializamos o indicador.

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

Preenchemos as linhas com os valores do indicador no método Calculate().

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

Pode copiar o código completo abaixo:

 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];
        }
    }
}

Clique em Compilar ou utilize o atalho Ctrl+B para compilar o indicador.

Adicione uma instância do indicador para o símbolo EURUSD.

Deverá ver um indicador típico de Bollinger Bands no gráfico.

Adicionar uma nuvem às Bollinger Bands

Agora, voltamos ao editor de código e depois trabalhamos na adição de uma nuvem entre as bandas.

Para atingir o nosso objetivo, adicionamos o atributo Cloud ao indicador existente. O atributo Cloud instrui o indicador a desenhar uma nuvem entre as linhas Top e Bottom.

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

Pode copiar o código completo alterado abaixo:

 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 o algoritmo e depois verificamos o nosso indicador para ver o que mudou.

Deverá ver uma nuvem vermelha entre as bandas. Se alterar a cor da linha Top, a cor da nuvem será atualizada automaticamente.

Voltamos ao editor de código e alteramos o atributo Cloud para desenhar uma nuvem apenas antes da linha Main (amarela).

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

Recompile o indicador e depois verifique-o para confirmar o seu novo aspeto.

Adicionar nuvem ao cruzamento de MA

Vamos criar um novo indicador e usá-lo para demonstrar como nuvens com cores diferentes podem ser adicionadas a um gráfico. Pretendemos desenvolver um indicador de Cruzamento de Média Móvel (MA) com uma nuvem verde para tendências ascendentes e uma nuvem vermelha para tendências descendentes.

Repita os passos da secção anterior para criar um novo indicador. Desta vez, o nome do indicador deve ser "MA Cloud".

Começamos a modificar o novo indicador definindo a sua propriedade IsOverlay como True.

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

Adicione o atributo Cloud necessário.

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

Adicione as linhas de saída e declare as médias móveis.

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;

Repita o passo do exemplo anterior (Bollinger Bands). Inicialize as médias móveis e passe os valores resultantes para as linhas para que sejam exibidas no 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];

Pode copiar o código completo abaixo:

 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];
        }
    }
}

Construa o indicador e adicione uma instância para visualizar o indicador num gráfico.

As cores da nuvem mudam a cada cruzamento (interseção) das médias móveis.

Este artigo mostrou-lhe como adicionar nuvens úteis aos indicadores no cTrader.

Image title