Discussão do artigo "Como criar bots para Telegram em MQL5" - página 5

 
Rashid Umarov:
Andrei, você precisa substituir os códigos anexados no artigo? Nesses casos, escreva para os moderadores para que eles façam isso, ok?
Sim, Rashid, você precisa atualizar o arquivo com os códigos. Antes de mais nada, escrevi sobre isso para o moderador há alguns dias.
 
Andrey Voytenko:
Sim, Rashid, você precisa atualizar o arquivo com os códigos. Escrevi pela primeira vez para o moderador sobre isso há alguns dias.
O arquivo do artigo foi atualizado. Peço desculpas pelo atraso.
[Excluído]  

Bom dia , Andrey Voytenko! Obrigado pelo artigo, mas não consigo receber e enviar mensagens de alerta do Telegram da seguinte maneira (cada vez que retorna um alerta vazio, ou seja, o fato de uma nova mensagem é detectado, mas retorna uma variável vazia):

   void ProcessMessages(void)
     {
      for(int i=0; i<m_chats.Total(); i++)
        {
         CCustomChat *chat=m_chats.GetNodeAtIndex(i);
         //--- se a mensagem não for processada
         if(!chat.m_new_one.done)
           {
           chat.m_new_one.done=true;
            string text=chat.m_new_one.message_text;
Alert(text);
            //--- início
            if(text=="/start")
               SendMessage(chat.m_id,"Hello, world! I am bot. \xF680");

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

Tentei criar um bot para enviar uma captura de tela para o telegram quando uma oferta aparece.

Ela é enviada de vez em quando por algum motivo, você poderia ver qual é o problema?

Somente este arquivo, que está no anexo.
Arquivos anexados:
 

Roman, se precisar do bot apenas para enviar capturas de tela, você pode fazer isso:

1. Peça ao @MyTelegramID_bot seu número de bate-papo.

2. Escreva um bot simples que verifique se há novos itens e envie imagens para o bate-papo com o ID especificado. Um exemplo é:

#include <Telegram.mqh>
//+------------------------------------------------------------------+
//| Parâmetros de entrada|
//+------------------------------------------------------------------+
input ENUM_LANGUAGES    InpLanguage=LANGUAGE_EN;//Língua
input string            InpToken="";//Token
input long              ChatId=0;   / ID do bate-papo
//---
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);

//--- atualizar gráfico
   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);

      //--- aguardando 30 segundos para salvar a captura de tela
      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);
  }

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

Obrigado por este tutorial,

Eu quero fazer um bot de telegrama para mt4, por favor me forneça qualquer tutorial para isso.

Agradecimentos

 

Que tal ler o artigo em questão? https://www.mql5.com/pt/articles/2355

Ele contém instruções passo a passo...

Você pode tentar e, se não funcionar, publique aqui e poderemos procurar a solução.

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.
 
Obrigado , Andrey Voytenko.
 
Olá, executei meu bot e queria enviar uma foto. No meta trader, abri o gráfico e o salvei. Vi que o bot estava enviando a foto, mas depois de um pequeno momento tudo parou e não consegui receber a foto.
 

Hi,

Antes de mais nada, obrigado pela descrição detalhada, muito apreciada.

Desculpe se isso parece bobagem, mas eu queria experimentar o Telegram_signal_EA e esperava poder ter alertas disparados por um indicador enviado para um canal do Telegram, mas o código que você forneceu para isso no terceiro exemplo foi escrito para o MT4 ou MT5?

Quando eu copio e colo o código em um novo arquivo no MetaEditor e o compilo, recebo um monte de erros e não tenho a menor ideia do que isso significa. É claro que eu deveria dedicar um tempo para descobrir tudo, mas com o código que você forneceu não deve ser muito difícil conseguir o que eu quero, certo?

Se alguém estiver disposto a me ajudar ou me indicar a direção certa, eu ficaria muito grato.

Atenciosamente,

Patrick

registro de erros