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

 
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);

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

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

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

 
Vadim_2015:

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

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

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

Я рад что меня понимает ещё кто-то кроме меня самого.

Vadim_2015:
Здравствуйте уважаемые форумчане!

Начал изучать язык MQL4 и при написании простого индикатора столкнулся с проблемой, которую никак не могу решить. Суть проблемы:

1_как найти High оставшейся части дня, есть простой цикл Close[i]-Open[i+1], необходимо найти High[i - до конца дня]. Например, от[i],[1],[2] и до конца дня (PERIOD_H1) . Ума не приложу как это сделать. Есть функция      'iHigh' , но это немного не то.


Это как раз то что надо. High текущего дня независимо от того, сколько времени осталось до конца дня.

double  iHigh( 
   string           symbol,          // _Symbol
   int              timeframe,       // PERIOD_D1
   int              shift            // 0
   );

Если я правильно понял суть вопроса.

 
AlexeyVik:

Я рад что меня понимает ещё кто-то кроме меня самого.

Это как раз то что надо. High текущего дня независимо от того, сколько времени осталось до конца дня.

Если я правильно понял суть вопроса.

Немного по другому, как понял я.    Как то так.
bar=iBarShift(NULL,0,t1,false);   //по времени, находим индекс бара
barH=iHighest(NULL,0,MODE_HIGH,bar+1,1);  //находим максимум, в этом промежутке