Pine Script v5 и Discord: Отправка графиков через Webhook при алертах

Pine Script v5 и Discord: Отправка графиков через Webhook при алертах Pine Script
Подробное руководство по интеграции Pine Script v5 с Discord через вебхуки для отправки уведомлений и ссылок на графики TradingView при срабатывании торговых алертов.
Суть: Интеграция Pine Script v5 с Discord webhook позволяет автоматически отправлять уведомления о торговых алертах, включая ссылки на текущие графики TradingView. Для этого используется функция 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

  1. Откройте ваш сервер Discord и перейдите в настройки канала, куда вы хотите получать алерты.
  2. Выберите ‘Интеграции’ (Integrations) -> ‘Вебхуки’ (Webhooks) -> ‘Новый вебхук’ (New Webhook).
  3. Дайте вебхуку имя (например, ‘TradingView Alerts’), выберите канал и, при желании, загрузите аватар.
  4. Скопируйте ‘URL вебхука’ (Webhook URL). Он будет выглядеть примерно так: https://discord.com/api/webhooks/123456789012345678/abcdefghijklmnopqrstuvwxyz.... Сохраните его, он понадобится на следующем шаге.

Шаг 2: Добавление Pine Script на график TradingView

  1. Откройте TradingView и выберите нужный торговый инструмент и таймфрейм.
  2. Откройте Pine Editor (в нижней части экрана TradingView).
  3. Вставьте предоставленный выше код Pine Script в редактор.
  4. Нажмите ‘Добавить на график’ (Add to Chart).

Шаг 3: Настройка алерта в TradingView

Это самый важный шаг, где мы связываем Pine Script с Discord и настраиваем отправку графика.

  1. На графике TradingView нажмите кнопку ‘Алерт’ (Alert) (значок часов) или кликните правой кнопкой мыши на графике и выберите ‘Добавить алерт’.
  2. В окне ‘Создать алерт’ (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 попытается отобразить как превью или встроить.

Шаблон 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}}), то потребуется промежуточный сервис. Этот сервис будет:

  1. Получать алерт от TradingView (который может содержать данные или ссылку на график).
  2. Использовать headless-браузер (например, Puppeteer или Playwright) для создания скриншота графика TradingView или генерировать график с нуля (например, с помощью matplotlib, если у вас есть доступ к историческим данным).
  3. Загружать полученное изображение на хостинг (например, Imgur, AWS S3) и получать прямую ссылку на изображение.
  4. Отправлять новое JSON-сообщение в Discord, используя эту прямую ссылку в поле image.url.

Такой подход требует написания собственного бэкенд-сервиса, что выходит за рамки возможностей чистого Pine Script. Однако, для большинства задач, отправка ссылки {{chart.link}} с превью в Discord является достаточным и гораздо более простым решением.

Для более глубокого понимания работы с данными и стратегиями в Pine Script, рекомендуем ознакомиться с нашими статьями, такими как Скрипт Pine Script v5: Поиск скрытой медвежьей дивергенции по RSI с request.security или Бэктест стратегии на ренко-графиках в Pine Script v5 без перерисовки.

Заключение

Интеграция Pine Script v5 с Discord через вебхуки — это мощный инструмент для автоматизации уведомлений о торговых алертах. Следуя этой инструкции, вы сможете настроить свою систему для получения своевременных и информативных сообщений, включая ссылки на графики, что значительно улучшит ваш торговый процесс и позволит быстрее реагировать на рыночные изменения.

Оцените статью
FinFluct