Перейти к содержанию

Как добавить облака к индикаторам cTrader

cTrader Algo позволяет рисовать облака между линиями на графике. Такие облака позволяют быстро определять ключевые области на графиках и обнаруживать изменения в поведении рынка.

В этой статье и соответствующем видео мы покажем вам, как добавлять и настраивать облака в индикаторах.

Добавить индикатор

Типичный индикатор Bollinger Bands состоит из верхней полосы, нижней полосы и простой скользящей средней посередине. Чтобы улучшить внешний вид индикатора, мы планируем заполнить пространство между полосами облаком.

Чтобы создать индикатор, откройте приложение Algo и перейдите на вкладку Индикаторы. Нажмите кнопку Создать, введите имя индикатора, например «Bollinger Bands Cloud», затем нажмите кнопку Создать.

Теперь мы можем изменить код индикатора. Мы сделаем наш пример оверлей-индикатором.

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

Затем добавим три выходные линии, необходимые для отрисовки Bollinger Bands на графике.

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

Объявим наш индикатор Bollinger Bands.

1
private BollingerBands _bollingerBands;

Инициализируем индикатор.

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

Заполним линии значениями индикатора в методе Calculate().

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

Вы можете скопировать полный код ниже:

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

Нажмите Собрать или используйте сочетание клавиш Ctrl+B, чтобы собрать индикатор.

Добавьте экземпляр индикатора для символа EURUSD.

Вы должны увидеть типичный индикатор Bollinger Bands на графике.

Добавление облака к Bollinger Bands

Теперь вернемся к редактору кода и поработаем над добавлением облака между полосами.

Чтобы достичь нашей цели, добавим атрибут Cloud к существующему индикатору. Атрибут Cloud указывает индикатору нарисовать облако между линиями Top и Bottom.

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

Вы можете скопировать полный измененный код ниже:

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

Пересоберем алгоритм и затем проверим наш индикатор, чтобы увидеть, что изменилось.

Вы должны увидеть красное облако между полосами. Если вы измените цвет линии Top, цвет облака обновится автоматически.

Возвращаемся в редактор кода и изменяем атрибут Cloud, чтобы облако отображалось только перед линией Main (желтой).

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

Пересобираем индикатор и проверяем его новый вид.

Добавление облака к пересечению MA

Мы создадим новый индикатор и используем его, чтобы продемонстрировать, как на график можно добавить облака разных цветов. Мы планируем разработать индикатор пересечения Moving Average (MA) с зеленым облаком для восходящих трендов и красным облаком для нисходящих трендов.

Повторите шаги из предыдущего раздела, чтобы создать новый индикатор. На этот раз имя индикатора должно быть «MA Cloud».

Начинаем изменять новый индикатор, установив для его свойства IsOverlay значение True.

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

Добавьте необходимый атрибут Cloud.

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

Добавьте выходные линии и объявите скользящие средние.

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;

Повторите шаг из предыдущего примера (Bollinger Bands). Инициализируйте скользящие средние и передайте полученные значения линиям, чтобы они отображались на графике.

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

Вы можете скопировать полный код ниже:

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

Соберите индикатор и добавьте экземпляр, чтобы просмотреть индикатор на графике.

Цвета облака меняются при каждом пересечении скользящих средних.

В этой статье мы показали вам, как добавлять полезные облака к индикаторам в cTrader.

Image title