Скачать MetaTrader 5
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
У тебя Linux? Узнай, как установить на нее MetaTrader!
Igor Knyazkov
784
Igor Knyazkov 2016.02.26 18:38 

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

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

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

Алексей Тарабанов
7220
Алексей Тарабанов 2016.02.26 19:01  
Ermak1243:

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

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

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

Не знаю, что там у Вас за оповещение, но никто не мешает связать его отправку не с новым баром, а с новым сигналом. 
Igor Knyazkov
784
Igor Knyazkov 2016.02.26 19:24  
tara:
Не знаю, что там у Вас за оповещение, но никто не мешает связать его отправку не с новым баром, а с новым сигналом.
Под оповещением я имел ввиду Alert(), который находится в функции OnTick().
Алексей Тарабанов
7220
Алексей Тарабанов 2016.02.26 19:34  
Ermak1243:
Под оповещением я имел ввиду Alert(), который находится в функции OnTick().
Ну, дык переместите этот алерт в функцию, формирующую сигнал. 
Igor Knyazkov
784
Igor Knyazkov 2016.02.26 19:44  
tara:
Ну, дык переместите этот алерт в функцию, формирующую сигнал. 
Она уже там:) Дело в том, что работает функция, формирующая сигнал, со свечами и ни с чем больше. И, если не определять начало нового бара, то алерт будет выходить каждый тик, пока не закроется нулевой бар.
В принципе, я придумал метод как этого избежать, но этот метод сильно "раздувает" код.
Алексей Тарабанов
7220
Алексей Тарабанов 2016.02.26 20:27  
Ermak1243:
Она уже там:) Дело в том, что работает функция, формирующая сигнал, со свечами и ни с чем больше. И, если не определять начало нового бара, то алерт будет выходить каждый тик, пока не закроется нулевой бар.
В принципе, я придумал метод как этого избежать, но этот метод сильно "раздувает" код.
Понятно. Тогда - флаг на глобальном уровне. Устанавливается сигналом, снимается баром. Можно наоборот. 
Igor Knyazkov
784
Igor Knyazkov 2016.02.26 21:19  
tara:
Понятно. Тогда - флаг на глобальном уровне. Устанавливается сигналом, снимается баром. Можно наоборот. 
Как вариант...
Vasyl Nosal
18216
Vasyl Nosal 2016.02.26 21:33  
Ermak1243:

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

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

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

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

 

int prevbars_H4;

...

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

prevbars_H4= iBars(Symbol(),PERIOD_H4);
Igor Knyazkov
784
Igor Knyazkov 2016.02.27 07:42  
eevviill:

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

 

И правда-проще простого! :) Спасибо Вам!
/
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий