Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 6. - страница 977

 
Vadim_2015:


Смотрите в справке функции, а на форуме - примеры с их применением:

1.   iHighest/iLowest 
- чтобы не было путаницы, эти функции возвращают индекс, соответствующий максимальной/минимальной цене.
Затем надо поместить их значения в High[] / Low[]. На форуме найдете множество примеров.

2.   iBarShift
 

Спасибо что откликнулись. 

1_Да я пробовал использовать  _iHighest, но она ведь возвращает индекс(номер бара) наибольшего найденного значения (смещение относительно "текущего бара").  А я имею ввиду, вот выполнилось у меня определенное условие на i -том баре,   этот бар соответствует времени, допустим 10:00, вот тут и нужен мне максимум от _10:00 до конца дня _00:00. Если можете, хотя бы немного черканите, как? Как увязать  iHighest High[] / Low[] про которые Вы говорили.

2_  iBarShift ведь возвращает индекс бара, в который попадает указанное время. Индекс одного бара. Я имел ввиду, нужно подсчитать сколько всего баров в истории(на графике), с определенным временем_12:00_13:00_14:00, и.т.д. iBars тоже не то.    

atztek:

Смотрите в справке функции, а на форуме - примеры с их применением:

1.   iHighest/iLowest 
- чтобы не было путаницы, эти функции возвращают индекс, соответствующий максимальной/минимальной цене.
Затем надо поместить их значения в High[] / Low[]. На форуме найдете множество примеров.

2.   iBarShift

 
Vadim_2015:

Спасибо что откликнулись. 

1_Да я пробовал использовать  _iHighest, но оно ведь возвращает индекс наибольшего найденного значения (смещение относительно "текущего бара").  А я имею ввиду, вот выполнилось у меня определенное условие на i -том баре,   это бар соответствует времени, допустим 10:00, вот тут и нужен мне максимум от _10:00 до конца дня _00:00. Если можете, хотя бы немного черканите, как? Как увязать  iHighest High[] / Low[] про которые Вы говорили.

2_  iBarShift ведь возвращает индекс бара, в который попадает указанное время. Индекс одного бара. Я имел ввиду, нужно подсчитать сколько всего баров в истории(на графике), с определенным временем_12:00_13:00_14:00, и.т.д. iBars тоже не то.    

1. На рассматриваемом Вами отрезке iHighest вернет некоторое значение, которое можно сохранить в переменной, скажем 'Index_Max'. Чтобы получить значение цены Вам надо будет совершить простую операцию => High[Index_Max].

2. iBarShift возвращает количество баров до указанного времени.

Забудьте на время про то что что Вам надо запрограммировать, создайте небольшие примеры для каждого из случаев и на их основе изучите как это работает.
 
atztek:
1. На рассматриваемом Вами отрезке iHighest вернет некоторое значение, которое можно сохранить в переменной, скажем 'Index_Max'. Чтобы получить значение цены Вам надо будет совершить простую операцию => High[Index_Max].

2. iBarShift возвращает количество баров до указанного времени.

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

Может я что то не понимаю, но из ...Справочник MQL4 Доступ к таймсериям и индикаторам / iBarShift

" iBarShift - Поиск бара по времени. Функция возвращает индекс бара, в который попадает указанное время. 

Возвращаемое значение - Индекс бара, в который попадает указанное время. Если для указанного времени бар отсутствует ("дыра" в истории), то функция возвращает -1 или индекс ближайшего бара. " ,

а не количество баров до указанного времени.  

Да, примеры уже использую, но все не то. Разные функции пробовал.   Попробую Ваш вариант.  А как быть все-таки с подсчетом баров-времени? Как их со считать? 

 Спасибо!  

 
Vadim_2015:


Может я что то не понимаю, но из ...Справочник MQL4 Доступ к таймсериям и индикаторам / iBarShift

" iBarShift - Поиск бара по времени. Функция возвращает индекс бара, в который попадает указанное время. 

Возвращаемое значение - Индекс бара, в который попадает указанное время. Если для указанного времени бар отсутствует ("дыра" в истории), то функция возвращает -1 или индекс ближайшего бара. " ,

а не количество баров до указанного времени.  

Да, примеры уже использую, но все не то. Разные функции пробовал.   Попробую Ваш вариант.  А как быть все-таки с подсчетом баров-времени? Как их со считать? 

 Спасибо!  

Вы правы, но зная индекс бара Вы можете узнать и их количество на участке, не так ли?
 
Vadim_2015:

2_ это еще не все, простите за наглость, есть функция 'iBars'( Возвращает количество баров в истории по соответствующему символу и периоду). Подскажите пожалуйста, какой комбинацией функций можно подсчитать не только по соответствующему  символу и периоду, но и сколько баров со временем скажем так,"12:00" или допустим "15:00" в истории(PERIOD_H1).
 

12:00 и\или 15:00 бывает только 1 раз в сутки. Соответственно если определить количество или номер последнего бара периода PERIOD_D1 то это и будет количество баров с временем 12:00 или любым другим временем.

Может на первый взгляд это не совсем понятно, но алгоритм примерно такой:

Определяем время старшего бара текущего периода с помощью Bars. datetime time = Time[Bars-1];

Определяем номер бара iBarShift(_Symbol, PERIOD_D1, time, false);

 
Как определить символ текущего активного графика?  Т.е. графика, закладка/окно которого активны в данный момент, а не того, куда прикреплен индикатор/эксперт. Т.е. нужно чтобы советник, работающий на каком то графике знал символ того графика, который в данный момент выбрал юзер.
 
СПАСИБО ВАМ ОГРОМНОЕ!
 
AlexPORT:
Как определить символ текущего активного графика?  Т.е. графика, закладка/окно которого активны в данный момент, а не того, куда прикреплен индикатор/эксперт. Т.е. нужно чтобы советник, работающий на каком то графике знал символ того графика, который в данный момент выбрал юзер.
Нет такого, чтобы определить програмно символ активного графика. Можно лишь определять символ того графика, на котором работает индикатор/советник _Symbol, Symbol().
 

AlexeyVik:

Может на первый взгляд это не совсем понятно, но алгоритм примерно такой:

Определяем время старшего бара текущего периода с помощью Bars. datetime time = Time[Bars-1];

Определяем номер бара iBarShift(_Symbol, PERIOD_D1, time, false);

 Алгоритм понятен, разобрался. Сделал на примере, все работает. 

Спасибо огромное!

А, с первым вопросом(про максимумы), не объясните по-подробнее, как его реализовать?  Если можно с небольшим алгоритмом. Уж больно хорошо у Вас получается:)

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