Оглавление
Индикатор «DeltaByCandles»:
1. Как выглядит и что делает.
2. Обзор кода построчно.
3. Как правильно включать индикатор.
1. Как выглядит и что делает.
Индикатор выглядит следующим образом:

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

1. Отвечает за отображение количества трейдов внутри свечи.
2. Количество трейдов на продажу.
3. Количество трейдов на покупку.
4. Delta - разница между линией трейдов покупки и трейдов продажи.
5. Скользящая средняя Delta.
2. Обзор кода построчно.
Строки 1-4:
Импортируются необходимые пространства имен:
Строки 6-8:
Определяется пространство имен CustomIndicators.Scripts для организации кода и класс DeltaByCandles наследует от Aindicator:

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

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

Проверяем, индикатор используется или нет:
· Если индикатор используется, то мы создаем серии и параметры.
· Если нет, то мы все серии обнуляем.
Строки 40-52:
Метод для обновления значений индикатора:

Метод OnProcess:
1. Проверяем на наличие элементов в массиве, если их нет, то выходим.
2. Далее добавляем в каждую серию данных новые значения:
· _seriesBuy = вызываем метод GetTradeInfo и указываем направление Buy.
· _seriesSell = вызываем метод GetTradeInfo и указываем направление Sell.
· _seriesDelta = разница между объёмом по покупателям и объёмами продавцов.
· _seriesTrade = общее количество объёмов
· _seriesSmaDelta = вызываем метод Sma.
Строки 54-82:
Метод подсчитывает количество объёмов определенного типа:

Метод GetTradesInfo:
1. Инициализируется переменная value для хранения количества сделок, изначально равна 0.
2. Проверяется сторона сделки (side):
· Если сторона покупки (Side.Buy):
· Перебираются все сделки (Trades) внутри указанной свечи (candles[index]).
· Для каждой сделки проверяется сторона сделки (Trade.Side):
· Если сторона сделки совпадает с нужной (покупка), то значение объёма увеличивается.
· Если сторона продажи (Side.Sell):
· Перебираются все сделки (Trades) внутри указанной свечи (candles[index]).
· Для каждой сделки проверяется сторона сделки (Trade.Side):
· Если сторона сделки совпадает с нужной (продажа), то значение объёма увеличивается.
3. Возвращается итоговое значение 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. Возвращается вычисленное среднее значение.
3. Как правильно включать индикатор:
Для работы индикатора в Tester Light нам нужно будет скачать в OsData тиковые данные.
Как скачать тиковые данные для Tester Light есть в нашем FAQ:
Ссылка на статью: Ссылка
После того, как скачали, заходим в Tester Light и в нем уже в DataSetting:

Ставим эту галочку и все будет работать.
Чтобы запустить индикатор в Bot Station Light мы так же заходим в DataSetting и ставим галочку.
Удачных алгоритмов!
Поддержка OsEngine: https://t.me/osengine_official_support
Комментарии