Проблема в том что когда новый день наступает start получается уже считается по новому дню.
Можно так
bool Is_Allowed_Hour(int i_Time, int i_Second_From, int i_Second_To) { i_Time %= 86400; if(i_Second_From < i_Second_To) { if(i_Time >= i_Second_From && i_Time <= i_Second_To) return(true); } else if(i_Second_From > i_Second_To) { if(i_Time >= i_Second_From || i_Time <= i_Second_To) return(true); } return(false); }
Пример поверки:
if(!Is_Allowed_Hour(int(TimeCurrent()), gi_Session_A_Start_Second, gi_Session_A_Stop_Second)) if(!Is_Allowed_Hour(int(TimeCurrent()), gi_Session_B_Start_Second, gi_Session_B_Stop_Second)) return(SIG_NONE);Это для 2х сессий, если их больше - лучше в OnInint создавать структуру, заполнять её временами этих сессий и включить функцию Is_Allowed_Hour в эту структуру
Проблема в том что когда новый день наступает start получается уже считается по новому дню.
Вы бы для своего интереса сделали принты и посмотрели чему фактически равны Ваши старты и стопы. И желательно посмотреть в первый день и не выгружая индикатор посмотреть во второй. Может вопросы другие возникнут
Можно так
Пример поверки:
Это для 2х сессий, если их больше - лучше в OnInint создавать структуру, заполнять её временами этих сессий и включить функцию Is_Allowed_Hour в эту структуруЭто не две сесии, а одна. У меня 3 и такое не пойдёт.
Это просто проверка что больше старт или стоп.
P.S. Я С++ не изучал.
Это не две сесии.
У вас их (сессий) 3: start1..stop1, start2..stop2, start3..stop3
Это просто проверка что больше старт или стоп.
Этой функции без разницы переходит время сессии в др день или нет. Учтено
PS Я тоже. Кроме С++ есть тьма др языков
Вопрос один и я его уже озвучил. Всё остальное работает.
Может поможет
Как у меня организован контроль сессий
//+------------------------------------------------------------------+ //| Временные ограничения по работе советника | //| Copyright © 2010, Victor Nicolaev | //| e-mail: vinin@mail.ru | //+------------------------------------------------------------------+ extern string sH="Временные ограничения по работе советника (по часам)"; extern int HourStart = -1; extern int HourStop = -1; //+------------------------------------------------------------------+ //| Функция контроля времени работе советника | //| Copyright © 2010, Victor Nicolaev | //| e-mail: vinin@mail.ru | //+------------------------------------------------------------------+ //| bool CheckHour(); | //+------------------------------------------------------------------+ bool CheckHour(){ int CurrentHour=TimeHour(Time[0]); if (HourStart==-1 || HourStop==-1) return(true); if (HourStart == HourStop) if(CurrentHour==HourStart) return(true); if (HourStart<HourStop) if (HourStart<=CurrentHour) if (CurrentHour<=HourStop) return(true); if (HourStart>HourStop) if (HourStart>=CurrentHour || CurrentHour<=HourStop) return(true); return(false); }
У вас их (сессий) 3: start1..stop1, start2..stop2, start3..stop3
Этой функции без разницы переходит время сессии в др день или нет. Учтено
PS Я тоже. Кроме С++ есть тьма др языков
Может поможет
Как у меня организован контроль сессий
Эта функция для одной сессии.
PS Походу я увлёксо - зачем мне вас убеждать? Бошенебуду
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Добрый день.
Пытаюсь организовать правильно функцию где будет несколько временных отрезков например для торговли советника.
Но что не могу всё сложить как надо. Дошел сюда.