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

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

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

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

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

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

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

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

 

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

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

BotFather отвечает списком команд, нам нужна команда – “/newbot” – вводим ее. В ответ предлагается выбрать имя нашему новому боту. Придумываем и вводим, например, “newOSAbot”.

Далее предлагается выбрать имя пользователя, оканчивающееся на “bot”. Делаем его, просто приписав в конец то, что нужно - “newOSAbot_bot”.

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

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

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

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

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

Вот как это выглядит:

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

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

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

 

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

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

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

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

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

Уведомления в роботе сделаны на:

а) открытие позиции;

б) закрытие позиции;

в) потерю соединения с сервером.

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

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

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

 

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

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

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

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

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

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

Ссылка на робота на GitHub: https://github.com/AlexWan/OsEngine

Общаемся здесь.

20:57
215

Комментарии

Нет комментариев. Ваш будет первым!