Пример: Работаем с Обновляемым значением

«По просьбам трудящихся» (С) http://www.tslab.ru/ubb/ubbthreads.php?ubb=showflat&Number=7572#Post7572 smile и вообще по причине многочисленных и пока малоизведанных возможностей блока Обновляемое значение выкладываю вот такой примерчик.

Задача. Считать количество моментов, когда некое Условие истинно. А при наступлении некого другого Условия, обнулить и начать считать заново.

Реализация. Для решения нам потребуется само Условие. Пусть это будет простое пересечение Цены закрытия и EMA. Эти события мы и будем считать. А считать будем до тех пор, пока количество пересечений будет < некой величины, допустим 10. После этого нужно «сбросить» счетчик и начать заново.

Разберемся сначала с подсчетом количества событий. Для начала назовем блок Обновляемое значение – accum. Далее собираем:
• Блок Пересечения соединяем с блоком Обновляемое значение. Стрелка должна быть направлена от блока Пересечение к Обновляемому значению
• Добавляем блок Формула.
• Соединяем Блок Формула и блок Обновляемое значение так, чтобы стрелка была направлена от блока Обновляемое значение в блок Формула. Этим самым мы передаем хранимое значение блока в блок Формула
• Пишем в блоке Формула: accum+1
• Теперь соединяем Блок Формула и блок Обновляемое значение так, чтобы стрелка была направлена от блока Формула в блок Обновляемое значение. Этим самым мы возвращаем в блок Обновляемое значение хранимую там ранее величину увеличенную на 1. Т.е. проще говоря, посчитали еще одно событие – «плюс один»

Сейчас в блоке Обновляемое значение идет подсчет всех Пересечений. Осталось реализовать, чтобы выполнялось условие accum<10. Для этого модифицируем выражение в блоке Формула:

Code:
(accum<10) ? (accum+1) : 0


Что говорит: Если текущее значение accum < 10, то прибавляем 1 (учитываем событие), в противном случае, обнуляем.

Картинка:



Attachments
Image.png (11032 downloads)
Increment.xml (1040 downloads)



Отредактировано SysKreator (Thu Jul 01 2010 02:53 PM)