//+------------------------------------------------------------------+ //| NewTickDetector.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 CTickDetector : public CObject { private: string m_symbol; // Символ, по которому требуется отслеживать приход нового тика. MqlTick m_last_tick; // Последний запомненный тик. public: CTickDetector(void); CTickDetector(string symbol); string Symbol(void); void Symbol(string symbol); bool IsNewTick(void); }; //+------------------------------------------------------------------+ //| Конструктор по-умолчанию устанавливает текущий таймфрейм | //| и инструмент. | //+------------------------------------------------------------------+ CTickDetector::CTickDetector(void) { m_symbol=_Symbol; } //+------------------------------------------------------------------+ //| Создает объект с предустановленным символом и таймфремом. | //+------------------------------------------------------------------+ CTickDetector::CTickDetector(string symbol) { m_symbol=symbol; } //+------------------------------------------------------------------+ //| Устанавливает название инструмента, образование нового тика | //| на котором надо отслеживать. | //+------------------------------------------------------------------+ void CTickDetector::Symbol(string symbol) { m_symbol=symbol; } //+------------------------------------------------------------------+ //| Возвращает название инструмента, образование нового тика | //| на котором отслеживается. | //+------------------------------------------------------------------+ string CTickDetector::Symbol(void) { return m_symbol; } //+------------------------------------------------------------------+ //| Возвращает истину, если на заданном инструменте и таймфрейме | //| появился новый тик. | //+------------------------------------------------------------------+ bool CTickDetector::IsNewTick(void) { MqlTick tick; SymbolInfoTick(m_symbol,tick); if(tick.last!=m_last_tick.last || tick.time!=m_last_tick.time) { m_last_tick=tick; return true; } return false; } //+------------------------------------------------------------------+