//+------------------------------------------------------------------+ //| NewBarDetecter.mqh | //| Copyright 2016, Vasiliy Sokolov, St-Petersburg, Russia | //| https://www.mql5.com/ru/users/c-4 | //+------------------------------------------------------------------+ #property copyright "Copyright 2016, Vasiliy Sokolov." #property link "https://www.mql5.com/ru/users/c-4" #include //+------------------------------------------------------------------+ //| Класс, обнаруживающий появление нового бара на указанном | //| инструменте и периоде. | //+------------------------------------------------------------------+ class CBarDetector : public CObject { private: ENUM_TIMEFRAMES m_timeframe; // Таймфрейм, по которому требуется отслеживать новый бар string m_symbol; // Символ, по которому требуется отслеживать новый бар datetime m_last_time; // время последнего известного бара public: CBarDetector(void); CBarDetector(string symbol,ENUM_TIMEFRAMES timeframe); void Timeframe(ENUM_TIMEFRAMES tf); ENUM_TIMEFRAMES Timeframe(void); void Symbol(string symbol); string Symbol(void); bool IsNewBar(void); }; //+------------------------------------------------------------------+ //| Конструктор по-умолчанию устанавливает текущий таймфрейм | //| и инструмент. | //+------------------------------------------------------------------+ CBarDetector::CBarDetector(void) { m_symbol=_Symbol; m_timeframe=Period(); } //+------------------------------------------------------------------+ //| Создает объект с предустановленным символом и таймфремом. | //+------------------------------------------------------------------+ CBarDetector::CBarDetector(string symbol,ENUM_TIMEFRAMES tf) { m_symbol=symbol; m_timeframe=tf; } //+------------------------------------------------------------------+ //| Устанавливает таймфрейм, образование нового бара на котором надо | //| отслеживать. | //+------------------------------------------------------------------+ void CBarDetector::Timeframe(ENUM_TIMEFRAMES tf) { m_timeframe=tf; } //+------------------------------------------------------------------+ //| Возвращает таймфрейм, образование нового бара на котором | //| отслеживается. | //+------------------------------------------------------------------+ ENUM_TIMEFRAMES CBarDetector::Timeframe(void) { return m_timeframe; } //+------------------------------------------------------------------+ //| Устанавливает название инструмента, образование нового бара | //| на котором надо отслеживать. | //+------------------------------------------------------------------+ void CBarDetector::Symbol(string symbol) { m_symbol=symbol; } //+------------------------------------------------------------------+ //| Возвращает название инструмента, образование нового бара | //| на котором отслеживается. | //+------------------------------------------------------------------+ string CBarDetector::Symbol(void) { return m_symbol; } //+------------------------------------------------------------------+ //| Возвращает истину, если на заданном инструменте и таймфрейме | //| появился новый бар. | //+------------------------------------------------------------------+ bool CBarDetector::IsNewBar(void) { datetime time[]; if(CopyTime(m_symbol, m_timeframe, 0, 1, time) < 1)return false; if(time[0] == m_last_time)return false; return m_last_time = time[0]; } //+------------------------------------------------------------------+