Помогите с кодом для отправки уведомлений на телеграм

 

Есть индикатор МТ4 в который нужно дописать отправку уведомлений на телеграм, вот что добавил, но уведомления не приходят, что я не правильно сделал?


Данный скрипт уведомления отправляет


 
Создание бота для Telegram на языке MQL5
Создание бота для Telegram на языке MQL5
  • www.mql5.com
12 апреля 2016 года на конференции F8 в Сан-Франциско компания Facebook анонсировала внедрение API для ботов в свой мессенджер. В этот же день вышло большое обновление для платформы Telegram Bot Platform. Версия 2.0 порадовала новыми функциями. Похоже, что к хорошо забытому старому, а именно ботам, которые были популярны еще в эпоху ICQ...
 
Andrey777:

Есть индикатор МТ4 в который нужно дописать отправку уведомлений на телеграм, вот что добавил, но уведомления не приходят, что я не правильно сделал?


Данный скрипт уведомления отправляет


Библиотека не работает в индикаторах, только в советниках и скриптах.

В обсуждении статьи, разработчика этой библиотеки, есть одно из возможных решений данной проблемы. 

Другое решение это : индикатор пишет сигнал в файл, а советник по таймеру проверяет сообщения,  и отправляет куда надо.

 
tyup:

Другое решение это : индикатор пишет сигнал в файл, а советник по таймеру проверяет сообщения,  и отправляет куда надо.

Советник сам не может отслеживать уведомления от индикатора? К примеру читать журнал и при появлении строки "Notifications:" отправлять уведомление на телеграм? 


 
Andrey777:

Советник сам не может отслеживать уведомления от индикатора? К примеру читать журнал и при появлении строки "Notifications:" отправлять уведомление на телеграм? 


Анализировать системный журнал на появление строки Notification ? Нет. Даже объяснять не буду почему. Есть еще вариант : в индикаторе вместто bot.SendMessage(), пишете

EventChartCustom(id ,234,0,0,"сообщение"); 

То есть отправляете пользовательское событие. id- это график где установлен советник.


в советнике:

void OnChartEvent(const int id,const long& lparam,const double& dparam,const string& sparam)
{
    if( id == CHARTEVENT_CUSTOM+234)
    {
         bot.SendMessage(44444444,sparam);
    }
}

 
tyup:

Анализировать системный журнал на появление строки Notification ? Нет. Даже объяснять не буду почему. Есть еще вариант : в индикаторе вместто bot.SendMessage(), пишете

EventChartCustom(id ,234,0,0,"сообщение"); 

То есть отправляете пользовательское событие. id- это график где установлен советник.


в советнике:


Вы занимаетесь написанием советников? Если да, то сколько будет стоить такая работа? Мне еще нужно будет добавить отправку скрина, врятли я это все смогу сам сделать.

 
Andrey777:

Вы занимаетесь написанием советников? Если да, то сколько будет стоить такая работа? Мне еще нужно будет добавить отправку скрина, врятли я это все смогу сам сделать.

Написанием советников не занимаюсь. Но помогу.

Создаете новый советник. Бросаете его на любой график.

#property copyright "Copyright 2018, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict

#include <Telegram.mqh>
string Token="744665737:AAH5MhCME439HGQyFIbe2cqq1U1-R1804tU";
CCustomBot bot;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
    bot.Token(Token);
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
   
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
   
  }
//+------------------------------------------------------------------+
//| ChartEvent function                                              |
//+------------------------------------------------------------------+
void OnChartEvent(const int id,
                  const long &lparam,
                  const double &dparam,
                  const string &sparam)
  {
//---
   if( id == CHARTEVENT_CUSTOM+234)
    {
         bot.SendMessage(337557722,sparam);
    }
  }
//+------------------------------------------------------------------+

Вставьте соответсвенно ваш токен и id.

В индикаторе вместо где bot.SendMessage()

пишите EventChartCustom((long)GlobalVariableGet(mId) ,234,0,0,"сообщение");

Пробуйте. 

 
tyup:

Написанием советников не занимаюсь. Но помогу.

Создаете новый советник. Бросаете его на любой график.

Вставьте соответсвенно ваш токен и id.

В индикаторе вместо где bot.SendMessage()

пишите EventChartCustom((long)GlobalVariableGet(mId) ,234,0,0,"сообщение");

Пробуйте. 

На счет id не совсем понял, "id- это график где установлен советник" это название валютной пары где стоит советник? Напишите на примере куда именно в советнике его ставить.

в индикаторе уже id не нужно ставить? "EventChartCustom((long)GlobalVariableGet(mId) ,234,0,0,"сообщение");"

 
tyup:


Советник сделал, но он в терминале не запускается, что то в нем не хватает.

 
Andrey777:

Советник сделал, но он в терминале не запускается, что то в нем не хватает.

Берете советник который я выкладывал выше ( я его подкорректировал), копируете как есть, компилируете и кидаете на любой график. 

Далее, в вашем индикаторе добавляете вот такую функцию

void Send(string mes) 
  { 
   long currChart=ChartFirst(); 
   int i=0; 
   while(i<CHARTS_MAX)                
     { 
      EventChartCustom(currChart,234,0,0,mes); 
      currChart=ChartNext(currChart); 
      if(currChart==-1) break;        
      i++;                             
     } 
  } 

 Далее, вместо где вы писали bot.SendMessage() пишите Send(" signal BUY ");

Пробуйте. Все должно работать.

 
tyup:

Берете советник который я выкладывал выше ( я его подкорректировал), копируете как есть, компилируете и кидаете на любой график. 

Далее, в вашем индикаторе добавляете вот такую функцию

 Далее, вместо где вы писали bot.SendMessage() пишите Send(" signal BUY ");

Пробуйте. Все должно работать.

Сделал все, есть какой то простой индикатор или скрипт, что бы проверить работает советник правильно или нет? А то от моего индикатора сигналы не так часто приходят.