Интеграция Pine Script v5 с 3Commas: Кастомные JSON Сигналы для DCA Бота

Интеграция Pine Script v5 с 3Commas: Кастомные JSON Сигналы для DCA Бота Pine Script
Подробное руководство по настройке Pine Script v5 для отправки кастомных JSON сигналов на 3Commas, позволяющих автоматически запускать и управлять DCA ботами.
Суть: Интеграция Pine Script v5 с 3Commas осуществляется через механизм вебхуков TradingView. Pine Script генерирует кастомный JSON-объект, содержащий параметры для запуска новой сделки на DCA боте 3Commas (например, pair, base_order_volume, take_profit), и отправляет его на уникальный URL вебхука, предоставленный 3Commas.

Исходный код

Представленный ниже Pine Script код демонстрирует, как создать индикатор, который при выполнении заданных условий генерирует JSON-сигнал и отправляет его на вебхук 3Commas. Этот сигнал может быть использован для запуска новой сделки (deal) на существующем DCA боте с настраиваемыми параметрами. В качестве примера условия используется простое пересечение скользящих средних, но вы можете заменить его на любую другую логику, например, на основе Мульти-таймфреймного FVG или других индикаторов.


//@version=5
indicator('3Commas DCA Bot Signal', '3C DCA Signal', overlay=true)

// --- Настройки 3Commas Webhook ---
// ВНИМАНИЕ: Замените 'YOUR_BOT_ID', 'YOUR_API_KEY', 'YOUR_SECRET_KEY' на свои данные.
// Этот URL можно найти в настройках вашего DCA бота на 3Commas, в разделе "Connect a custom signal".
string webhookUrl = input.string('https://api.3commas.io/public/api/v2/bots/YOUR_BOT_ID/start_new_deal_by_signal?api_key=YOUR_API_KEY&secret=YOUR_SECRET_KEY', '3Commas Webhook URL', tooltip='Полный URL вебхука из настроек вашего DCA бота на 3Commas.')

string pair = input.string('USDT_BTC', 'Торговая пара', tooltip='Торговая пара для сделки (например, USDT_BTC).')
float baseOrderVolume = input.float(10.0, 'Объем базового ордера', tooltip='Объем базового ордера в валюте котировки (например, USDT).')
float takeProfit = input.float(1.0, 'Take Profit (%)', tooltip='Процент Take Profit для сделки.')
float safetyOrderVolume = input.float(10.0, 'Объем страховочного ордера', tooltip='Объем каждого страховочного ордера.')
int maxSafetyOrders = input.int(5, 'Макс. страховочных ордеров', tooltip='Максимальное количество страховочных ордеров.')
string strategyType = input.string('long', 'Тип стратегии', options=['long', 'short'], tooltip='Тип стратегии для сделки (long или short).')

// --- Условия для сигнала (пример: EMA crossover) ---
int fastLength = input.int(10, 'Быстрая EMA', minval=1)
int slowLength = input.int(20, 'Медленная EMA', minval=1)

float fastEma = ta.ema(close, fastLength)
float slowEma = ta.ema(close, slowLength)

plot(fastEma, 'Fast EMA', color=color.blue)
plot(slowEma, 'Slow EMA', color=color.red)

bool longCondition = ta.crossover(fastEma, slowEma)
bool shortCondition = ta.crossunder(fastEma, slowEma)

// --- Формирование JSON-сигнала ---
string jsonPayload = str.format(
  '{{' +
  '  "pair": "{0}",' +
  '  "base_order_volume": "{1}",' +
  '  "take_profit": "{2}",' +
  '  "safety_order_volume": "{3}",' +
  '  "max_safety_orders": {4},' +
  '  "strategy": "{5}"'
  '}}',
  pair,
  baseOrderVolume,
  takeProfit,
  safetyOrderVolume,
  maxSafetyOrders,
  strategyType
)

// --- Отправка сигнала через alert ---
if longCondition
    alert(jsonPayload, alert.webhook, webhookUrl)
    label.new(bar_index, high, 'LONG Signal', color=color.green, textcolor=color.white)

if shortCondition and strategyType == 'short' // Пример для шорт-сигнала, если стратегия позволяет
    alert(jsonPayload, alert.webhook, webhookUrl)
    label.new(bar_index, low, 'SHORT Signal', color=color.red, textcolor=color.white)

// --- Визуализация для отладки (необязательно) ---
// table.new(position.top_right, 1, 1, bgcolor=color.rgb(0,0,0,50), border_width=1)
// table.cell(table_id, 0, 0, jsonPayload, text_size=size.small, text_color=color.white)

Разбор параметров

  • webhookUrl: Полный URL вебхука, который вы получите из настроек вашего DCA бота на 3Commas. Он должен содержать bot_id, api_key и secret.
  • pair: Торговая пара, для которой будет открыта сделка (например, USDT_BTC).
  • baseOrderVolume: Объем базового ордера в валюте котировки (например, в USDT). Для динамического расчета объема позиции вы можете ознакомиться со статьей Динамический Размер Позиции в Pine Script v5: Расчет % от Капитала.
  • takeProfit: Процент Take Profit для сделки.
  • safetyOrderVolume: Объем каждого страховочного ордера.
  • maxSafetyOrders: Максимальное количество страховочных ордеров, которое бот может использовать в сделке.
  • strategyType: Тип стратегии для сделки: long (покупка) или short (продажа).
  • fastLength: Период для быстрой скользящей средней (EMA).
  • slowLength: Период для медленной скользящей средней (EMA).

Как запустить

Чтобы успешно интегрировать Pine Script с 3Commas и запустить ваш DCA бот, следуйте этим шагам:

  1. Настройка DCA бота в 3Commas:

    • Убедитесь, что у вас есть активный DCA бот на 3Commas. Если нет, создайте его, выбрав нужную биржу, пару и основные настройки.

    • Перейдите в настройки вашего бота.

  2. Получение Webhook URL из 3Commas:

    • В настройках вашего DCA бота найдите раздел «Connect a custom signal» (или аналогичный).

    • Скопируйте полный URL, который будет выглядеть примерно так: https://api.3commas.io/public/api/v2/bots/YOUR_BOT_ID/start_new_deal_by_signal?api_key=YOUR_API_KEY&secret=YOUR_SECRET_KEY. Этот URL уже содержит ID вашего бота, а также ваш API ключ и секрет.

  3. Добавление скрипта в TradingView:

    • Откройте TradingView, перейдите в редактор Pine Script (Pine Editor).

    • Вставьте предоставленный выше код в редактор.

    • Нажмите «Добавить на график» (Add to Chart).

  4. Настройка параметров скрипта в TradingView:

    • На графике, где добавлен индикатор, откройте его настройки (иконка шестеренки).

    • В поле 3Commas Webhook URL вставьте URL, который вы скопировали из 3Commas на шаге 2.

    • Настройте остальные параметры (Торговая пара, Объем базового ордера, Take Profit (%) и т.д.) в соответствии с вашими предпочтениями и настройками бота на 3Commas.

    • Настройте параметры Быстрая EMA и Медленная EMA для вашего торгового условия.

  5. Создание алерта в TradingView:

    • Нажмите правой кнопкой мыши на график или используйте кнопку «Алерт» (Alert) на панели инструментов TradingView.

    • В окне создания алерта:

      • Условие: Выберите ваш индикатор (3Commas DCA Bot Signal) и установите условие Any alert() call.

      • Частота: Выберите Once Per Bar Close для получения сигнала после закрытия свечи.

      • Действия: Установите флажок Webhook URL.

      • Webhook URL: Оставьте это поле пустым, так как URL уже указан в вашем Pine Script коде и передается через функцию alert().

      • Сообщение: Вставьте {{alert.message}}. Это гарантирует, что TradingView отправит JSON-строку, сгенерированную вашим Pine Script, на 3Commas.

      • Нажмите «Создать» (Create).

    Теперь, когда условия, заданные в вашем Pine Script, будут выполнены, TradingView отправит кастомный JSON-сигнал на 3Commas, который запустит новую сделку на вашем DCA боте с указанными параметрами.


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