TelegramSignalAlert
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «telegramalert.mq4» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
TelegramSignalAlert — это советник для MetaTrader 4, предназначенный для отправки торговых уведомлений через Telegram-бот, электронную почту и мобильные push-уведомления. Советник отслеживает события по ордерам и передаёт информацию о них в настроенные каналы связи.
Программа фиксирует закрытие ордеров, появление новых рыночных ордеров, исполнение и удаление отложенных ордеров, а также размещение новых отложенных ордеров. Для каждого типа события формируется сообщение с указанием имени сигнала, символа, цены, лотов и других параметров ордера.
При запуске советник инициализирует подключение к Telegram-боту и проверяет его работоспособность. Типы уведомлений (Telegram, мобильные, email) могут быть включены и выключены независимо друг от друга. Также имеется обработчик событий графика для ручной отправки сообщения нажатием клавиши.
Платформа: MetaTrader 4. Язык: MQL4. Тип товара: торговый советник.
Настройки программы
| Настройка | Описание |
|---|---|
| Channel Name (InpChannelName) | Имя канала — Имя канала Telegram-бота для отправки уведомлений |
| mySigalname | Имя сигнала — Имя сигнала, включаемое в сообщения об ордерах |
| alert_orderclosed | Уведомление о закрытии ордера — Включает уведомления о закрытии ордеров |
| alert_Pendingfilled | Уведомление об исполнении отложенного ордера — Включает уведомления об исполнении отложенных ордеров |
| alert_new_pending | Уведомление о новом отложенном ордере — Включает уведомления о размещении новых отложенных ордеров |
| alert_new_order | Уведомление о новом ордере — Включает уведомления о новых рыночных ордерах |
| alert_pending_deleted | Уведомление об удалении отложенного ордера — Включает уведомления об удалении отложенных ордеров |
Поиск по коду файла
#property version "1.00"
#property strict
#include <Telegram.mqh>
input string InpChannelName="@mychannelname";//Channel Name
input string InpToken="****** ******** *** *** ****";//Token
extern string mySigalname = "Enter my signal name";
CCustomBot bot;
int macd_handle;
datetime time_signal=0;
bool checked;
bool AlertonTelegram = true;
bool MobileNotification = false;
bool EmailNotification = false;
extern bool alert_orderclosed = true;
extern bool alert_Pendingfilled = true;
extern bool alert_new_pending = true;
extern bool alert_new_order = true;
extern bool alert_pending_deleted = true;
int totalord,totalpnd,totalopn;
int init()
{
// код доступен только после оплаты
}
int deinit()
{
return(0);
}
void OnChartEvent(const int id,const long &lparam,const double &dparam,const string &sparam)
{
if(id==CHARTEVENT_KEYDOWN &&
lparam=='Q')
{
bot.SendMessage(InpChannelName,"ee\nAt:100\nDDDD");
}
}
int start()
{
// код доступен только после оплаты
}
time_signal=0;
bot.Token(InpToken);
if(!checked)
{
if(StringLen(InpChannelName)==0)
{
Print("Error: Channel name is empty");
Sleep(10000);
return (0);
}
int result=bot.GetMe();
if(result==0)
{
Print("Bot name: ",bot.Name());
checked=true;
}
else
{
Print("Error: ",GetErrorDescription(result));
Sleep(10000);
return(0);
}
}
string msg, msgbuy, msgsell, msgclos,msgfilled,msgdel,action1,action2,action3,msgpend,action4;
int tmp = OrdersTotal();
if (tmp < totalord ){
int last_trade= HistoryTotal();
if(last_trade>0)
{
if(OrderSelect(last_trade-1,SELECT_BY_POS,MODE_HISTORY)==true) {
if ((OrderType()==OP_BUY) || (OrderType()==OP_SELL) ){
string action1 = " Order Closed";
msgclos =StringFormat("Name: %s\nSymbol: %s\nPrice: %s\nAction: %s",mySigalname,OrderSymbol(),DoubleToString(OrderClosePrice(), 5),action1);
msg= StringConcatenate(TypeMnem(OrderType()) ," Order closed : "," ", OrderSymbol()," " ,OrderLots() , " Lot profit ",OrderProfit());
if(alert_orderclosed){
if(MobileNotification){SendNotification(msgclos);}
if(EmailNotification){SendMail("Order changes Notification",msgclos);}
if(AlertonTelegram){ bot.SendMessage(InpChannelName,msgclos);}
}
totalord = tmp;
return(0);
}
}
}
}
int lastOpenTime = 0;
int tmp_pnd,temp_opn;
int ord_type;
for(int i = (OrdersTotal()-1); i >= 0; i --)
{
OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
int curOpenTime = OrderOpenTime();
if(curOpenTime > lastOpenTime)
{
lastOpenTime = curOpenTime;
ord_type = OrderType();
msgsell=StringFormat("Name: %s\nSymbol: %s\nType: Sell\nPrice: %s\nTime: %s\nLots: %s\nTakeProfit: %s\nStopLoss: %s",
mySigalname,OrderSymbol(),
DoubleToString(OrderOpenPrice(),_Digits),
TimeToString(OrderOpenTime()),DoubleToString(OrderLots(), 2),DoubleToString(OrderTakeProfit(), Digits),DoubleToString(OrderStopLoss(), Digits));
msgbuy =StringFПоказано первые 50% кода (символов: 4729)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.