Индикатор «DeltaByCandles».

Индикатор «DeltaByCandles».

Индикатор «DeltaByCandles» - сложный технический пример. Подробно рассмотрим код индикатора и принцип его работы.

Индикатор выглядит следующим образом:

В нем у нас 4 линии и одна диаграмма:

1. Отвечает за отображение количества трейдов внутри свечи.

2. Количество трейдов на продажу.

3. Количество трейдов на покупку.

4. Delta - разница между линией трейдов покупки и трейдов продажи.

5. Скользящая средняя Delta.

1. Обзор кода построчно.

Строки 1-4:

Импортируются необходимые пространства имен:

Строки 6-8:

Определяется пространство имен CustomIndicators.Scripts для организации кода и класс DeltaByCandles наследует от Aindicator:

Строки 10-16:

Этот блок отвечает за набор серий данных и параметров индикатора:

Строка 20-36:

Создание серий данных и параметров индикатора:

Проверяем, индикатор используется или нет:

Если индикатор используется, то мы создаем серии и параметры.

Если нет, то мы все серии обнуляем.

 

Строки 40-52:

Динамический метод для обновления значений индикатора:

Метод OnProcess:

Проверяем на наличие элементов в массиве, если их нет, то выходим.

Далее добавляем в каждую серию данных новые значения:

_seriesTrade = общее количество трейдов.

_seriesBuy = вызываем метод GetTradeInfo и указываем направление Buy.

_seriesSell = вызываем метод GetTradeInfo и указываем направление Sell.

_seriesDelta = вызываем метод GetTradeInfo и указываем направление Buy. Вызываем метод GetTradeInfo и указываем направление Sell.

_seriesSmaDelta = вызываем метод Sma.

 

Строки 54-82:

Метод подсчитывает количество сделок определенного типа:

Метод GetTradesInfo:

1. Инициализируется переменная value для хранения количества сделок, изначально равна 0.

2. Проверяется сторона сделки (side):

Если сторона покупки (Side.Buy):

Перебираются все сделки (Trades) внутри указанной свечи (candles[index]).

Для каждой сделки проверяется сторона сделки (Trade.Side):

Если сторона сделки совпадает с нужной (покупка), то значение value увеличивается на 1.

Если сторона продажи (Side.Sell):

Перебираются все сделки (Trades) внутри указанной свечи (candles[index]).

Для каждой сделки проверяется сторона сделки (Trade.Side):

Если сторона сделки совпадает с нужной (продажа), то значение value увеличивается на 1.

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

 

Строки 84-99:

Метод для нахождения скользящей средней:

Метод Sma:

1. Проверяется, достаточно ли элементов в списке для вычисления средней. Если индекс index меньше заданного значения _lengthSmaDelta.ValueInt, то возвращается 0, так как нет достаточных данных.

2. Инициализируется переменная values для хранения суммы значений, изначально равна 0.

3. Перебираются предыдущие элементы в списке:

Для каждого элемента, начиная с value[index - 1] и заканчивая value[index - (_lengthSmaDelta.ValueInt - 1)], его значение добавляется к values.

4. Вычисляется среднее значение путем деления суммы values на количество элементов _lengthSmaDelta.ValueInt.

5. Возвращается вычисленное среднее значение.

 

2.     Как правильно включать индикатор.

Для работы индикатора в Tester Light нам нужно будет скачать в OsData тиковые данные.

Как скачать тиковые данные для Tester Light.

После того, как скачали, заходим в Tester Light и в нем уже в DataSetting:

Ставим эту галочку и все будет работать.

Чтобы запустить индикатор в Bot Station Light мы так же заходим в DataSetting и ставим галочку.

Удачных алгоритмов!

Поддержка OsEngine: https://t.me/osengine_official_support

16:16
56

Комментарии

Нет комментариев. Ваш будет первым!