Индикатор «DeltaByCandles» - сложный технический пример. Подробно рассмотрим код индикатора и принцип его работы.
Индикатор выглядит следующим образом:
В нем у нас 4 линии и одна диаграмма:
1. Отвечает за отображение количества трейдов внутри свечи.
2. Количество трейдов на продажу.
3. Количество трейдов на покупку.
4. Delta - разница между линией трейдов покупки и трейдов продажи.
5. Скользящая средняя Delta.
Строки 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. Возвращается вычисленное среднее значение.
Для работы индикатора в Tester Light нам нужно будет скачать в OsData тиковые данные.
Как скачать тиковые данные для Tester Light.
После того, как скачали, заходим в Tester Light и в нем уже в DataSetting:
Ставим эту галочку и все будет работать.
Чтобы запустить индикатор в Bot Station Light мы так же заходим в DataSetting и ставим галочку.
Удачных алгоритмов!
Поддержка OsEngine: https://t.me/osengine_official_support
Комментарии