Discusión sobre el artículo "Cómo crear un bot para Telegram en el lenguaje MQL5" - página 15

 
Andrey Voytenko:

ok. Pero si está trabajando con un canal privado, utilice el ID del canal, no el nombre del canal.

Hola Andrey


tu libreria para mt5 parece que no puede funcionar en MODO asincronico con telegram


Cuando el bot mt5 envia dos mensajes en el mismo segundo, uno de los mensajes se pierde.


He probado muchas veces . ¿podría mirar en este problema?

 

Hola andrey


Muchas gracias en primer lugar por tu tiempo y por tu artículo me ha ayudado mucho y he leído todas las publicaciones.

Leyendo entre ellas por fin he podido trabajar con el "Telegram_Bot_EA" en a MT5.

Probando con "Telegram_Signal_EA" en MT5, no he conseguido enviar ninguna señal ni con "MA" ni con "MACD" ni con un indicador personalizado.

La compilación funciona bien pero no envía ninguna alerta ni mensaje.No obstante sé que está bien configurado ya que he podido trabajar con "Telegram_Bot_EA".

He revisado el código tanto del EA como del telegram.mqh no veo donde puede estar el fallo y estoy atascado.El EA( Telegram_Signal_EA) no puede enviar ninguna info de texto.

En este foro veo este codigo pero no lo veo.

En este foro he visto este codigo pero creo que no es mi problema:

   //+------------------------------------------------------------------+
   int SendMessage(const string _channel_name,
                   const string _text,
                   const bool   _as_HTML=false,
                   const bool   _silently=false)
     {
      //--- check 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: Estoy seguro de que funciona porque "Telegram_Bot_EA" se puede ejecutar bien.


Otra cosa:

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

Nota: Presiono "Q" en el chat del bot o en el chat del canal y no funciona..... Creo que si presionas la tecla, el bot te envía un texto... ¿cierto? Bueno, esta opción no funciona. No entiendo... No tengo ningún error o advertencias para compilar todo el código mql5.


Reanudar: me gusta enviar a la señal de texto telegrama (compra / venta) acerca de sus indicadores de ejemplo o mis indicadores personalizados reglas pero yo no understant por qué no me funciona.


Gracias y buen dia.


UPDATE1(resuelto):


Compruebo los registros y obtener esta información:

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": "Solicitud errónea: chat no encontrado"}

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": "Solicitud errónea: chat no encontrado"}

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

Estoy añadiendo un nuevo padre y resolviendo el último error, pero de nuevo no puedo enviar el mensaje al bot...

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


UPDATE2(solucionado):

Compruebo este enlace http://usefulmix.com/send-message-telegram-channel-bot-http-api/


En el texto :


Así que tenemos que hacer que el canal sea privado, sin embargo al hacerlo nuestra llamada a la API HTTP anterior dejará de funcionar y así es como se verá al intentar prublicar un mensaje:


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

Lo compruebo con el ejemplo de url y obtengo esto:

        
ok      false
error_code      404
description     "Not Found"


En common.mqh aparece este error pero estoy muy perdido con esto....Investigo más.

El "problema" es con un convert token, escribo y tecleo este código para probar y el bot me escribe:

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

//Código original:

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

//Código de prueba:

 {

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

}
     

Imagen:

He vuelto a leer el post general porque una gente habla de esto.


PARA ACTUALIZAR 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...
 

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

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

¡¡¡¡¡Lo compruebo...necesito tiempo...luego te escribo.Gracias!!!!!
 

Muchas gracias Nguyen Van Tuan,
Ahora, funciona con canales privados. Antes, mi bot sólo funcionaba en canales públicos.

Saludos cordiales,
Junior


Nguyen Van Tuan:

Hola,

Cuando he probado con esta Biblioteca de Andrey Voytenkoon MT5, No funciona bien así que tengo un poco más simple paso. Cualquier persona golpeó mismo error puede tratar de cambiar como yo:

1. Confirmar añadir https://api.telegram.org a Permitir WebRequest para URL de la lista

2. Si utiliza chat_id (como "-1001301234105") en lugar de @nombre_canal, se producirá algún error con este código, por lo que lo he cambiado.

Y ahora confirmo que despues de hacer las dos cosas anteriores, esta libreria funciona bien en MT5.

Gracias Andrey Voytenko de nuevo.

 

¡¡¡Correcto!!! ¡¡¡¡Mismo problema!!!!



Junior:

Muchas gracias Nguyen Van Tuan,
Ahora, funciona con canales privados. Antes, mi bot sólo funcionaba en canales públicos.

Saludos cordiales,
Junior


 
Hola

Tengo un script para enviar mensajes de MT4 a Telegram, he intentado convertirlo a MQL5 pero he fallado, a través de este foro de discusión pido ayuda para convertir de formato de archivo MQ4 a MQL5 para posterior material de estudio .....

el archivo que incluí


Agradezco a quienes estén dispuestos a ayudar



Archivos adjuntos:
 

Hola, actualizo metatrader v y vuelvo a compilar el código, pero me reporta una advertencia:


MT5 5.00 build: 2170 4 / OCT / 2019:

"" Comportamiento obsoleto, las llamadas a métodos ocultos se desactivarán en una versión futura del compilador MQL Telegram.mqh ""


La llamada de referencia a: " StringReplace "


Estoy buscando alguna alternativa pero de momento no la he encontrado. En la futura rev ..... ¿alguna idea?


¡¡¡Gracias!!!


Código:


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

       //--- análisis
       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!= "" )
           {
             //--- eliminar la primera @
             if ( StringGetCharacter (username, 0 )== '@' )
               username= StringSubstr (username, 1 );

            m_users_filter.Add(username);
           }
        }

     }
   //+------------------------------------------------------------------+ 
 
satrifx7:
Hola

Tengo un script para enviar mensajes de MT4 a Telegram, he intentado convertirlo a MQL5 pero he fallado, a través de este foro de discusión pido ayuda para convertir de formato de archivo MQ4 a MQL5 para posterior material de estudio .....

el archivo que incluí


Agradezco a quienes estén dispuestos a ayudar



No es necesario convertir el codigo, este codigo se puede ejecutar en ambas versiones, ver de nuevo el post o el codigo.
 
odlambda:

Hola, actualizo metatrader v y vuelvo a compilar el código, pero me reporta una advertencia:

Por favor, utilice sólo Inglés en el foro.

He editado y traducido tu post con la herramienta del sitio esta vez