alertcondition() в Pine Script и настройка вебхука в TradingView с кастомным JSON-сообщением, содержащим плейсхолдер {{chart.link}}.Введение
Автоматизация уведомлений о торговых событиях — ключевой элемент эффективного трейдинга и количественной разработки. Pine Script v5, язык программирования TradingView, предоставляет мощные инструменты для создания индикаторов и стратегий, а также для генерации алертов. Интеграция этих алертов с внешними сервисами, такими как Discord, позволяет получать мгновенные уведомления, не отвлекаясь от других задач.
В этой статье мы рассмотрим, как настроить Pine Script v5 для отправки алертов в Discord через вебхук, включая ссылки на графики TradingView. Это позволит вам не только получать текстовые уведомления, но и быстро переходить к визуальному анализу ситуации на рынке.
Исходный код
Представленный ниже скрипт Pine Script v5 демонстрирует простую стратегию на основе скользящей средней (MA) и генерирует алерты при пересечении цены с MA. Эти алерты будут использоваться для отправки сообщений в Discord.
//@version=5
strategy("MA Crossover Discord Alert", overlay=true,
pyramiding=0, initial_capital=10000, currency=currency.USD,
default_qty_type=strategy.percent_of_equity, default_qty_value=10,
commission_type=strategy.commission.percent, commission_value=0.1)
// --- Входные параметры ---
maLength = input.int(20, "Длина MA", minval=1, group="Настройки стратегии")
// --- Расчеты ---
ma = ta.sma(close, maLength)
// --- Построение графика ---
plot(ma, "MA", color.blue, linewidth=2)
// --- Логика стратегии (простое пересечение MA) ---
longCondition = ta.crossover(close, ma)
shortCondition = ta.crossunder(close, ma)
if longCondition
strategy.entry("Long", strategy.long)
if shortCondition
strategy.entry("Short", strategy.short)
// --- Условия для алертов ---
// alertcondition используется для определения условий, при которых TradingView должен сгенерировать алерт.
// Сообщение здесь будет доступно в TradingView как {{alert.message}}.
alertcondition(longCondition, "Покупка MA", "Новый сигнал на ПОКУПКУ: {{ticker}} ({{interval}}) @ {{close}}")
alertcondition(shortCondition, "Продажа MA", "Новый сигнал на ПРОДАЖУ: {{ticker}} ({{interval}}) @ {{close}}")
// Примечание: В этом скрипте мы используем alertcondition(), а не alert().
// Это позволяет нам настроить сложное JSON-сообщение для Discord непосредственно в настройках алерта TradingView,
// используя встроенные плейсхолдеры TradingView, такие как {{chart.link}} и {{alert.message}}.
// Если вам нужно интегрировать Open Interest, как в статье Интеграция Open Interest из Binance Futures в Pine Script v5 через request.seed,
// вы можете добавить соответствующие данные в сообщение алерта, используя строковые переменные.
Разбор параметров
maLength: Целочисленный параметр, определяющий период скользящей средней. Чем больше значение, тем более сглаженной будет MA и тем меньше ложных сигналов она будет давать.longCondition: Булево условие, которое становитсяtrue, когда цена закрытия пересекает MA снизу вверх, сигнализируя о потенциальной возможности для покупки.shortCondition: Булево условие, которое становитсяtrue, когда цена закрытия пересекает MA сверху вниз, сигнализируя о потенциальной возможности для продажи.alertcondition(): Встроенная функция Pine Script, которая определяет условие для срабатывания алерта и базовое текстовое сообщение. Это сообщение будет доступно в настройках алерта TradingView как плейсхолдер{{alert.message}}.
Как запустить
Для успешной интеграции Pine Script v5 с Discord и отправки графиков, вам потребуется выполнить несколько шагов:
Шаг 1: Создание Discord Webhook
- Откройте ваш сервер Discord и перейдите в настройки канала, куда вы хотите получать алерты.
- Выберите ‘Интеграции’ (Integrations) -> ‘Вебхуки’ (Webhooks) -> ‘Новый вебхук’ (New Webhook).
- Дайте вебхуку имя (например, ‘TradingView Alerts’), выберите канал и, при желании, загрузите аватар.
- Скопируйте ‘URL вебхука’ (Webhook URL). Он будет выглядеть примерно так:
https://discord.com/api/webhooks/123456789012345678/abcdefghijklmnopqrstuvwxyz.... Сохраните его, он понадобится на следующем шаге.
Шаг 2: Добавление Pine Script на график TradingView
- Откройте TradingView и выберите нужный торговый инструмент и таймфрейм.
- Откройте Pine Editor (в нижней части экрана TradingView).
- Вставьте предоставленный выше код Pine Script в редактор.
- Нажмите ‘Добавить на график’ (Add to Chart).
Шаг 3: Настройка алерта в TradingView
Это самый важный шаг, где мы связываем Pine Script с Discord и настраиваем отправку графика.
- На графике TradingView нажмите кнопку ‘Алерт’ (Alert) (значок часов) или кликните правой кнопкой мыши на графике и выберите ‘Добавить алерт’.
- В окне ‘Создать алерт’ (Create Alert) настройте следующие параметры:
- Условие (Condition): Выберите ваш скрипт (
MA Crossover Discord Alert) и затем выберите одно из условий, определенных вalertcondition()(например,Покупка MAилиПродажа MA). - Частота (Frequency): Выберите ‘Один раз за бар’ (Once Per Bar) или ‘Один раз за бар при закрытии’ (Once Per Bar Close) для стратегий.
- Действия (Actions): Установите флажок ‘Webhook URL’.
- Webhook URL: Вставьте URL вебхука Discord, который вы скопировали на Шаге 1.
- Сообщение (Message): Здесь мы создаем JSON-сообщение, которое Discord будет отображать. Используйте следующий шаблон. Этот шаблон включает в себя ссылку на график TradingView (
{{chart.link}}), которую Discord попытается отобразить как превью или встроить.
- Условие (Condition): Выберите ваш скрипт (
Шаблон JSON-сообщения для Discord:
{
"username": "TradingView Bot",
"avatar_url": "https://www.tradingview.com/static/images/favicon.ico",
"embeds": [
{
"title": "Новый сигнал от Pine Script: {{strategy.order.action}}",
"description": "**Инструмент:** {{ticker}}\n**Таймфрейм:** {{interval}}\n**Цена:** {{close}}\n**Действие:** {{strategy.order.action}}",
"url": "{{chart.link}}",
"color": 3447003,
"fields": [
{
"name": "Сообщение алерта",
"value": "{{alert.message}}",
"inline": false
}
],
"image": {
"url": "{{chart.link}}"
},
"footer": {
"text": "Powered by FinFluct & TradingView",
"icon_url": "https://finfluct.com/favicon.ico"
},
"timestamp": "{{timenow}}"
}
]
}
Важные плейсхолдеры TradingView:
{{ticker}}: Символ инструмента (например,BTCUSD).{{interval}}: Таймфрейм графика (например,60для 1 часа).{{close}},{{open}},{{high}},{{low}}: Соответствующие цены бара.{{strategy.order.action}}: Действие стратегии (например,buyилиsell).{{alert.message}}: Сообщение, указанное в функцииalertcondition()вашего Pine Script.{{chart.link}}: Ссылка на текущий график TradingView. Discord обычно отображает превью этой ссылки, что позволяет быстро увидеть ситуацию на графике.{{timenow}}: Текущее время срабатывания алерта в формате ISO 8601.
Шаг 4: Запуск алерта
Нажмите ‘Создать’ (Create) в окне алерта TradingView. Теперь, когда условия, определенные в вашем Pine Script, будут выполнены, TradingView отправит JSON-сообщение на ваш Discord webhook, и вы получите уведомление с подробной информацией и ссылкой на график.
Отправка прямых изображений графиков (Продвинуто)
Хотя {{chart.link}} позволяет Discord отображать превью графика, это не всегда прямое изображение. Если вам требуется отправлять именно прямые изображения графиков (например, с кастомными аннотациями, которые не отображаются в стандартном {{chart.link}}), то потребуется промежуточный сервис. Этот сервис будет:
- Получать алерт от TradingView (который может содержать данные или ссылку на график).
- Использовать headless-браузер (например, Puppeteer или Playwright) для создания скриншота графика TradingView или генерировать график с нуля (например, с помощью
matplotlib, если у вас есть доступ к историческим данным). - Загружать полученное изображение на хостинг (например, Imgur, AWS S3) и получать прямую ссылку на изображение.
- Отправлять новое JSON-сообщение в Discord, используя эту прямую ссылку в поле
image.url.
Такой подход требует написания собственного бэкенд-сервиса, что выходит за рамки возможностей чистого Pine Script. Однако, для большинства задач, отправка ссылки {{chart.link}} с превью в Discord является достаточным и гораздо более простым решением.
Для более глубокого понимания работы с данными и стратегиями в Pine Script, рекомендуем ознакомиться с нашими статьями, такими как Скрипт Pine Script v5: Поиск скрытой медвежьей дивергенции по RSI с request.security или Бэктест стратегии на ренко-графиках в Pine Script v5 без перерисовки.
Заключение
Интеграция Pine Script v5 с Discord через вебхуки — это мощный инструмент для автоматизации уведомлений о торговых алертах. Следуя этой инструкции, вы сможете настроить свою систему для получения своевременных и информативных сообщений, включая ссылки на графики, что значительно улучшит ваш торговый процесс и позволит быстрее реагировать на рыночные изменения.




