Кубик "FallRaiseSomeBars"

Периодически в скриптах встречается условие о проверке роста, падения, равенства значений несколько баров подряд. Обычно это решается формулой значение<значения[i-1] && значение[i-1]<значения[i-2] и т.д., что, как мне кажется, очень неудобно т.к. совершенно не гибко, например, нельзя оптимизировать и добавляет в скрипт ряд "монстроформул". Поэтому сделал кубик, который на выходе выдает булево значение на основании поданного ряда данных типа Double. Кубик принимает на вход как потоковые, так и не потоковые данные.

У кубика имеются следующие настройки:
  • Баров для анализа. Данная настройка определяет количество баров от текущего назад, за которое будет анализироваться рост или падение (не включая текущий бар) показателя. В случае если указано отрицательное или нулевое значение, то будет использовано значение по умолчанию "один", то есть будет показан рост/падение только с прошлого бара. Например, если номер текущего бара равен 2 и в настройке указано 2, то кубик сравнит бар №0 с баром №1, потом бар №1 с баром №2 и только если на каждом из указанных в настройке баров условие выполнится, то кубик покажет "true", в противном случае кубик выдаст "false", при этом для оптимизации алгоритм сделан так, что если хотя бы на одном из указанных в настройке баров условие не выполняется, то последующие бары для экономии вычислительных мощностей не проверяются, т.к. в этом нет смысла в связи с тем, что одно из условий серии не выполняется, а, стало быть, не выполняется вся серия условий. В случае если указанное кол-во баров для анализа больше текущего кол-ва баров, то до момента достижения указанного бара кубик будет выдавать "false". Например, если указано 5 баров, то первое значение появится только по закрытию пятого бара, то этого момента кубик будет выдавать "false".
  • Тип сравнения. Данная настройка задает тип сравнения показателей: Растет, Падает, НеМеняется.
Примечание: Кубик работает только совместно с библиотекой ServiceLib, которую необходимо поместить в папку Handlers

Дисклеймер: Кубик предоставляется "as is", но с обязательным тестированием и проверкой всех данных вручную. При выявлении багов просьба писать в телеграмм: @AleksandrGanov.



Attachments
ПримерИспользования.png (212 downloads)
FallRaiseSomeBars.cs (69 downloads)
gaaCommon_ServiceLib.zip (54 downloads)
gaaIndicators_FallRaiseSomeBars.zip (51 downloads)



Отредактировано AleksandrGanov (Sun Aug 15 2021 11:24 AM)