UTE/Strategy/NewBarDetector.mqh
super.admin bd7e405a90 convert
2025-05-30 16:34:43 +02:00

89 lines
4.1 KiB
MQL5

//+------------------------------------------------------------------+
//| 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 <Object.mqh>
//+------------------------------------------------------------------+
//| Класс, обнаруживающий появление нового бара на указанном |
//| инструменте и периоде. |
//+------------------------------------------------------------------+
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];
}
//+------------------------------------------------------------------+