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

 
Andrey Voytenko:

ok. Но если вы работаете с частным каналом, используйте ID канала, а не его название.

Здравствуйте Андрей


Ваша библиотека для mt5 похоже не может работать в асинхронном режиме с telegram


Когда бот mt5 отправляет два сообщения в одни и те же секунды, одно из сообщений теряется.


Я тестировал много раз. Не могли бы вы рассмотреть эту проблему?

 

Привет, Андрей


Большое спасибо, прежде всего, за ваше время и за то, что ваша статья очень помогла мне, и я прочитал все публикации.

Читая между ними, я наконец-то смог работать с "Telegram_Bot_EA" в MT5.

Попробовав "Telegram_Signal_EA" в MT5, мне не удалось отправить ни одного сигнала ни с "MA", ни с "MACD", ни с пользовательским индикатором.

Компиляция работает хорошо, но не отправляет оповещения или сообщения. Однако я знаю, что она хорошо настроена, так как я смог работать с "Telegram_Bot_EA".

Я просмотрел код как советника, так и telegram.mqh Я не вижу, где может быть ошибка, и я застрял. Советник ( Telegram_Signal_EA) не может быть отправлен никакой текстовой информации.

Не могли бы вы мне помочь? Это те же файлы, что и в оригинальной статье.

На этом форуме я видел этот код, но я думаю, что это не моя проблема:

   //+------------------------------------------------------------------+
   int SendMessage(const string _channel_name,
                   const string _text,
                   const bool   _as_HTML=false,
                   const bool   _silently=false)
     {
      //--- проверить токен
      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);
     }

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


Примечание: Я уверен, что это работает, потому что "Telegram_Bot_EA" может быть запущен хорошо.


Еще один:

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

Примечание:я нажимаю "Q" в чате бота или в чате канала и не работает.... Я думаю, что если вы нажмете клавишу, бот отправит вам текст...правильно? Ну, эта опция не работает. Я не понимаю... У меня нет никаких ошибок или предупреждений при компиляции всего кода mql5.


Резюме: мне нравится отправлять в Telegram текстовые сигналы (покупка/продажа) о ваших примерах индикаторов или моих собственных правилах индикаторов, но я не понимаю, почему это не работает.


Спасибо и хорошего дня.


UPDATE1(решено):


Я проверил логи и получил следующую информацию:

HL 0 06:24:00.729 Telegram_Signal_EAEVO (DE30,M1) Error: Плохой запрос

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) Ошибка: Плохой запрос

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) Ошибка: Плохой запрос

Я добавляю нового отца и решаю последнюю ошибку, но снова не могу отправить сообщение боту...

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


UPDATE2(решено):

Я проверяю эту ссылку http://usefulmix.com/send-message-telegram-channel-bot-http-api/


В тексте :


Итак, нам нужно сделать канал приватным, однако при этом наш вышеуказанный вызов HTTP API перестанет работать, и вот как будет выглядеть попытка опубликовать сообщение:


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

Я проверяю с помощью образца url и получаю следующее:

        
ok      false
error_code      404
description     "Not Found"


В списке common.mqh есть эта ошибка, но я очень заблудился в этом.... Я исследую больше.

Проблема" заключается в конвертируемом токене, я написал и ввел этот код для проверки, и бот написал мне:

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

//Оригинальный код:

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

//Тестовый код:

 {

  
   if(id==CHARTEVENT_KEYDOWN && 
      lparam=="Q")
   
      //--- установить маркер
   bot.Token(InpToken);
    bot.SendMessage("ID CHAT OR USER","ITS A TEST!");

}
     

Image:

Я снова прочитал общий пост, потому что один человек говорит об этом.


TO UPDATE 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...
 

Здравствуйте, убедитесь, что вы импортировали telegram.mqh и посмотрите здесь :

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

Я проверяю... мне нужно время... позже я напишу вам.Спасибо!!!!!
 

Большое спасибо Nguyen Van Tuan,
Теперь он работает с приватными каналами. Раньше мой бот работал только в публичных каналах.

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


Nguyen Van Tuan:

Привет,

Когда я тестировал с этой библиотекой Андрея Войтенкоона MT5, она не работает хорошо, поэтому у меня есть еще несколько простых шагов. Любые люди, которые столкнулись с той же ошибкой, могут попробовать изменить, как я:

1. Подтвердите добавление https://api.telegram.org в Allow WebRequest для перечисленных URL.

2. Когда вы используете chat_id (например, "-1001301234105") вместо @channel_name, вы столкнетесь с ошибкой при использовании этого кода, поэтому я изменил его

И теперь я подтверждаю, что после того, как я сделал две вещи выше, эта библиотека хорошо работает в MT5.

Еще раз спасибо Андрею Войтенко.

 

Точно!!! Та же проблема!!!!



Junior:

Большое спасибо Nguyen Van Tuan,
Теперь он работает с приватными каналами. Раньше мой бот работал только в публичных каналах.

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


 
Здравствуйте

У меня есть скрипт для отправки сообщений из MT4 в Telegram, я пытался конвертировать в MQL5, но не получилось, через этот форум я прошу помощи в конвертации из формата файлов MQ4 в MQL5 для дальнейшего изучения материала ......

файл, который я включил


Я благодарю тех, кто готов помочь



Файлы:
 

Здравствуйте, я обновил metatrader v и снова скомпилировал код, но мне выдает предупреждение:


MT5 5.00 build: 2170 4 / OCT / 2019:

"""Устаревшее поведение, вызовы скрытых методов будут отключены в будущей версии компилятора MQL Telegram.mqh """


Вызов ссылки на: "" "StringReplace ""


Я ищу какую-нибудь альтернативу, но на данный момент не нашел. В будущем rev ..... есть идеи?


Спасибо!!!


Код:


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

       //--- разбор
       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!= "" )
           {
             //--- удалите первый @
             if ( StringGetCharacter (username, 0 )== '@' )
               username= StringSubstr (username, 1 );

            m_users_filter.Add(username);
           }
        }

     }
   //+------------------------------------------------------------------+ 
 
satrifx7:
Привет

У меня есть скрипт для отправки сообщений из MT4 в Telegram, я пытался конвертировать в MQL5, но не получилось, через этот форум я прошу помощи в конвертации из формата файлов MQ4 в MQL5 для дальнейшего изучения материала ......

файл, который я включил


Я благодарю тех, кто готов помочь



Вам не нужно конвертировать код. Этот код может быть запущен в обеих версиях, см. еще раз пост или код.
 
odlambda:

Здравствуйте, я обновляю metatrader v и компилирую код снова, но при этом выдается предупреждение:

Пожалуйста, используйте только английский язык на форуме.

На этот раз я отредактировал и перевел ваше сообщение с помощью инструмента сайта