Обсуждение статьи "Создание бота для Telegram на языке MQL5" - страница 32
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Привет всем,
Может быть, кто-то из вас может помочь, я отчаянно пытаюсь найти решение для отправки локального скриншота через MT4 в Telegram.
Быстрый снимок кода
Первый работает, так как я получаю сообщение, даже если я использую @channelname
Второй работает только с chatID, что нормально, я могу с этим жить
Третий выдает ошибку:
2020.08.07 21:40:15.175 xxx1: {"ok":false, "error_code":400, "description": "Bad Request: chat not found"}.
Есть идеи, что я делаю не так?
Привет всем,
Может быть, кто-то из вас сможет помочь, я отчаянно пытаюсь найти решение для отправки локального скриншота через MT4 в Telegram.
Быстрый снимок кода
Первый вариант работает, так как я получаю сообщение, даже если использую @channelname
Второй работает только с chatID, что нормально, я могу с этим жить
Третий вариант выдает ошибку:
2020.08.07 21:40:15.175 xxx1: { "ok":false, "error_code":400, "description": "Bad Request: chat not found"}
Есть идеи, что я делаю не так?
Да, вам нужно изменить файл mqh так, чтобы он принимал отрицательное число.
@Marco vd Heijden Спасибо!
Это интересно, я посмотрел на Telegram.mqh и вижу три функции для SendPhoto, из которых мне интересно, как код знает, какую из них использовать. Третья в любом случае не может быть использована.
Первая:
Вторая:
Может ли быть так, что код не знает, какую из них я хочу использовать? Я пытаюсь задействовать первый, но на самом деле второй был бы лучше.
Во-вторых, я пытался найти в первой функции, что происходит с _chat_id, но я вижу только простое преобразование целого числа в строку:
обратите внимание на второй параметр: один - длинный, другой - строка
и
Это часть основ mql, у вас может быть миллион функций с одним и тем же именем с разными параметрами или количеством параметров
@Jefferson Metha да, я понимаю это, это была просто моя мысль, так как было так трудно найти проблемы.
Я воспользовался советами, описанными в https://www.mql5.com/en/forum/89826/page15#comment_17079865, но все равно ничего не добился.
Я хотел бы сосредоточиться на функции sendPhoto, где в качестве входных данных используется имя канала, а не ID чата, поэтому давайте сосредоточимся только на одной вещи.
Что я сделал на данный момент, в Telegarm.mqh в функции
Я изменил следующую строку:
В принципе, я удалил функцию StringTrim, но лучше от этого не стало.
Наконец-то разобрался.
Изменения:
Удалено:
И, наконец, в советнике, так же просто, как:
Добрый день.
Спасибо за подробную статью. Очень помогла.
Столкнулся с тем, что WEB запрос не отрабатывался.
Выдает ошибку
2020.08.19 15:56:04.830 Moving Average Signal To Alert (RTSRIU0,M1) Error: URL does not allowed for WebRequest
После исследований оказалось что пропущен ?( вопрос) после /sendmessage?
Это уже исправлено было? Есть новая версия ?
Сам то я исправлю.
Делаю отправку текста в телеграм из индикатора. Но пришлось изменить POST на GET тип запроса.
Если отправляю с POST то возникает ошибка 400. Если отправляю из советника такой же код(но использу.ю не _WebRequest а WebRequest) то код работает в режиме POST. Подскажите куда стоит посмотреть, так как в методе GET у меня есть ограничение на длину запроса?
Ошибка и с GET тоже ошибка 400...
2020.08.21 08:52:20.138 testWININET GBPUSD,M1: Ошибка загрузки 'https://api.telegram.org/bot123123123:ываываыукаыва /sendMessage?chat_id=-123123123123123&parse_mode=HTML&text=Привет', код 400
Если отправляю через браузер запрос проходит.
#property link "https://www.mql5.com"
#property version "1.00"
#property strict
#property indicator_chart_window
//#include <Wininet.mqh>
#include <Webrequest_dll.mqh>
#define telegramBaseURL "https://api.telegram.org"
//https://tlgrm.ru/docs/bots/api почитать как что отправлять
input string inpToken="11111212:вапвапапЫВВАEFfer";//Token
input string inpChat_id ="-3123123123123213";
bool inpParsMode =true;
int OnInit()
{
string data;
string url="https://api.telegram.org/bot" + inpToken + "/sendMessage?chat_id="+inpChat_id;
if(inpParsMode){
url = url + "&parse_mode=HTML";
}
// url = url + "&text= " + "<b>1114</b>";
// url = url + "&text= " + "<i>1114</i>";
url = url + "&text=" + "1118";
Print (url);
string cookie=NULL,headers;
char post[],result[];
int res=_WebRequest("GET",url,cookie,NULL,500,post,0,result,headers);
if(res==-1)
{
Print("Ошибка в WebRequest. Код ошибки =",GetLastError());
//--- возможно, URL отсутствует в списке, выводим сообщение о необходимости его добавления
MessageBox("Необходимо добавить адрес '"+url+"' в список разрешенных URL во вкладке 'Советники'","Ошибка",MB_ICONINFORMATION);
}
else
{
if(res==200)
{
//--- успешная загрузка
PrintFormat("Файл успешно загружен, размер %d байт.",ArraySize(result));
//PrintFormat("Заголовки сервера: %s",headers);
//--- сохраняем данные в файл
int filehandle=FileOpen("url.htm",FILE_WRITE|FILE_BIN);
if(filehandle!=INVALID_HANDLE)
{
//--- сохраняем содержимое массива result[] в файл
FileWriteArray(filehandle,result,0,ArraySize(result));
//--- закрываем файл
FileClose(filehandle);
}
else
Print("Ошибка в FileOpen. Код ошибки =",GetLastError());
}
else
PrintFormat("Ошибка загрузки '%s', код %d",url,res);
}
// ReadUrl(url,data);
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
const int prev_calculated,
const datetime &time[],
const double &open[],
const double &high[],
const double &low[],
const double &close[],
const long &tick_volume[],
const long &volume[],
const int &spread[])
{
//---
//--- return value of prev_calculated for next call
return(rates_total);
}
//+------------------------------------------------------------------+