Новый бар на нескольких таймфреймах

 

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

Если сигнал появился на дневном графике, соответственно, оповещение приходит 24 раза(с учетом, что график открыт на часовом таймфрейме). А нужно, чтоб оповещение приходило всего 1 раз, на каком бы таймфрейме не был открыт график и не зависимо от таймфрейма, на котором появился сигнал.

Если кто-то пользуется функцией решающей подобную проблему или видел ее где-то, просьба поделиться.

 
Ermak1243:

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

Если сигнал появился на дневном графике, соответственно, оповещение приходит 24 раза(с учетом, что график открыт на часовом таймфрейме). А нужно, чтоб оповещение приходило всего 1 раз, на каком бы таймфрейме не был открыт график и не зависимо от таймфрейма, на котором появился сигнал.

Если кто-то пользуется функцией решающей подобную проблему или видел ее где-то, просьба поделиться.

Не знаю, что там у Вас за оповещение, но никто не мешает связать его отправку не с новым баром, а с новым сигналом. 
 
tara:
Не знаю, что там у Вас за оповещение, но никто не мешает связать его отправку не с новым баром, а с новым сигналом.
Под оповещением я имел ввиду Alert(), который находится в функции OnTick().
 
Ermak1243:
Под оповещением я имел ввиду Alert(), который находится в функции OnTick().
Ну, дык переместите этот алерт в функцию, формирующую сигнал. 
 
tara:
Ну, дык переместите этот алерт в функцию, формирующую сигнал. 
Она уже там:) Дело в том, что работает функция, формирующая сигнал, со свечами и ни с чем больше. И, если не определять начало нового бара, то алерт будет выходить каждый тик, пока не закроется нулевой бар.
В принципе, я придумал метод как этого избежать, но этот метод сильно "раздувает" код.
 
Ermak1243:
Она уже там:) Дело в том, что работает функция, формирующая сигнал, со свечами и ни с чем больше. И, если не определять начало нового бара, то алерт будет выходить каждый тик, пока не закроется нулевой бар.
В принципе, я придумал метод как этого избежать, но этот метод сильно "раздувает" код.
Понятно. Тогда - флаг на глобальном уровне. Устанавливается сигналом, снимается баром. Можно наоборот. 
 
tara:
Понятно. Тогда - флаг на глобальном уровне. Устанавливается сигналом, снимается баром. Можно наоборот. 
Как вариант...
 
Ermak1243:

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

Если сигнал появился на дневном графике, соответственно, оповещение приходит 24 раза(с учетом, что график открыт на часовом таймфрейме). А нужно, чтоб оповещение приходило всего 1 раз, на каком бы таймфрейме не был открыт график и не зависимо от таймфрейма, на котором появился сигнал.

Если кто-то пользуется функцией решающей подобную проблему или видел ее где-то, просьба поделиться.

Элементарно.

 

int prevbars_H4;

...

if(iBars(Symbol(),PERIOD_H4)==prevbars_H4) return; 

prevbars_H4= iBars(Symbol(),PERIOD_H4);
 
eevviill:

Элементарно.

 

И правда-проще простого! :) Спасибо Вам!
Причина обращения: