Сигналы из могут приходить в Telegram мгновенно – это позволяет трейдеру не сидеть постоянно перед графиком. В этой статье мы разберём три способа интеграции, а главный упор сделаем на собственный PHP‑скрипт с поддержкой логирования и гибкой обработки любых входящих данных. Вы получите готовый код, который останется только скопировать и настроить.
Подготовительные шаги
1. Создайте Telegram‑бота
- Напишите @BotFather в Telegram.
- Отправьте команду
/newbotи придумайте имя (например,My Trading Bot) и username (обязательно заканчивается наbot, напримерmy_trading_bot). - Скопируйте полученный токен – он выглядит так:
1234567890:ABCdefGHIjklmNOPqrstUVwxyz.
2. Получите ID чата или канала
Для личного чата:
Напишите боту любое сообщение, затем перейдите по ссылке в браузере:https://api.telegram.org/bot<ВАШ_ТОКЕН>/getUpdates
В ответе найдите "chat":{"id":123456789} – это ваш ID.
Для канала или группы:
Добавьте бота в администраторы, затем используйте тот же метод getUpdates. ID канала обычно отрицательный: -1001234567890. Можно также использовать @username_канала (но числовой ID надёжнее).
3. Убедитесь, что у вас есть хостинг с PHP
Для второго способа (самого гибкого) потребуется веб‑сервер с поддержкой PHP и функцией cURL. Подойдёт любой недорогой хостинг или .
Способ 1. Прямой вебхук в Telegram Bot API (без программирования)
Самый быстрый способ – отправить данные из напрямую в API Telegram.
- В настройках алерта в поле Webhook URL укажите:
https://api.telegram.org/bot<ВАШ_ТОКЕН>/sendMessage - В поле Message вставьте JSON, например:
{"chat_id": "-1001234567890", "text": "🚨 Сигнал! {{ticker}} по цене {{close}}"} Плюсы: не нужен свой сервер.
Минусы: нельзя обработать ошибки, нет логирования, ограничение на длину сообщения 4096 символов.
Способ 2. Собственный PHP‑обработчик на хостинге (рекомендуемый)
Этот способ даёт полный контроль: вы можете логировать все входящие сигналы, преобразовывать данные, отправлять в несколько чатов и т.д. Ниже приведён готовый PHP‑скрипт, который принимает любые данные (JSON или обычный текст) и отправляет их в Telegram.
2.1. Создайте файл tradingview-hook.php
Скопируйте следующий код и сохраните его в файл с расширением .php:
TELEGRAM_CHAT_ID,
'text' => $text,
'parse_mode' => 'HTML', // или 'Markdown' при необходимости
'disable_web_page_preview' => true
];
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($postData));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
$response = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
$error = curl_error($ch);
curl_close($ch);
if ($error) {
writeLog("Ошибка cURL при отправке в Telegram", $error);
return false;
}
if ($httpCode !== 200) {
writeLog("Telegram вернул HTTP $httpCode", $response);
return false;
}
$decoded = json_decode($response, true);
if (isset($decoded['ok']) && $decoded['ok'] === true) {
writeLog("Сообщение успешно отправлено в Telegram");
return true;
} else {
writeLog("Ошибка Telegram API", $response);
return false;
}
}
// ========== ОСНОВНАЯ ЛОГИКА ==========
if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
writeLog("Неверный метод запроса", $_SERVER['REQUEST_METHOD']);
http_response_code(405);
exit('Method Not Allowed');
}
$rawInput = file_get_contents('php://input');
writeLog("Получены сырые данные", $rawInput);
// Пробуем декодировать JSON
$data = json_decode($rawInput, true);
$isJson = (json_last_error() === JSON_ERROR_NONE);
if (!$isJson) {
// === НЕ JSON: отправляем исходный текст как есть ===
writeLog("Входящие данные не являются валидным JSON", json_last_error_msg());
$telegramText = $rawInput; // просто текст
if (trim($rawInput) === '') {
$telegramText = "⚠️ Получен пустой или невалидный запрос от TradingView";
}
$result = sendToTelegram($telegramText);
} else {
// === JSON: обрабатываем и отправляем красиво ===
writeLog("Данные успешно декодированы как JSON", $data);
$telegramText = "📊 *TradingView Webhook*\n```json\n" . json_encode($data, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE) . "\n```";
$result = sendToTelegram($telegramText);
}
// Всегда отвечаем 200, чтобы TradingView не повторял отправку
if ($result) {
echo 'OK';
} else {
echo 'Message queued but send failed';
}
http_response_code(200); Нужно индивидуальное решение? Напишите программисту.
2.2. Настройте скрипт под себя
- Замените
ВАШ_ТОКЕН_БОТАна токен, полученный от BotFather. - Замените
@ваш_канал_или_idна числовой ID чата (например,-1001234567890) или на username канала с@. - Выберите режим логирования:
define('ENABLE_LOGGING', true);– все входящие сигналы будут записываться в файлtradingview_hook.log(полезно для отладки).- После проверки работы можно установить
false, чтобы не засорять диск.
- Права на файл лога:
Убедитесь, что скрипт может создавать и записывать файл в той же директории. Если файл не создаётся, вручную создайтеtradingview_hook.logи дайте права666(или777на время отладки).
2.3. Загрузите скрипт на хостинг
- Назовите файл, например
tradingview-hook.php. - Загрузите его в корневую папку вашего сайта через FTP или файловый менеджер хостинга.
- Убедитесь, что скрипт доступен по HTTPS (TradingView требует защищённое соединение). Например:
https://ваш-сайт.ru/tradingview-hook.php
2.4. Настройте алерт в TradingView
- Откройте нужный график и создайте новый алерт (кнопка «Сигнал» или правой кнопкой мыши).
- В поле Webhook URL вставьте полный URL вашего скрипта:
https://ваш-сайт.ru/tradingview-hook.php - В поле Message укажите, какие данные хотите передавать. Это может быть:
- JSON (рекомендуется для структурированных данных). Пример:
json { "symbol": "{{ticker}}", "price": "{{close}}", "action": "{{strategy.order.action}}", "time": "{{timenow}}" } - Обычный текст (если нужно просто отправить строку). Пример:
Сработал сигнал по {{ticker}}! Цена: {{close}}
- Нажмите Создать.
2.5. Проверка и отладка
После срабатывания алерта:
- Зайдите в файл
tradingview_hook.logна сервере. Вы увидите записи вида:
[2025-03-20 15:30:01] Получены сырые данные: {"symbol":"BTCUSD","price":"67234","action":"buy"}
[2025-03-20 15:30:01] Данные успешно декодированы как JSON: ...
[2025-03-20 15:30:01] Сообщение успешно отправлено в Telegram - Если данные не являются JSON, в лог попадёт соответствующее предупреждение, а в Telegram уйдёт исходный текст.
- Если сообщение не приходит в Telegram, проверьте, добавлен ли бот в канал/чат и есть ли у него права на отправку сообщений.
Способ 3. Готовые сервисы-посредники (Pabbly, Zapier)
Если у вас нет своего сервера, а прямой вебхук кажется слишком простым, можно использовать конструкторы автоматизации:
- Pabbly Connect – позволяет создать вебхук, который будет принимать данные от TradingView и перенаправлять их в Telegram после небольшой обработки.
- Make (Integromat) – аналогично.
Алгоритм:
- Регистрируетесь в сервисе.
- Создаёте сценарий: триггер – Webhook, действие – Send Message (Telegram).
- Копируете сгенерированный Webhook URL и вставляете его в TradingView.
- В поле Message указываете нужные данные (JSON или обычный текст).
Сервисы платные после исчерпания бесплатного лимита, но подходят для невысокой частоты сигналов.
Часто задаваемые вопросы (FAQ)
Почему сообщения не приходят?
- Проверьте логи вашего PHP-скрипта – в файле
tradingview_hook.logвидно, что именно приходит от TradingView и была ли ошибка при отправке в Telegram. - Убедитесь, что бот имеет права администратора в канале/группе.
- Проверьте настройки алерта – правильный ли URL, не заблокирован ли хостингом IP-адрес TradingView.
- Включите двухфакторную аутентификацию в TradingView – иногда без неё вебхуки блокируются.
- Добавьте IP-адреса TradingView в белый список вашего хостинга (если используется файрвол):
- 52.89.214.238
- 34.212.75.30
- 54.218.53.128
- 52.32.178.7
Как отключить логирование в готовом скрипте?
Просто измените в начале файла:
define('ENABLE_LOGGING', false); После этого файл лога создаваться не будет.
Могу ли я отправлять не весь JSON, а отформатированное сообщение?
Да! Внутри скрипта замените формирование $telegramText для JSON на своё сообщение. Например:
$telegramText = "🔔 Новый сигнал!\nСимвол: {$data['symbol']}\nЦена: {$data['price']}"; Главное, чтобы в TradingView в поле Message были переданы соответствующие ключи (symbol, price). Для обычного текста вы можете просто оставить $telegramText = $rawInput; или обработать его как угодно.
Что делать, если TradingView отправляет не JSON, а обычный текст?
Скрипт уже умеет обрабатывать такой случай: он отправит исходную строку в Telegram как есть. Вы также можете доработать блок if (!$isJson) для кастомного форматирования обычного текста.
Безопасно ли оставлять токен бота в коде?
Если ваш скрипт лежит на сервере с открытым доступом, злоумышленник может прочитать его и угнать бота. Рекомендуется:
- Вынести токен в отдельный файл за пределами
public_html. - Использовать переменные окружения (например, через
.env).
Для учебных целей и небольших проектов допустимо хранить токен прямо в скрипте, но убедитесь, что файл .php не отдаётся как обычный текст (на стандартном хостинге PHP обрабатывается, и исходный код не виден).
Заключение
Вы увидели три способа интеграции TradingView с Telegram. Самый надёжный и гибкий – через собственный PHP-скрипт, полный код которого мы разобрали. Главное улучшение последней версии – скрипт теперь принимает любые данные: JSON (отправляет красиво оформленным блоком) или обычный текст (отправляет как есть). Логирование поможет быстро отладить любые проблемы, а при желании вы легко доработаете скрипт под свои нужды – добавите фильтрацию сигналов, форматирование, отправку картинок и т.д.
Если у вас остались вопросы по настройке – пишите, помогу разобраться. Удачной торговли!


Добавить комментарий
Для отправки комментария вам необходимо авторизоваться.