Определение максимальной и минимальной цены закрытия за предыдущий день часового бара - страница 2 123456 Новый комментарий mrostrich 2017.12.29 13:00 #11 Taras Slobodyanik: используйте свой первоначальный код, но поставьте инициализацию переменных в начале циклано это не "последний день", а последние 24 свечиНе хочет, к тому же в условии не видит эти переменные, т.к. не глобальные Taras Slobodyanik 2017.12.29 13:02 #12 mrostrich: Не хочет, к тому же в условии не видит эти переменные, т.к. не глобальныевы так написали?MaxCloseHourPrice=0; MinCloseHourPrice=DBL_MAX; for(int i=24; i>0; i--) { if (iClose(NULL,PERIOD_H1,Hour()+i)>MaxCloseHourPrice) MaxCloseHourPrice=iClose(NULL,PERIOD_H1,Hour()+i); if (iClose(NULL,PERIOD_H1,Hour()+i)<MinCloseHourPrice) MinCloseHourPrice=iClose(NULL,PERIOD_H1,Hour()+i); } Konstantin Nikitin 2017.12.29 13:03 #13 Обновил пост, походу так оно точнее будет. На самом деле, если вам нужны предыдущие сутки, то с них и начинайте. mrostrich 2017.12.29 13:04 #14 Taras Slobodyanik: вы так написали?Нет, вы просили в начале цикла переменные объявить, но так я тоже сделал и ничего, не хочет forexman77 2017.12.29 13:12 #15 Да, объявляйте переменные double MaxCloseHourPrice=0, MinCloseHourPrice = DBL_MAX; не на глобальном уровне, а перед циклом.Сделал скрипт потренируйтесь.void OnStart() { //--- double MaxCloseHourPrice=0, MinCloseHourPrice = DBL_MAX; int iMAX; int h=Hour(); for(int i=24; i>0; i--) { if (iClose(NULL,PERIOD_H1,h+i)>MaxCloseHourPrice) { iMAX=h+i; MaxCloseHourPrice=iClose(NULL,PERIOD_H1,h+i); } if (iClose(NULL,PERIOD_H1,h+i)<MinCloseHourPrice) MinCloseHourPrice=iClose(NULL,PERIOD_H1,h+i); } Alert("Время макс.=",Time[iMAX],"Время начала=",Time[24+h],"Время окончания=",Time[1+h],"MaxCloseHourPrice=",MaxCloseHourPrice); } //+------------------------------------------------------------------+ mrostrich 2017.12.29 13:13 #16 forexman77: Да, объявляйте переменные не на глобальном уровне, а перед циклом.Сделал скрипт потренируйтесь.Еще бы уметь с ними работать, а то зеленый еще в этой теме Taras Slobodyanik 2017.12.29 13:19 #17 mrostrich: Не хочет, к тому же в условии не видит эти переменные, т.к. не глобальныеСправка:Hour()Возвращает текущий час последнего известного серверного времени на момент старта программы (в процессе выполнения программы это значение не меняется). Konstantin Nikitin 2017.12.29 13:19 #18 Зачем использовать Hour()? Допустим сейчас 15:00: 15+24=39. Вот и получите промежуток не равный предыдущим суткам. mrostrich 2017.12.29 13:24 #19 Konstantin Nikitin: Зачем использовать Hour()? Допустим у сейчас 15:00: 15+24=39. Вот и получите промежуток не равный предыдущим суткам.Эту часть кода не я прописывал, поэтому не вдавался в этот момент forexman77 2017.12.29 13:38 #20 Теперь скрипт для поиска в прошлом дне начиная с начала, до такого же часа, что и текущий.void OnStart() { //--- int h=0,barshift=0,indexPlus=0, iMax=0, iMin=0; double CloseMax=0.0, CloseMin=0.0; h=Hour(); datetime data=iTime(NULL,PERIOD_D1,1);//время открытия вчерашнего дневного бара barshift=iBarShift(NULL,PERIOD_H1,data);//индекс первого часового бара, вчерашнего дня indexPlus=barshift-h; iMax=iHighest(NULL,PERIOD_H1,MODE_CLOSE,h,indexPlus);//индекс максимума часового бара iMin=iLowest(NULL,PERIOD_H1,MODE_CLOSE,h,indexPlus);//индекс минимума часового бара CloseMax=Close[iMax]; CloseMin=Close[iMin]; Alert("время начала=",Time[barshift],"время оконч.=",Time[indexPlus],"время макс.=",Time[iMax],"время минимума=",Time[iMin]); } 123456 Новый комментарий
используйте свой первоначальный код, но поставьте инициализацию переменных в начале цикла
но это не "последний день", а последние 24 свечиНе хочет, к тому же в условии не видит эти переменные, т.к. не глобальные
Не хочет, к тому же в условии не видит эти переменные, т.к. не глобальные
Обновил пост, походу так оно точнее будет. На самом деле, если вам нужны предыдущие сутки, то с них и начинайте.
вы так написали?
Нет, вы просили в начале цикла переменные объявить, но так я тоже сделал и ничего, не хочет
Да, объявляйте переменные
не на глобальном уровне, а перед циклом.
Сделал скрипт потренируйтесь.
Да, объявляйте переменные
не на глобальном уровне, а перед циклом.
Сделал скрипт потренируйтесь.
Еще бы уметь с ними работать, а то зеленый еще в этой теме
Не хочет, к тому же в условии не видит эти переменные, т.к. не глобальные
Справка:
Hour()
Возвращает текущий час последнего известного серверного времени на момент старта программы (в процессе выполнения программы это значение не меняется).
Зачем использовать Hour()? Допустим сейчас 15:00: 15+24=39. Вот и получите промежуток не равный предыдущим суткам.
Зачем использовать Hour()? Допустим у сейчас 15:00: 15+24=39. Вот и получите промежуток не равный предыдущим суткам.
Эту часть кода не я прописывал, поэтому не вдавался в этот момент
Теперь скрипт для поиска в прошлом дне начиная с начала, до такого же часа, что и текущий.