Когда я торгую советником мт5, или через сигнальный индикатор мт5, мне часто приходится тратить время на ожидание сигнала находясь у монитора ПК, не хочется пропускать хорошие сделки. Звук алерта, или получение уведомления в в мобильное приложение метатрейдер5, конечно позволяют иногда ненадолго отлучаться, но другое дело, когда приходит сигнал с более подробной информацией, да еще и на различные события прямо в мой телеграм. Такой функционал существует в готовых, платных советниках, например их можно приобрести на маркете. Но я решил сделать такой функционал сам. У меня есть исходник советника мт5, и в него я решил встроить функцию отправки сообщения в телеграм как при старте советника, так и при открытии сделки, а также при совпадении всех условий для открытия сделки, типа как сигнал, после которого я уже приму решение открыть сделки или нет. Сначала я хотел сделать такое в стрелочном индикаторе мт5, но выясниось что такой функционал запретили делать в индикаторах по соображениям безопасности. Но выход есть. можно прописать любой стрелочный индикатор в советник через iCustom и получать буферы стрелок. Но сейчас речь не об этом. Сейчас я расскажу что нужно сделать чтобы ваш советник мт5 вам сигналил в телеграм, ну или не вам лично, а в любой чат или канал. Есть два этапа, которые я разбил на шаги. На первом этапе мы создадим бота, получим его токен, и ID канала или чата. Таких инструкций в интернете очень много, если вы умеете это делать, пролистайте на второй этап. На втором этапе мы в исходный код пропишем немного строк, которые нам позволят реализовать весь наш функционал. После всего этого нам достаточно будет вписать в настройки советника токен и ID чтобы получать сообщения советника мт5 в ваш телеграм.
Этап первый
Шаг первый - токен бота
Заходите по ссылке https://t.me/BotFather и нажимаете или пишите команду /start После этого вы увидите меню, в котором надо нажать /newbot После этого вам придет ответ с просьбой придумать имя вашему боту, и потом еще один раз имя, но с приставкой через нижнее подчеркивание _bot. Потом вы должны в ответ получить поздравление Done! Congratulations с длинным текстом внутри которого и содержится наш токен бота после строчки Use this token to access the HTTP API:... Запишите его куда-нибудь.
Шаг второй - чат ID бота
Чтобы сообщение из метатрейдер вам пришло, нужно выбрать куда бы вы хотели его получить, есть варианты, в чат вашего бота, в какой нибудь ваш канал или другой чат. Я выбрал пока только лично себе, это вариант в чат к моему боту. Вот ID этого чата нам и надо узнать. Вставьте в строку вашего интернет браузера следующую команду https://api.telegram.org/bot<bot_token>/getUpdates где вместо <bot_token> замените на ваш токен HTTP API из первого шага, вставьте и после этого напишите вашему боту что-нибудь, и когда вы нажмете в браузере ввод или обновите страницу то увидите следующий текст в окне браузера {"ok":true,"result":[{"update_id":1.......2,
"message":{"message_id":421,"from":{"id":4........2,"is_bot":false,"first_name":"\u041c где в скобках написано после слова "from": id будут цифры, это ваши цифры чата. Их тоже запишите куда-нибудь.
Ну или этот же id можно получить через бот, и плюс если вы хотите сигналить в канал или какой-нибудь чат, тогда перешлите из канала или чата любое сообщение этому боту @userinfobot и в ответ он пришлет вам сообщение с id где для канала цифры начнутся со знака минус -
Этап второй
Шаг третий - настройка платформы Метатрейдер
Далее в платформе метатрейдер, заходите сверху в меню сервис -> настройки -> советники и вписываете в строчку "Разрешить WebRequest для следующих URL:" вот этот адрес https://api.telegram.org Далее открываете свой советник в редакторе. У вас должен быть исходник. Ну или создайте его себе сами и бесплатно. Я в свой статье уже рассказывал как это сделать без знаний программирования тут https://dzen.ru/a/aNgC9_4SyEdIt9q6
Шаг четвертый - редактируем код
В навигаторе терминала выбираете ваш советник мт5 и жмёте на него правой кнопкой мыши и выбираете Изменить, открывается редактор, или его также можно вызвать клавишей F4. В самом начале кода под строчками названия вставляете эти строчки:
input const string TG_API_URL = "https://api.telegram.org"; // в терминале
input const string botTkn = " "; // ваш токен бота
input const string chatID = " "; // ваш ID чата или канала
где в кавычках можете сразу вставить свои токен и ID, но важно учесть если оставить input то эти токен и ID будут видны в настройках советника, если хотите их скрыть что желательно сделать, то лучше прописать эти три строчки без слова input
Далее, после ваших настроек, блока с глобальными переменными, проще говоря после того места где мы вводим всякие настройки в советнике, вставляем этот блок кода:
int SendTelegramMessage(string message)
{
char data[]; // Массив для хранения данных, отправляемых в веб-запросе (в данном случае пустой)
char res[]; // Массив для хранения данных ответа из веб-запроса
string resHeaders; // Строка для хранения заголовков ответа из веб-запроса
// Создать URL-адрес для запроса API Telegram для отправки сообщения
const string url = TG_API_URL + "/bot" + botTkn + "/sendmessage?chat_id=" + chatID + "&text=" + message;
// Отправляем веб-запрос к API Telegram
int send_res = WebRequest ( "POST" , url, "" , 10000 , data, res, resHeaders);
// Проверяем статус ответа веб-запроса
if (send_res == 200 ) {
// Если статус ответа 200 (ОК), выводим сообщение об успешном завершении
Print ( "..." );
} else if (send_res == - 1 ) {
// Если статус ответа -1 (ошибка), проверьте конкретный код ошибки
if ( GetLastError () == 4014 ) {
// Если код ошибки 4014, это означает, что URL-адрес API Telegram не разрешен в терминале
Print ( "ПОЖАЛУЙСТА, ДОБАВЬТЕ " , TG_API_URL, " К ТЕРМИНАЛУ" );
}
// Вывести общее сообщение об ошибке, если запрос не удалось
Print ( "НЕВОЗМОЖНО ОТПРАВИТЬ ТЕЛЕГРАММУ" );
} else if (send_res != 200 ) {
// Если статус ответа не равен 200 или -1, выведите неожиданный код ответа и код ошибки
Print ( "UNEXPECTED RESPONSE" , send_res, "ERR CODE=" , GetLastError ());
}
return ( INIT_SUCCEEDED ); // Возвращает статус успешной инициализации
}
Далее ищите следом в коде такое название - int OnInit()
{ ... и сразу после ⬅ этой скобки вставляете эту строчку, вот она:
SendTelegramMessage("...");
где вместо точек вы можете выбрать любое слово, я поначалу там вставлял типа Старт советника, или начало, или сова запущена, почему? Потому что эта строка появляется в телеграм сразу после того как вы только накините сову на свой график в терминале. И важно, это строка совсем не обязательна, она просто уведомляет о том что сова включилась. Кроме слов, туда можно вписать все что угодно, и время запуска, и валютную пару, и таймфрейм, и депозит баланс или все вместе. Какие правила и коды я писать здесь не буду, воспользуйтесь подсказками искуственного ителлекта или ИИ, про ИИ я расскажу в конце статьи, ведь именно ИИ мне помог и помогает писать код.
И еще разок вставим кусок кода, уже конкретно на событие, например при открытии сделки, очень удобно например запустить сову на ДЕМО и включить ее работать, при этом получать сигналы при открытии сделок в телеграм. Ну это как вариант. Вариантов куда вставить самый важный кусок кода много, это открытие сделки, закрытие сделки и другие вещи. Итак на открытие сделки ставим. Ищите в сове такое сочетание, как искать, жмете в редкаторе сочетние клавиш Ctrl+F и в окне "Найти" вписываете что то типа OpenPosition(POSITION_TYPE_BUY... или просто OpenPosition
Где конкретно у вас в коде находится открытие позиции я не знаю, поищите, или попросите ИИ, дайте ему код, об это ниже. Короче жмете на "Найти далее" в окне поиска. Вас переносит к месту открытия позиции, и вы вставляете код сразу после скобки где заканчивается открытие позиции, например для BUY, еще раз, после скобки с точкой запятой, вот этот код, ну кроме зачеркнутого:
if(MaxSpread==0||spread<=MaxSpread)OpenPosition(POSITION_TYPE_BUY,StopBar); SendTelegramMessage("Открыта сделка в Buy " + _Symbol + " ⬆ " + " | цена: " + DoubleToString(iClose(Symbol(), 0, 0)));
где в кавычках "Открыта сделка..." вписываете что-то свое, где стрелка вверх тоже любой значок или текст, ну и цена на момент появления сообщения по желанию. И такую же процедуру проделываете где открытие позиции для SELL.
Шаг пятый - помощь ИИ
Для помощи в написании кода, я использовал встроенный бесплатный чат бот в телеграм GigaChat @gigachat_bot А также в браузере я использовал китайскую Нейросеть DeepSeek https://chat.deepseek.com/
Как пользоваться помощниками ИИ. Всегда пишите в начале первого запроса к нейросети язык программирования MQL5, потому что иногда они предлагают Питон. Во-вторых, не присылайте им весь код советника, достаточно части. В-третьих при ошибках компилляции всегда присылайте им строчки ошибок из редактора, это помогает. В целом, ИИ справится с любой вашей задачей при создании советника. Главное найти время, посидеть и пообщаться с ИИ на эту тему, вставлять куски кода, пробовать, я таким образом решаю практически все свои запросы, и теперь не надо покупать скрипты, советники, индикаторы. Сейчас я свой советник тестирую вместе с учениками, у меня есть группа которая обучается моей стратегии Мегалит. Все подробности в телеграм чате и телеграм канале https://t.me/rigo_channel заходите, подписывайтесь. И напишите в комментах получилось ли у вас внедрить в советник функцию отправки сообщений в ваш телеграм?