AM2
Андрей

 
Уровень 34

  Торгую в компаниях:


Группа "Программирование на MQL"

Рейтинг 280



Экспорт сигналов из МТ4 в Telegram

Буквально пару дней назад мне в «Стол Заказов» поступила просьба создать телеграм-мессенджер. У пользователя ShamanHand уже были определенные наработки в этом вопросе, которыми он поделился в топике: zakaz.opentraders.ru/56558.html

Также он прислал мне образцы кода, которые он писал для себя. Мне оставалось лишь разобраться с регистрацией в Telegram и переделать образцы кода для учебного примера.

Первым делом пройдем на официальный сайт мессенджера в интернете: telegram.org/

Выберем нужную установку:



Скачаем и установим программу. Создадим канал и бота. Подробнее смотрите видео:



Набросаем код для МТ4.

Во входных переменных будут 3 параметра:


input string URL="https://api.telegram.org/";
input string ChannelID="1424319433";
input string BotID="1391025599:AAFOpgDWODKtgVcTEQgs8jB65n9UjO9XaMk";


1. Адрес API телеграма
2. ID канала
3. ID бота

Полностью запрос будет представлять собой строку следующего вида:


https://api.telegram.org/bot********************************************/sendMessage?chat_id=**********&text=*******!


Наш код будет считывать параметры открытой позиции и отправлять их в телеграм:

//+------------------------------------------------------------------+
//|                                                  TelegramMT4.mq4 |
//|                                              Copyright 2020, AM2 |
//|                                      http://www.forexsystems.biz |
//+------------------------------------------------------------------+
#property copyright "Copyright 2020, AM2"
#property link      "http://www.forexsystems.biz"
#property version   "1.00"
#property strict

input string URL="https://api.telegram.org/";
input string ChannelID="1424319433";
input string BotID="1391025599:AAFOpgDWODKtgVcTEQgs8jB65n9UjO9XaMk";

int k=0;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---

//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---

  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   int res=0;
   char post[];
   char result[];
   string headers;

   string text="";

   if(OrdersTotal()>0)
     {
      for(int i=OrdersTotal()-1; i>=0; i--)
        {
         if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
           {
            if(OrderType()==0)
              {
               text+="\n Order Type: BUY";
               text+="\n Order Symbol: "+string(OrderSymbol());
               text+="\n Order Open Time: "+string(OrderOpenTime());
               text+="\n Order Open Price: "+string(OrderOpenPrice());
              }

            if(OrderType()==1)
              {
               text+="\n Order Type: SELL";
               text+="\n Order Symbol: "+string(OrderSymbol());
               text+="\n Order Open Time: "+string(OrderOpenTime());
               text+="\n Order Open Price: "+string(OrderOpenPrice());
              }
           }
        }
     }

   string url=URL+"bot"+BotID+"/sendMessage?chat_id="+ChannelID+"&text="+text;
//https://api.telegram.org/bot1391025599:AAFOpgDWODKtgVcTEQgs8jB65n9UjO9XaMk/sendMessage?chat_id=1424319433&text=Hello!

   if(k<3)
     {
      ResetLastError();
      res=WebRequest("GET",url,NULL,NULL,5000,post,0,result,headers);
      k++;

      if(res<0)
        {
         Print(url);
         Print("Ошибка в WebRequest. Код ошибки  =",GetLastError());
        }
     }
  }
//+------------------------------------------------------------------+



Если у нас есть открытая позиция, советник отправит следующее сообщение в мессенджер:



Скачать пример кода можно по ссылке: www.opentraders.ru/downloads/2863/
  • +19
  • Просмотров: 79898
  • 25 ноября 2020, 19:42
  • AM2
Понравилcя материал? Не забудьте поставить плюс и поделиться в социальной сети!

Вступите в группу "Программирование на MQL", чтобы следить за обновлениями
ПРИСОЕДИНИТЬСЯ К ГРУППЕ
присоединиться
  Предыдущая запись в группе
Как написать стрелочный индикатор для МТ5
11 апреля 2020

Комментарии (8)

+
0
*good* 
avatar

  24  ShamanHand Сообщений: 1092 - Наношу добро, причиняю пользу.

  • 25 ноября 2020, 22:51
+
0
*drinks* 
avatar

  22  poker Сообщений: 801

  • 26 ноября 2020, 08:16
+
0
Добрый день! Столкнулся с такой проблемой.Советник несколько раз отправляет уведомления в телегу только когда его ставишь на график, после чего от него тишина.И когда компилируешь его он так же несколько раз отправляет, после чего так же тишина.Помогите решить проблему
avatar

  6  rus008 Сообщений: 46

  • 27 ноября 2020, 13:26
+
0
советник учебный пример для тех кто хочет сделать что то подобное.
avatar

  34  AM2 Автор Сообщений: 15879 - Андрей

  • 27 ноября 2020, 15:57
+
0
*hi*  А для ватсапа или вайбера что-то подобное есть?
avatar

  27  Oxy Сообщений: 3418 - ..ιllιlι.lι.ιllι.ιlι..

  • 28 ноября 2020, 22:12
+
0
посмотрел сейчас. в вацапе есть бизнес апи. на мкл такую интерграцию делали в работах, значит реально написать. только все во время упирается
avatar

  34  AM2 Автор Сообщений: 15879 - Андрей

  • 29 ноября 2020, 02:09
+
0
есть. почти также легко сделать уведомления как в телегу.
avatar

  17  vis Сообщений: 199 - ♫♪♫♪

  • 29 ноября 2020, 11:26
+
0
Всех привествую! Подскажите что и куда добавить чтобы также после символа пары указывал размер лота. Очень надо.
avatar

  3  Roberto001 Сообщений: 12 - Robert001

  • 11 декабря 2023, 19:40

Зарегистрируйтесь или авторизуйтесь, чтобы оставить комментарий
Начать торговлю с Альпари