• Уважаемые форумчане, друзья и посетители!
    Форум останавливает свою работу с 7 июня на неопределенное время.
    Сохраните все что для вас важное с форума.
    Всем удачи и всего наилучшего в этой жизни.
  • Уважаемые форумчане, друзья и посетители!
    Поступило предложение ( ссылка на обсуждение ) на сбор средств поддержания форума в рабочем состоянии с 1 июня ( оплата хостинга, бэкап ежедневный на другой хостинг и тд), отчетность будет предоставляться ежемесячно. Пока на ЮMoney ( яндекс деньги), доступно картой перевод, далее добавлю другие способы. Сумму перевода указывайте на ваш выбор исходя из своих возможностей.

Программирование Сообщение в Telegram канал

  • Автор темы thinarthrill
  • Дата начала
T

thinarthrill

Well-Known Member
NinjaTrader
  • #1
Всем любителям алертов посвящается.
Существует множество путей оповестить трейдера о произошедшем событии в Ninjatrader. Среди них и Alert, и сообщение на почту SendMail и СМС сообщение через соответствующий шлюз. Каждый вариант имеет свои плюсы (типа простоты кода или настроек) так и минусы (как спам в почте и коммерческая подоплека в рассылке СМС). Как еще один вариант - отправка уведомлений в Telegram канал. В нете рылся долго, искал самый простой вариант разработки скрипта, чтобы не для особо продвинутых прогеров. В основном попадались библиотеки, которые надо было тянуть из Github, компилировать, и дописывать кучу кода для вызова методов. Но недавно нашел таки простецкий метод, который достаточно вызвать в любом месте кода, указав в качестве параметра, пересылаемое сообщение. Но для его вызова предварительно нужно сделать следующие настройки. и в основном они касаются самого Telegram

1. Создать публичный канал (запоминаем имя, его нужно будет указать далее в коде)
2. Создать Telegram бота посредством BotFather (запоминаем Token, который сгенерирует BotFather, его нужно будет указать далее в коде)
3. Созданного бота сделать администратором публичного канала

Настройки завершены. Далее простой код

4. Добавляем библиотеки
C#:
using System.IO;
using System.Net;

5. Добавляем функцию
Код:
public string SendTelegram(string Message) {
            string urlString = "https://api.telegram.org/bot{0}/sendMessage?chat_id={1}&text={2}";
            string apiToken = "TOKEN";
            string chatId = "@ИМЯ_ТВОЕГО_БОТА";
            string text = Message;
            urlString = String.Format(urlString, apiToken, chatId, text);
            WebRequest request = WebRequest.Create(urlString);
            Stream rs = request.GetResponse().GetResponseStream();
            StreamReader reader = new StreamReader(rs);
            string line = "";
            StringBuilder sb = new StringBuilder();
            while ( line !=null ) {
             line = reader.ReadLine();
             if ( line != null )
             sb.Append(line);
            }
            string response = sb.ToString();
            return response;
        }

Вместо TOKEN, подставляем Token, который сгенерировал BotFather в пункте 2
Вместо ИМЯ_ТВОЕГО_БОТА подставляем имя канала, созданного в пункте 1

6. Вызываем функцию при вашем событии, чтобы отправить сообщение в канал
SendTelegram("Выставлен ордер на продажу "+Instrument.MasterInstrument.Name+" по цене "+Close[0]);

В итоге уведомления всегда под рукой


 
Последнее редактирование:
  • Like
Реакции: AlexanderOsi, RoonStorm, bravissimo и ещё 6
  • #2
Этот код в НТ7 работаеть будет?
 
  • #3
Будет
 
  • #4
  • #5
Да. Или стратегии.
 
  • #6
thinarthrill сказал(а):
Всем любителям алертов посвящается.
Существует множество путей оповестить трейдера о произошедшем событии в Ninjatrader. Среди них и Alert, и сообщение на почту SendMail и СМС сообщение через соответствующий шлюз. Каждый вариант имеет свои плюсы (типа простоты кода или настроек) так и минусы (как спам в почте и коммерческая подоплека в рассылке СМС). Как еще один вариант - отправка уведомлений в Telegram канал. В нете рылся долго, искал самый простой вариант разработки скрипта, чтобы не для особо продвинутых прогеров. В основном попадались библиотеки, которые надо было тянуть из Github, компилировать, и дописывать кучу кода для вызова методов. Но недавно нашел таки простецкий метод, который достаточно вызвать в любом месте кода, указав в качестве параметра, пересылаемое сообщение. Но для его вызова предварительно нужно сделать следующие настройки. и в основном они касаются самого Telegram

1. Создать публичный канал (запоминаем имя, его нужно будет указать далее в коде)
2. Создать Telegram бота посредством BotFather (запоминаем Token, который сгенерирует BotFather, его нужно будет указать далее в коде)
3. Созданного бота сделать администратором публичного канала

Настройки завершены. Далее простой код

4. Добавляем библиотеки
C#:
using System.IO;
using System.Net;

5. Добавляем функцию
Код:
public string SendTelegram(string Message) {
            string urlString = "https://api.telegram.org/bot{0}/sendMessage?chat_id={1}&text={2}";
            string apiToken = "TOKEN";
            string chatId = "@ИМЯ_ТВОЕГО_БОТА";
            string text = Message;
            urlString = String.Format(urlString, apiToken, chatId, text);
            WebRequest request = WebRequest.Create(urlString);
            Stream rs = request.GetResponse().GetResponseStream();
            StreamReader reader = new StreamReader(rs);
            string line = "";
            StringBuilder sb = new StringBuilder();
            while ( line !=null ) {
             line = reader.ReadLine();
             if ( line != null )
             sb.Append(line);
            }
            string response = sb.ToString();
            return response;
        }

Вместо TOKEN, подставляем Token, который сгенерировал BotFather в пункте 2
Вместо ИМЯ_ТВОЕГО_БОТА подставляем имя канала, созданного в пункте 1

6. Вызываем функцию при вашем событии, чтобы отправить сообщение в канал
SendTelegram("Выставлен ордер на продажу "+Instrument.MasterInstrument.Name+" по цене "+Close[0]);

В итоге уведомления всегда под рукой


Посмотреть вложение 5821Посмотреть вложение 5822
Как вызвать эту функцию вместе с алертом ? Точнее интересует есть ли возможность её добавить при настройке алерта в гуи варианте, без колдовства кодом ?
 
  • #7
RoonStorm сказал(а):
Как вызвать эту функцию вместе с алертом ? Точнее интересует есть ли возможность её добавить при настройке алерта в гуи варианте, без колдовства кодом ?
нет такой возможности, только через код
 
Назад
Верх Низ