Оптимизация первоначального расчета индикатора - страница 2

 
Prival писал(а) >>

при любом значении Limit, пересчитывается 0 1 и 2 бар. Можете проверить просто вставьте принт

вот что будет в логе при приходе нового тика

2009.03.12 10:24:38 111 EURUSD,M1: i=0

2009.03.12 10:24:38 111 EURUSD,M1: i=1

2009.03.12 10:24:38 111 EURUSD,M1: i=2

2009.03.12 10:24:37 111 EURUSD,M1: i=0

2009.03.12 10:24:37 111 EURUSD,M1: i=1

2009.03.12 10:24:37 111 EURUSD,M1: i=2

Не трудно сделать что бы пересчитывались только нулевой и первый. Первый все равно надо пересчитывать. В любом случае.

 
Vinin писал(а) >>

Не трудно сделать что бы пересчитывались только нулевой и первый. Первый все равно надо пересчитывать. В любом случае.

Почему необходимо пересчитывать 1 бар, если он уже расчитан ?

Для granit77

Для того что бы считался только 0 и 1-ый бар, нужно изменить вот эту строку

   limit=Bars-counted_bars-1;
 
Prival писал(а) >>

Почему необходимо пересчитывать 1 бар, если он уже расчитан ?

А кто сказал что он полностью рассчитан? Появился нулевой, то предыдущий надо рассчитать. Тики могли быть и пропущенными.

 
Спасибо за объяснения. Но вас послушаешь, так в советник придется брать данные даже не с первого, а со второго бара.
 

Зачем? Если в советнике есть контроль начала бара, то индикатор уже рассчитан по всем предыдущим. Если контроля нет, то все равно на первом получается корректное значение.

 
Ну спасибо, успокоил. Это главное, что хотел узнать, как "пользователь пользовательских индикаторов".
 
Mathemat писал(а) >>

Есть индикатор, стоит он на М5. История загружена полная - с 1999. Индикатор тяжелый. Настолько тяжелый, что первоначальный расчет его по всем барам истории происходит долго, секунд 50. А если учесть, что советник, использующий этот индикатор, должен быть мультивалютником, то первоначальный расчет на всех парах, по идее, должен занимать минуты. Долго это, хоть и однажды.

Как я не пытался чесать индикаторы, их использование из советника получается неоправдано тяжелым, да и вообщем-то почти всегда не нужным. Зачастую для рассчета одно единственной цифири производится обсчет хрен знает чего со времен сотворения рынков, из пушки по воробьям и 1-2мя барами тут много не выиграешь.

Варианты решений которые я вынес для себя:

1) Слабенький. Ограничение глубины рачетов индикатора его периодностью и по возможности отказ от графических функций, советнику они без надобности...

2) Посильнее. Перенос необходимых расчетов в код советника.

Конечно, не все и не всегда можно переделать, но в ряде случаев выгрыш весьма ощутим.

З.Ы. Надеюсь хоть индикатор рисует картинки достойные 'А такой рисунок видели?' ?:)

 
Figar0 >>:

..Перенос необходимых расчетов в код индикатора...

Описка?

 
granit77 >>:

Описка?

Даже если описка, то очень даже правильная :), имхо.


Существует целый класс индикаторов, которые переносятся в советник с большими проблемами.

Для остальных время выполнения в подавляющем большинстве случаев некритично, поэтому в индюке держать логику удобней и проще.

 
granit77 писал(а) >>
Ну спасибо, успокоил. Это главное, что хотел узнать, как "пользователь пользовательских индикаторов".

если не нужны расчеты на 0 баре то берите вариант предложенный мной, пока новый бар не придет, ничего не считается + есть ограничение истории (если задать 0 то вся история) + есть защита от подкачки истории

Причина обращения: