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

 
Andrey Voytenko:

ok. Mas se estiver trabalhando com um canal privado, use o ID do canal, não o nome do canal.

Olá Andrey


Sua biblioteca para o mt5 parece não funcionar no MODO ASSÍNCRONO com telegrama


Quando o bot do mt5 envia duas mensagens nos mesmos segundos, uma das mensagens é perdida.


Testei várias vezes. Você poderia dar uma olhada nesse problema?

 

Oi andrey


Antes de mais nada, muito obrigado pelo seu tempo e pelo seu artigo que me ajudou muito e eu li todas as publicações.

Lendo entre elas, finalmente consegui trabalhar com o "Telegram_Bot_EA" no MT5.

Tentando o "Telegram_Signal_EA" no MT5, não consegui enviar nenhum sinal com "MA" ou "MACD" ou com um indicador personalizado.

A compilação funciona bem, mas não envia um alerta ou mensagem, mas sei que está bem configurada, pois consegui trabalhar com o "Telegram_Bot_EA".

Revisei o código do EA e do telegrama.mqh e não vejo onde está a falha e estou preso, pois o EA ( Telegram_Signal_EA) não consegue enviar nenhuma informação de texto.

Você poderia me ajudar? São os mesmos arquivos do artigo original.

Neste fórum, vi esse código, mas acho que o problema não é meu:

   //+------------------------------------------------------------------+
   int SendMessage(const string _channel_name,
                   const string _text,
                   const bool   _as_HTML=false,
                   const bool   _silently=false)
     {
      //--- verificar token
      if(m_token==NULL)
         return(ERR_TOKEN_ISEMPTY);

      string name=StringTrim(_channel_name);
      if(StringGetCharacter(name,0)!='@')
         name="@"+name;

      string out;
      string url=StringFormat("%s/bot%s/sendMessage",TELEGRAM_BASE_URL,m_token);
      string params=StringFormat("chat_id=%s&text=%s",name,UrlEncode(_text));
      if(_as_HTML)
         params+="&parse_mode=HTML";
      if(_silently)
         params+="&disable_notification=true";
      // Print(params);
      int res=PostRequest(out,url,params,WEB_TIMEOUT);
      return(res);
     }

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


Nota: Tenho certeza de que funciona porque o "Telegram_Bot_EA" pode ser executado corretamente.


Outro:

//+------------------------------------------------------------------+
//||
//+------------------------------------------------------------------+
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");
     }
  }

Observação: pressiono "Q" no bate-papo do bot ou no bate-papo do canal e não funciona....i acho que, se você pressionar a tecla, o bot enviará o texto... certo? Bem, essa opção não funciona. Não entendo... Não tenho nenhum erro ou aviso para compilar todo o código mql5.


Resumo: gostaria de enviar um sinal de texto para o telegrama (compra/venda) sobre seus indicadores de exemplo ou minhas regras de indicadores personalizados, mas não entendo por que não funciona.


Obrigado e bom dia.


UPDATE1(resolvido):


Verifiquei os registros e obtive esta informação:

HL 0 06:24:00.729 Telegram_Signal_EAEVO (DE30,M1) Error: Bad Request

LH 0 06:40:00.916 Telegram_Signal_EAEVO (DE30,M1) {"ok":false, "error_code":400, "description": "Bad Request: chat not found"}

RG 0 06:40:00.916 Telegram_Signal_EAEVO (DE30,M1) Error: Bad Request

KQ 0 07:31:00.442 Telegram_Signal_EAEVO (DE30,M1) {"ok":false, "error_code":400, "description": "Bad Request: chat not found"}

MO 0 07:31:00.442 Telegram_Signal_EAEVO (DE30,M1) Error: Bad Request

Estou adicionando um novo pai e resolvendo o último erro, mas novamente não consigo enviar mensagem ao bot...

EF 0 12:26:44.372 Telegram_Signal_EAEVO (DE30,H1) NAME_bot: NAMEsignalsbot


UPDATE2(resolvido):

Verifiquei este link http://usefulmix.com/send-message-telegram-channel-bot-http-api/


No texto :


Portanto, precisamos tornar o canal privado; no entanto, ao fazer isso, nossa chamada de API HTTP acima deixará de funcionar, e é assim que a tentativa de publicar uma mensagem será:


{
  "ok": false,
  "error_code": 400,
  "description": "Bad Request: chat not found"
}

Eu verifico com a amostra de url e obtenho o seguinte:

        
ok      false
error_code      404
description     "Not Found"


Em common.mqh listamos esse erro, mas estou muito perdido com isso....I research more.

O "problema" é com um token de conversão, eu escrevo e digito esse código para testar e o bot me escreve:

//+------------------------------------------------------------------+
//||
//+------------------------------------------------------------------+

//Código original:

// {
// 
// if(id==CHARTEVENT_KEYDOWN && lparam=="Q")
//bot.SendMessage(InpChannelName, "ee\nAt:100\nDDDD");
//}

/Código de teste:

 {

  
   if(id==CHARTEVENT_KEYDOWN && 
      lparam=="Q")
   
      //--- definir token
   bot.Token(InpToken);
    bot.SendMessage("ID CHAT OR USER","ITS A TEST!");

}
     

Image:

Eu li novamente a postagem geral porque uma pessoa falou sobre isso.


PARA ATUALIZAR 3!

How to send a message to a Telegram channel using the HTTP bot sendMessage API
How to send a message to a Telegram channel using the HTTP bot sendMessage API
  • 2018.10.08
  • admin
  • usefulmix.com
Here’s a practical example how to send a message to a Telegram channel using a Telegram Bot and the HTTP bot sendMessage API. In order to be able to do so, you will have to the following: Create a Telegram public channel (we’ll make this private later) Create a Telegram BOT via BotFather Set the bot as administrator in your channel After...
 

Olá, certifique-se de importar o telegram.mqh e veja aqui:

https://www.mql5.com/en/forum/285054/page2#comment_11220261

MT4 to Telegram
MT4 to Telegram
  • 2019.04.04
  • www.mql5.com
Can anyone code or have any idea how to send trade details from MT4 to a Telegram channel. This is the sort of thing I am talking about. Thanks...
 
Marco vd Heijden:

Hola, asegúrese de importar telegram.mqh y vea aquí:

https://www.mql5.com/en/forum/285054/page2#comment_11220261

Eu verifico... preciso de um tempo... depois escrevo para você. Obrigado!!!!!
 

Muito obrigado, Nguyen Van Tuan,
Agora, ele funciona com canais privados. Antes, meu bot estava funcionando apenas em canais públicos.

Com os melhores cumprimentos,
Junior


Nguyen Van Tuan:

Hi,

Quando eu testei com esta biblioteca de Andrey Voytenkoon MT5, não funcionou bem, então eu tenho alguns passos mais simples. Se alguém tiver o mesmo erro, pode tentar mudar como eu:

1. Confirmar a adição de https://api.telegram.org para Allow WebRequest para o URL listado

2. Quando você usar chat_id (como "-1001301234105") em vez de @channel_name, ocorrerá algum erro com esse código, portanto, eu o alterei

E agora confirmo que, depois de fazer as duas coisas acima, essa biblioteca funciona bem no MT5.

Mais uma vez, obrigado , Andrey Voytenko.

 

Certo!!! Mesmo problema!!!!



Junior:

Muito obrigado, Nguyen Van Tuan,
Agora, ele funciona com canais privados. Antes, meu bot estava funcionando apenas em canais públicos.

Com os melhores cumprimentos,
Junior


 
Hi

Eu tenho um script para enviar mensagens do MT4 para o Telegram, tentei converter para MQL5 mas não consegui, através deste fórum de discussão eu peço ajuda para converter do formato de arquivo MQ4 para MQL5 para material de estudo adicional .....

o arquivo que incluí


Agradeço a quem estiver disposto a ajudar



Arquivos anexados:
 

Olá, atualizei o metatrader v e compilei o código novamente, mas recebi um aviso:


MT5 5.00 build: 2170 4 / OUT / 2019:

"" Comportamento obsoleto, as chamadas para métodos ocultos serão desativadas em uma versão futura do compilador MQL Telegram.mqh ""


A chamada de referência para: "" StringReplace ""


Estou procurando alguma alternativa, mas até o momento não a encontrei. Na futura versão ....., alguma ideia?


Obrigado!


Código:


 //+------------------------------------------------------------------+
   void UserNameFilter( const string username_list)
     {
      m_users_filter.Clear();

       //--- analisando
       string text=StringTrim(username_list);
       if (text== "" )
         return ;

       //---
       while ( StringReplace (text, "  " , " " )> 0 );
       StringReplace (text, ";" , " " );
       StringReplace (text, "," , " " );
      

       //---
       string array[];
       int amount= StringSplit (text, ' ' ,array);
       for ( int i= 0 ; i<amount; i++)
        {
         string username=StringTrim(array[i]);
         if (username!= "" )
           {
             //--- remover o primeiro @
             if ( StringGetCharacter (username, 0 )== '@' )
               username= StringSubstr (username, 1 );

            m_users_filter.Add(username);
           }
        }

     }
   //+------------------------------------------------------------------+ 
 
satrifx7:
Hi

Eu tenho um script para enviar mensagens do MT4 para o Telegram, tentei converter para MQL5 mas não consegui, através deste fórum de discussão eu peço ajuda para converter do formato de arquivo MQ4 para MQL5 para material de estudo adicional .....

O arquivo que incluí


Agradeço a quem estiver disposto a ajudar



Você não precisa converter o código. Esse código pode ser executado em ambas as versões, veja novamente a postagem ou o código.
 
odlambda:

Olá, atualizei o metatrader v e compilei o código novamente, mas recebi um aviso:

Por favor, use somente inglês no fórum.

Desta vez, editei e traduzi sua postagem com a ferramenta do site