Блог им. UHSF

Как отправлять сообщения в Telegram из робота OsEngine

    • 17 февраля 2024, 17:58
    • |
    • UHSF
  • Еще


Бывает нужно получать от торгующего робота какие-то уведомления – это могут быть уведомления об открытии позиций, закрытии, каком-то сбое и тд.

 

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

 

Как отправлять сообщения в Telegram из робота OsEngine


Инструкция состоит из 3-х пунктов:

1. Создание бота в Telegram для приема сообщений

2. Отправка сообщений на примере бесплатного робота OsEngine

3. Обзор кода робота

 


1. Создание бота в
Telegram  для приема сообщений

Нам будет нужен бот в самом мессенджере Телеграм. Для его создания используем BotFather (https://t.me/BotFather) – это официальный бот мессенджера, который позволяет создавать ботов и управлять ими. Открываем его и начинаем с ним чат (команда “/start” или Запустить):

Как отправлять сообщения в Telegram из робота OsEngine

BotFather отвечает списком команд, нам нужна команда – “/newbot” – вводим ее. В ответ предлагается выбрать имя нашему новому боту – придумываем и вводим, например, “newOSAbot”.
Далее предлагается выбрать имя пользователя, оканчивающееся на “bot” – делаем его, просто приписав в конец то, что нужно — “newOSAbot_bot”.

 

Вот так в итоге выглядит диалог создания бота:

Как отправлять сообщения в Telegram из робота OsEngine

BotFather сообщил нам об успешном создании бота и выдал Токен, который нужно куда-то сохранить – он нам будет нужен для работы.

При необходимости, созданных в BotFather ботов можно настраивать – добавлять описание, команды, устанавливать аватар и прочее.

 

Далее нам нужно узнать свой Telegram ID. Для этого можно использовать вот этого бота — https://t.me/userinfobot

Запускаем бота, и он выдает нам в ответ ID, сохраняем его рядом с Токеном.
Вот как это выглядит:

Как отправлять сообщения в Telegram из робота OsEngine

Давайте теперь проверим нашего вновь созданного бота — вводим в поиске Телеграм имя бота (newOSAbot_bot) и запускаем его. Проверить отправку ему сообщений можно в браузере – для этого в адрес («api.telegram.org/bot + Token + /sendMessage?chat_id= + ID + &text=Hello!») надо вставить наши Токен и ID:

Как отправлять сообщения в Telegram из робота OsEngine

Если все правильно, то в чат с ботом придет приветственное сообщение:

Как отправлять сообщения в Telegram из робота OsEngine
Впоследствии все уведомления от робота OsEngine будут приходить сюда же.



2. Отправка сообщений на примере бесплатного робота
OsEngine

Нам нужен робот-пример отправки сообщений в Телеграм, называется он TelegramSample.cs

Как отправлять сообщения в Telegram из робота OsEngine

Запускаем OsEngine, добавляем данного робота. Настройки уведомлений находятся во вкладке Параметров Telegram settings – там вводим ранее полученные Токен и ID в соответствующие поля:

Как отправлять сообщения в Telegram из робота OsEngine

Включаем режим “On” не забываем. Так же на вкладке Trade settings надо тоже включить и настроить индикатор там еще можно и рабочий объем.

 

Робот не для боевой торговли, а для демонстрации работы с уведомлениями в Телеграм, его торговая стратегия простейшая — индикатор Price Channel, вход в лонг при пробое верхней границы канала, выход при пробое нижней…

 

Уведомления в роботе сделана на: а) открытие позиции; б) закрытие позиции; в) потерю соединения с сервером.
Уведомление о потере соединения работает только в OsTrader (в боевом режиме). Поэтому в Тестере мы сейчас проверим уведомления о сделках.

В уведомлениях текст события, в скобках название робота, цена входа/выхода.

 

Настроили все, запустили тест (без ускорения, а то спамить уведомлениями будет) — уведомления есть:

Как отправлять сообщения в Telegram из робота OsEngine




3. Обзор кода робота

За отправку уведомлений в Телеграм отвечает асинхронный метод SendTelegramMessageAsync(string message), принимает, соответственно, сообщение, которое нужно отправить:

Как отправлять сообщения в Telegram из робота OsEngine

В методе некоторые проверки что введены ID и Токен и правильности ввода.

 

Метод для открытия и закрытия позиций вызывается в обработчиках успешного открытия и закрытия позиции. В обработчиках собираем нужную нам строку и передаем в метод:

Как отправлять сообщения в Telegram из робота OsEngine

Проверка соединения с сервером реализована в методе CheckConnect():

Как отправлять сообщения в Telegram из робота OsEngine

В методе крутится бесконечный цикл while с периодичностью 10 секунд, проверяется статус сервера. Когда соединение обрывается – приходит уведомление об этом.
Метод запускается в отдельном потоке из Конструктора в том случае, если робот запущен в боевом соединении (OsTrader):

Как отправлять сообщения в Telegram из робота OsEngine

Спасибо за внимание! Прибыльных алгоритмов и всего доброго!

 

Ссылка на робота на GitHub: https://github.com/AlexWan/OsEngine/blob/master/project/OsEngine/bin/Debug/Custom/Robots/TelegramSample.cs

★18
4 комментария
спасибо, поюзаем, посмотрим
avatar
Спасибо тебе огромное за такой пример.

Десятки людей будут использовать. От всех выражаю признательность!
Робот может такие картинки присылать?

avatar
Mathman, хехе в следующей версии надо обязательно сделать.
Или вот — человек, позиция в прибыли, надо обмыть.

avatar

теги блога UHSF

....все тэги



UPDONW
Новый дизайн