Здравствуйте !
использую приведенный код для контроля откытия нового бара при ТФ = PERIOD_H1
надо также при некоторых условиях (тог есть не всегда) отслеживать открытие нового бара на меньшем ТФ = PERIOD_5min
как бы это красиво сделать в коде ?
bool FlagNewBar1=false, FlagNewBar5=false, FlagNewBar15=false, FlagNewBarH1=false, FlagNewBarH4=false, FlagNewBarD1=false, FlagNewBarW1=false, FlagNewBarMN1=false; datetime BarTime1, BarTime5, BarTime15, BarTimeH1, BarTimeH4, BarTimeD1, BarTimeW1, BarTimeMN1; void OnTick() // Спец.функция start { if(FlagNewBarF(1, BarTime1,FlagNewBar1)) Alert("FlagNbar1 " ,FlagNewBar1 ,"BarTime1 ",TimeToStr(BarTime1,TIME_DATE|TIME_SECONDS)); if(FlagNewBarF(5, BarTime5,FlagNewBar5)) Alert("FlagNbar5 " ,FlagNewBar5 ,"BarTime5 ",TimeToStr(BarTime5,TIME_DATE|TIME_SECONDS)); if(FlagNewBarF(5, BarTime5,FlagNewBar5)) Alert("FlagNbar5 " ,FlagNewBar5 ,"BarTime5 ",TimeToStr(BarTime5,TIME_DATE|TIME_SECONDS)); if(FlagNewBarF(15, BarTime15,FlagNewBar15)) Alert("FlagNbar15 " ,FlagNewBar15 ,"BarTime15 ",TimeToStr(BarTime15,TIME_DATE|TIME_SECONDS)); if(FlagNewBarF(60, BarTimeH1,FlagNewBarH1)) Alert("FlagNbarH1 " ,FlagNewBarH1 ,"BarTimeH1 ",TimeToStr(BarTimeH1,TIME_DATE|TIME_SECONDS)); if(FlagNewBarF(240, BarTimeH4,FlagNewBarH4)) Alert("FlagNbarH4 " ,FlagNewBarH4 ,"BarTimeH4 ",TimeToStr(BarTimeH4,TIME_DATE|TIME_SECONDS)); return; // Выход из start() } //-------------------------------------------------------------------- bool FlagNewBarF(int prd, datetime &BarTime,bool &FlagNbar) { FlagNbar=false; if(BarTime!=iTime(NULL,prd,0)) { BarTime=iTime(NULL,prd,0); FlagNbar=true; } return(FlagNbar); } //+------------------------------------------------------------------+
Тока что нарисовал. Алертит как надо)
bool isNewBar(string INST,int K, ENUM_TIMEFRAMES timeFrame) { //---- static datetime old_Times[17];// массив для хранения старых значений bool res=false; // переменная результата анализа int i=0; // номер ячейки массива old_Times[] datetime new_Time[1]; // время нового бара switch(K) { case 0: i= 0; break; case 1: i= 1; break; case 2: i= 2; break; case 3: i= 3; break; case 4: i= 4; break; case 5: i= 5; break; case 6: i= 6; break; case 7: i= 7; break; case 8: i= 8; break; case 9: i= 9; break; case 10: i=10; break; case 11: i=11; break; case 12: i=12; break; case 13: i=13; break; case 14: i=14; break; case 15: i=15; break; } // скопируем время последнего бара в ячейку new_Time[0] int copied=CopyTime(INST,timeFrame,0,1,new_Time); if(copied>0) // все ок. данные скопированы { if(old_Times[i]!=new_Time[0]) // если старое время бара не равно новому { if(old_Times[i]!=0) res=true; // если это не первый запуск, то истина = новый бар old_Times[i]=new_Time[0]; // запоминаем время бара } } //---- return(res); }
Mihail Marchukajtes:
switch(K) { case 0: i= 0; break; case 1: i= 1; break; case 2: i= 2; break; case 3: i= 3; break; case 4: i= 4; break; case 5: i= 5; break; case 6: i= 6; break; case 7: i= 7; break; case 8: i= 8; break; case 9: i= 9; break; case 10: i=10; break; case 11: i=11; break; case 12: i=12; break; case 13: i=13; break; case 14: i=14; break; case 15: i=15; break; }
при всем уважении... но по-моему это шедевр ))
по сабжу в класс оберните любой код "новый бар" и в конструкторе передайте в качестве параметра необходимый ТФ, код выкладывал давно - не вижу смысла повторяться, в прошлый раз топикстартеру нужен был любой код, но обязательно без классов ..... религия наверное не позволяла
- www.mql5.com
при всем уважении... но по-моему это шедевр ))
по сабжу в класс оберните любой код "новый бар" и в конструкторе передайте в качестве параметра необходимый ТФ, код выкладывал давно - не вижу смысла повторяться, в прошлый раз топикстартеру нужен был любой код, но обязательно без классов ..... религия наверное не позволяла
Так это для 15 инструментов. Пользуюсь по сей день...
bool isNewBar(string INST,int K, ENUM_TIMEFRAMES timeFrame) { //---- static datetime old_Times[17];// массив для хранения старых значений bool res=false; // переменная результата анализа // int i=0; // номер ячейки массива old_Times[] datetime new_Time[1]; // время нового бара // скопируем время последнего бара в ячейку new_Time[0] int copied=CopyTime(INST,timeFrame,0,1,new_Time); if(copied>0) // все ок. данные скопированы { if(old_Times[K]!=new_Time[0]) // если старое время бара не равно новому { if(old_Times[K]!=0) res=true; // если это не первый запуск, то истина = новый бар old_Times[K]=new_Time[0]; // запоминаем время бара } } //---- return(res); }
А так нельзя разве?)
А так нельзя разве?)
Можно и так, но изначально код был не мой поэтому сильной правки не был подвержен. А если нужно мониторить 15 иснтрументов по 10 таймфреймам, тогда как?
поверьте на слово, что выделенный мной фрагмент кода ничего не делает с 15-ю инструментами или что еще
ладно, это из другой вселенной видимо знание, закончим
при всем уважении... но по-моему это шедевр ))
по сабжу в класс оберните любой код "новый бар" и в конструкторе передайте в качестве параметра необходимый ТФ, код выкладывал давно - не вижу смысла повторяться, в прошлый раз топикстартеру нужен был любой код, но обязательно без классов ..... религия наверное не позволяла
..... религия наверное не позволяла ))
Спасибо всем !
тема закрыта для меня
Можно и так, но изначально код был не мой поэтому сильной правки не был подвержен. А если нужно мониторить 15 иснтрументов по 10 таймфреймам, тогда как?
150 переменных, 15 массивов размерностью десять, 15 массивов структуры, один массив размерностью 15 на 10, класс и там функция с 15 переменными и 10 переменных или наоборот. А перечисления еще.... Вариантов много)))
Вот вопрос что больше места занимает 150 глобальных переменных, 15 массивов размерностью десять, 15 структур в массиве размерностью 10 или массив 15 на 10?
И к чем доступ быстрее к переменным или к элементам массива или структуры?
150 переменных, 15 массивов размерностью десять, 15 массивов структуры, один массив размерностью 15 на 10, класс и там функция с 15 переменными и 10 переменных или наоборот. А перечисления еще.... Вариантов много)))
Вот вопрос что больше места занимает 150 глобальных переменных, 15 массивов размерностью десять, 15 структур в массиве размерностью 10 или массив 15 на 10?
И к чем доступ быстрее к переменным или к элементам массива или структуры?
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Здравствуйте !
использую приведенный код для контроля откытия нового бара при ТФ = PERIOD_H1
надо также при некоторых условиях (тог есть не всегда) отслеживать открытие нового бара на меньшем ТФ = PERIOD_5min
как бы это красиво сделать в коде ?