Здравствуйте!

Прошу помочь с написанием.

По сути, нужны хотя бы блоки "INT", "DOUBLE", "BOOL".

Сейчас, в нод-программировании нет указанных блоков.

Есть только блок "ОбновляемоеЗначение", который, как выяснилось, не сохраняет данные в течение работы скрипта.

Итак, "ОбновляемоеЗначение" хранит некую переменную типа "double".

Этот блок пересчитывается при наступлении некоторых событий ТОЛЬКО НА ЗАДАННОМ ДИАПАЗОНЕ.

Пример:
мне нужно посчитать количество баров сессии, начиная от 10.00 и заканчивая 23.50.
Пересчет происходит по приходу каждого нового бара, поэтому во вход "условие обновления" мы втыкаем Логическую_Формулу (или логическую константу) true.

Во вход обновляемого значения, втыкаем Формулу, вход для которой - это же обновляемое значение. В формуле пишем: ОбновляемоеЗначение+1.

Теперь, по приходу каждого тика, формула будет инкрементировать наше Обновляемое значение.

Теперь, для ускорения работы скрипта, мы ограничиваем количество просматриваемых баров - 10 000 единиц.

Выводим в Окно графика ОбновляемоеЗначение и видим:
конечная точка всегда равна 10 000, а начальная - 0.

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

По сути, для этой ситуации, нам нужен блок, хранящий в себе некое число (в нашем случае - целочисленное). Назовем этот блок "INT".
Мы запускаем алгоритм на реальном инструменте, и в течение всей работы программы (пока открыт наш скрипт или агент с этим скриптом), наше значение INT сохраняется.

В скрипте, мы проверяем некие условия, и когда эти условия наступают, мы обновляем значение INT или обнуляем до стартового, которое мы передаем в начале.

Пример использования
Нам нужно посчитать количество пересечений цены с Moving Average за месяц.
При этом, для ускорения работы алгоритма, мы установили параметр "МаксБаров" = 500.
То есть, мы, подключившись к реальному инструменту, видим только последние 500 баров в течение дня, и не видим предыдущие данные в течение дня.

С 1 по 12 число, мы, воспользовавшись историческими данными, посчитали, что количество пересечений равно 20 (стартовое значение INT = 20).

Теперь, с каждым наступлением события "пересечение цены и MA", мы берем наш INT и увеличиваем на 1, соединив выход INT с формулой (int+1), выход которой ставим во вход int.

В течение дня, нам пришло 1500 баров.
*На первых 500 барах, было одно пересечение, и наш INT стал равен 21.
*На вторых 500 барах, пересечений не было, наш INT остался равен 21 (в отличие от блока "обновляемое значение", которое здесь посчитало бы количество пересечений, равное 0 и возвращающее стартовое число 20).
*На третьих 500 барах, было 3 пересечения, INT равен 24.

Мы закончили торговую сессию, закрыли программу.
На следующий день, включаем и видим: INT = 20. Теперь, устанавливаем значение 24 и запускаем алгоритм.

При включенной опции "не очищать", на следующий день, наш INT должен хранить значение 24.

_____________________

Вопрос: как написать подобный блок?
Где найти мануалы по написанию блоков?


Отредактировано Atomic (Thu Oct 13 2016 02:44 PM)