Буквально пару дней назад мне в «Стол Заказов» поступила просьба создать телеграм-мессенджер. У пользователя
ShamanHand уже были определенные наработки в этом вопросе, которыми он поделился в топике:
zakaz.opentraders.ru/56558.html
Также он прислал мне образцы кода, которые он писал для себя. Мне оставалось лишь разобраться с регистрацией в Telegram и переделать образцы кода для учебного примера.
Первым делом пройдем на официальный сайт мессенджера в интернете:
telegram.org/
Выберем нужную установку:
Скачаем и установим программу. Создадим канал и бота. Подробнее смотрите видео:
Набросаем код для МТ4.
Во входных переменных будут 3 параметра:
input string URL="https://api.telegram.org/";
input string ChannelID="1424319433";
input string BotID="1391025599:AAFOpgDWODKtgVcTEQgs8jB65n9UjO9XaMk";
1. Адрес API телеграма
2. ID канала
3. ID бота
Полностью запрос будет представлять собой строку следующего вида:
https://api.telegram.org/bot********************************************/sendMessage?chat_id=**********&text=*******!
Наш код будет считывать параметры открытой позиции и отправлять их в телеграм:
//+------------------------------------------------------------------+
//| TelegramMT4.mq4 |
//| Copyright 2020, AM2 |
//| http://www.forexsystems.biz |
//+------------------------------------------------------------------+
#property copyright "Copyright 2020, AM2"
#property link "http://www.forexsystems.biz"
#property version "1.00"
#property strict
input string URL="https://api.telegram.org/";
input string ChannelID="1424319433";
input string BotID="1391025599:AAFOpgDWODKtgVcTEQgs8jB65n9UjO9XaMk";
int k=0;
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
//---
//---
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//---
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
int res=0;
char post[];
char result[];
string headers;
string text="";
if(OrdersTotal()>0)
{
for(int i=OrdersTotal()-1; i>=0; i--)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{
if(OrderType()==0)
{
text+="\n Order Type: BUY";
text+="\n Order Symbol: "+string(OrderSymbol());
text+="\n Order Open Time: "+string(OrderOpenTime());
text+="\n Order Open Price: "+string(OrderOpenPrice());
}
if(OrderType()==1)
{
text+="\n Order Type: SELL";
text+="\n Order Symbol: "+string(OrderSymbol());
text+="\n Order Open Time: "+string(OrderOpenTime());
text+="\n Order Open Price: "+string(OrderOpenPrice());
}
}
}
}
string url=URL+"bot"+BotID+"/sendMessage?chat_id="+ChannelID+"&text="+text;
//https://api.telegram.org/bot1391025599:AAFOpgDWODKtgVcTEQgs8jB65n9UjO9XaMk/sendMessage?chat_id=1424319433&text=Hello!
if(k<3)
{
ResetLastError();
res=WebRequest("GET",url,NULL,NULL,5000,post,0,result,headers);
k++;
if(res<0)
{
Print(url);
Print("Ошибка в WebRequest. Код ошибки =",GetLastError());
}
}
}
//+------------------------------------------------------------------+
Если у нас есть открытая позиция, советник отправит следующее сообщение в мессенджер:
Скачать пример кода можно по ссылке:
www.opentraders.ru/downloads/2863/
Комментарии (8)
24 ShamanHand Сообщений: 1092 - Наношу добро, причиняю пользу.
23 poker Сообщений: 852
6 rus008 Сообщений: 46
35 AM2 Автор Сообщений: 16418 - Андрей
27 Oxy Сообщений: 3430 - ..ιllιlι.lι.ιllι.ιlι..
35 AM2 Автор Сообщений: 16418 - Андрей
17 vis Сообщений: 200 - ♫♪♫♪
4 Roberto001 Сообщений: 26 - Robert001
Зарегистрируйтесь или авторизуйтесь, чтобы оставить комментарий