← К каталогу
Исходный код · ID 2419

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 и перейдите к оплате.

Стоимость полного кода
472,90₽ ≈ $5.78