Обсуждение статьи "Создание бота для Telegram на языке MQL5" - страница 5

 
Rashid Umarov:
Андрей, нужно заменить приложенные коды в статье? Прошу писать в таких случаях модераторам , чтобы они это сделали, хорошо?
Да, Рашид, необходимо обновить архив с кодами. Я первым делом написал об этом модератору пару дней назад.
 
Andrey Voytenko:
Да, Рашид, необходимо обновить архив с кодами. Я первым делом написал об этом модератору пару дней назад.
Архив к статье обновлен. Извиняюсь за задержку.
[Удален]  

Доброго времени суток Andrey Voytenko! Благодарность за статью, только вот не получается принять и вывести в Алерт сообщение из телеграма следующим образом (каждый раз возвращает пустой алерт,то есть сам факт нового сообщения детектиться, но возвращает пустую переменную):

 

   void ProcessMessages(void)
     {
      for(int i=0; i<m_chats.Total(); i++)
        {
         CCustomChat *chat=m_chats.GetNodeAtIndex(i);
         //--- if the message is not processed
         if(!chat.m_new_one.done)
           {
           chat.m_new_one.done=true;
            string text=chat.m_new_one.message_text;
Alert(text);
            //--- start
            if(text=="/start")
               SendMessage(chat.m_id,"Hello, world! I am bot. \xF680");

            //--- help
            if(text=="/help")
               SendMessage(chat.m_id,"My commands list: \n/start-start chatting with me \n/help-get help");
           }
        }
     }


 

 
Добрый день.

Попробовал сделать под себя бот, чтобы при появлении сделки отправлял скрин в телеграмм.

Отправляется через раз почему то, не могли бы вы посмотреть в чем проблема ?

правил только этот файл, который во вложении.
Файлы:
 

Роман, если вам бот нужен только для отправки скриншотов, то можно сделать так:

1. Узнайте у бота @MyTelegramID_bot‌ номер вашего чата.

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

#include <Telegram.mqh>
//+------------------------------------------------------------------+
//|   Input parameters                                               |
//+------------------------------------------------------------------+
input ENUM_LANGUAGES    InpLanguage=LANGUAGE_EN;//Language
input string            InpToken="";//Token
input long              ChatId=0;   //Chat ID
//---
CCustomBot bot;
int pos_count;
//+------------------------------------------------------------------+
int OnInit()
  {
   bot.Token(InpToken);
   int res=bot.GetMe();
   if(res!=0)
     {
      Print(GetErrorDescription(res));
     }
   pos_count=PositionCount(_Symbol);
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
void OnTick()
  {
   int pos_count_new=PositionCount(_Symbol);
   if(pos_count_new>pos_count)
     {
      pos_count=pos_count_new;
      int result=SendScreenShot(ChatId,_Symbol,0,NULL);
      if(result!=0)
         Print(GetErrorDescription(result,InpLanguage));
     }
  }
//+------------------------------------------------------------------+
int PositionCount(const string _symbol)
  {
   int count=0;
   int orders_total=OrdersTotal();
   for(int i=0; i<orders_total; i++)
     {
      if(!OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         PrintError(ERR_ORDER_SELECT);
         return(-1);
        }
      //---
      if(_symbol==NULL || OrderSymbol()==_symbol)
         count++;
     }
//---  
   return(count);
  }
//+------------------------------------------------------------------+
int SendScreenShot(const long _chat_id,
                   const string _symbol,
                   const ENUM_TIMEFRAMES _period,
                   const string _template=NULL)
  {
   int result=0;

   long chart_id=ChartOpen(_symbol,_period);
   if(chart_id==0)
      return(ERR_CHART_NOT_FOUND);

   ChartSetInteger(ChartID(),CHART_BRING_TO_TOP,true);

//--- updates chart
   int wait=60;
   while(--wait>0)
     {
      if(SeriesInfoInteger(_symbol,_period,SERIES_SYNCHRONIZED))
         break;
      Sleep(500);
     }

   if(_template!=NULL)
      if(!ChartApplyTemplate(chart_id,_template))
         PrintError(_LastError,InpLanguage);

   ChartRedraw(chart_id);
   Sleep(500);

   ChartSetInteger(chart_id,CHART_SHOW_GRID,false);

   ChartSetInteger(chart_id,CHART_SHOW_PERIOD_SEP,false);

   string filename=StringFormat("%s%d.gif",_symbol,_period);

   if(FileIsExist(filename))
      FileDelete(filename);
   ChartRedraw(chart_id);

   Sleep(100);

//      if(ChartScreenShot(chart_id,filename,800,600,ALIGN_RIGHT))
   if(ChartScreenShot(chart_id,filename,1024,768,ALIGN_RIGHT))
     {
      Sleep(100);

      bot.SendChatAction(_chat_id,ACTION_UPLOAD_PHOTO);

      //--- waitng 30 sec for save screenshot
      wait=60;
      while(!FileIsExist(filename) && --wait>0)
         Sleep(500);

      //---
      string screen_id;
      result=bot.SendPhoto(_chat_id,filename,screen_id,_symbol+"_"+StringSubstr(EnumToString(_period),7));
     }

   ChartClose(chart_id);
   return(result);
  }

//+------------------------------------------------------------------+
 

Спасибо за этот учебник,

Я хочу сделать telegram бот для mt4, пожалуйста, дайте мне любой учебник для этого.

Спасибо

 

Как насчет того, чтобы прочитать настоящую статью? https://www.mql5.com/ru/articles/2355

В ней есть пошаговые инструкции...

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

How to create bots for Telegram in MQL5
How to create bots for Telegram in MQL5
  • 2016.06.27
  • Andrey Voytenko
  • www.mql5.com
This article contains step-by-step instructions for creating bots for Telegram in MQL5. This information may prove useful for users who wish to synchronize their trading robot with a mobile device. There are samples of bots in the article that provide trading signals, search for information on websites, send information about the account balance, quotes and screenshots of charts to you smart phone.
 
Спасибо Андрею Войтенко...
 
Здравствуйте, я запустил своего бота и хотел отправить фото. В meta trader открыл график и сохранил его. и я вижу, что бот отправляет мне фото. но через некоторое время все останавливается. и я не могу получить фото, почему?
 

Привет,

Прежде всего, спасибо за подробное описание, очень признателен.

Простите, если это звучит глупо, но я хотел попробовать Telegram_signal_EA и надеялся, что смогу получать алерты от индикатора, отправляемые в Telegram-канал, однако код, который вы привели в третьем примере, был написан для MT4 или MT5?

Когда я копирую и вставляю код в новый файл в MetaEditor и компилирую его, я получаю целую кучу ошибок и понятия не имею, что это значит. Конечно, я должен потратить время, чтобы разобраться во всем этом, но с вашим кодом не должно быть слишком сложно добиться того, что я хочу, верно?

Если кто-то готов помочь мне или указать мне правильное направление, я буду очень признателен.

С наилучшими пожеланиями,

Патрик.

журнал ошибок