class CNotify
Класс-контейнер для хранения данных уведомления: символ, текст и уникальный ключ.
Сообщите нам, если считаете, что материал размещён без разрешения.
Обращение по товару «cutils.mqh» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
cutils.mqh — это библиотека вспомогательных утилит для платформы MetaTrader 4 на языке MQL4. Она содержит три класса, обеспечивающих удобный доступ к рыночным данным, конвертацию величин и отправку уведомлений.
Класс CUtils предоставляет методы получения цен Ask и Bid, спреда, стоимости пункта, а также конвертацию между пипсами и ценами. Также он умеет определять появление нового бара и нормализовать размер лота.
Класс CNotifyManager управляет отправкой уведомлений с защитой от дублирования по уникальному ключу и поддерживает отправку email-оповещений. Класс CNotify служит простым контейнером для хранения данных уведомления.
Классов: 3 · методов: 14 · конструкторов: 3 · деструкторов: 1 · отдельных функций: 0
class CNotify
Класс-контейнер для хранения данных уведомления: символ, текст и уникальный ключ.
class CNotifyManager
Класс-менеджер для управления уведомлениями, предотвращающий дублирование и отправляющий оповещения.
class CUtils
Основной класс утилит, предоставляющий доступ к рыночным данным, конвертации величин и управление уведомлениями.
CNotify(string sym, string txt, string uniquekey)
Конструктор класса CNotify, инициализирующий символ, текст и уникальный ключ уведомления.
CNotifyManager()
Конструктор класса CNotifyManager, инициализирующий счётчик уведомлений.
void SendNotify(string symbol, string uniquekey, bool sendEmail, string text)
Отправка уведомления для символа с проверкой на дублирование по уникальному ключу; при необходимости отправляет email.
CUtils(void)
Конструктор класса CUtils, создающий экземпляр менеджера уведомлений.
~CUtils()
Деструктор класса CUtils, освобождающий память менеджера уведомлений.
string GetTimeFrame(int timePeriod)
Возвращает строковое обозначение таймфрейма (M1, M5, H1, D1 и т.д.) по целочисленному периоду.
void SendNotify(string symbol, string uniquekey, bool email, string text)
Отправка уведомления через внутренний менеджер CNotifyManager с проверкой дублирования.
double PointValue(string symbol)
Возвращает стоимость одного пункта для указанного торгового символа.
double PipsToPrice(string symbol, double pips)
Конвертирует значение в пипсах в цену для указанного символа.
double PriceToPips(string symbol, double points)
Конвертирует значение цены в пипсы для указанного символа.
double AskPrice(string symbol)
Возвращает текущую цену Ask для указанного торгового символа.
double BidPrice(string symbol)
Возвращает текущую цену Bid для указанного торгового символа.
double Spread(string symbol)
Возвращает текущий спред в пипсах для указанного торгового символа.
void Refresh()
Обновляет внутреннее состояние и устанавливает флаг IsNewBar при появлении нового бара.
double GetLotSize(string symbol)
Возвращает максимальный допустимый размер лота для указанного символа.
double GetLotStep(string symbol)
Возвращает минимальный шаг лота для указанного торгового символа.
double RequiredMargin(string symbol)
Возвращает требуемый маржинал для открытия позиции по указанному символу.
double NormalizeLotSize(string symbol, double lotSize)
Нормализует размер лота в соответствии с шагом и минимальными требованиями брокера для указанного символа.
#property strict
class CNotify
{
public:
string symbol;
string text;
string key;
CNotify(string sym, string txt, string uniquekey)
{
symbol = sym;
text = txt;
key = uniquekey;
}
};
class CNotifyManager
{
private:
CNotify* _notifies[];
int _notifyCount;
private:
int GetIndex(string symbol)
{
for (int i=0; i < _notifyCount;++i)
{
if (_notifies[i].symbol == symbol) return i;
}
return -1;
}
void OnNotifySend(string symbol, string text, string uniquekey)
{
int index = GetIndex(symbol);
if (index < 0)
{
ArrayResize(_notifies, _notifyCount + 1);
_notifies[_notifyCount] = new CNotify(symbol, text, uniquekey);
_notifyCount++;
return;
}
_notifies[index].key = uniquekey;
_notifies[index].text= text;
}
bool CanSendNotify(string symbol, string uniquekey)
{
int index = GetIndex(symbol);
if (index < 0) return true;
if (_notifies[index].key != uniquekey) return true;
return false;
}
public:
CNotifyManager()
{
_notifyCount = 0;
}
void SendNotify(string symbol, string uniquekey, bool sendEmail, string text)
{
if (CanSendNotify(symbol, uniquekey))
{
OnNotifySend(symbol, text, uniquekey);
if (text != "")
{
SendNotification(symbol+":" + text);
Alert(symbol + ":" + text);
if (sendEmail)
{
SendMail("Daily trend reversal alert", symbol+ ":" +text);
}
}
}
}
};
class CUtils
{
private:
datetime _prevTime;
CNotifyManager* _notifyMgr;
public:
bool IsNewBar;
CUtils(void)
{
_notifyMgr = new CNotifyManager();
}
~CUtils()
{
delete _notifyMgr;
}
string GetTimeFrame(int timePeriod)
{
string timeframe="";
switch (timePeriod)
{
case 1: timeframe="M1";break;
case 5: timeframe="M5";break;
case 15: timeframe="M15";break;
case 30: timeframe="M30";break;
case 60: timeframe="H1";break;
Показано первые 50% кода (символов: 3077)
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.