К основному содержимому

Signal боты: Формат JSON для типа оповещения – TradingView Стратегия

ВАЖНО

  • Никогда не делитесь JSON сообщением вашего Signal бота. Если вы случайно поделились им, удалите бота и создайте нового.

  • Не изменяйте JSON файл, добавляя дополнительные параметры или код, которые не указаны в этой статье. Изменения могут привести к ошибкам обработки сигналов.

  • Значения, заключенные в двойные фигурные скобки, являются плейсхолдерами TradingView. Для Signal бота с типом TradingView Стратегия, в сообщениях стратегии используются только плейсхолдеры "strategy".

{
"secret": "token",
"max_lag": "300",
"timestamp": "{{timenow}}",
"trigger_price": "{{close}}",
"tv_exchange": "{{exchange}}",
"tv_instrument": "{{ticker}}",
"action": "{{strategy.order.action}}",
"bot_uuid": "signal-bot-uuid",
"strategy_info": {
"market_position": "{{strategy.market_position}}",
"market_position_size": "{{strategy.market_position_size}}",
"prev_market_position": "{{strategy.prev_market_position}}",
"prev_market_position_size": "{{strategy.prev_market_position_size}}"
},
"order": {
"amount": "{{strategy.order.contracts}}",
"currency_type": "base"
}
}

Описание полей

Важно отметить, что если получен сигнал, содержащий параметры, не описанные в данной статье, эти параметры не будут учитываться при обработке сигнала.

secret” — обязательное поле. Это уникальный токен для определения входящих запросов в рамках конкретного бота и пользователя. Токен генерируется автоматически при создании Signal бота.

Важное примечание: Не делитесь публично этим параметром!


timestamp” — необязательное поле. Представляет отметку времени, когда был сгенерирован сигнал.

Отметка времени может использоваться для синхронизации данных, анализа временных трендов и понимания временной последовательности событий.

Время срабатывания сигнала принимается в формате ISO8601.

Значения {{timenow}} поступают в это поле из TradingView.


"max_lag" — необязательное поле. Определяет максимальную задержку, которая может возникнуть при выполнении вашей стратегии.

Задержки могут возникать по различным причинам. Проверка выполняется ДО того, как бот попытается разместить ордер.

Указание максимальной задержки может быть полезным для оценки эффективности вашей стратегии и управления временными аспектами торговли. Если задержка превышает этот порог, это может сигнализировать о проблемах в торговой стратегии или её исполнении, которые необходимо проверить и, возможно, устранить.

Максимально допустимая задержка: целое число от 10 до 86400.

Значение по умолчанию: 300. Измеряется в секундах.

Значение "max_lag" рассчитывается путем сравнения времени отправки сигнала "timestamp" и момента, когда бот впервые обработал этот сигнал. Если в JSON сообщении указано "max_lag": "300", это означает, что допустимая задержка составляет 300 секунд или 5 минут. Если значение задержки превышает указанный лимит, сигнал может считаться недействительным или будет обработан с ошибкой.


"trigger_price" - необязательное поле. Представляет цену, при которой условие сработало.

Это может быть цена актива, достигшего определенного ценового уровня, пересечение скользящей средней, достижение уровня поддержки или сопротивления.

Информация о цене срабатывания важна для понимания того, какие события или условия вызывают срабатывание сигналов и какие действия можно предпринять при их срабатывании.

Значения {{close}} поступают из TradingView.


"tv_exchange" — обязательное поле, представляющее информацию о бирже, к которой относится сигнал или данные.

Это поле указывает на биржу, откуда были получены данные.

Например, значение "tv_exchange" может быть BINANCE, OKX, BYBIT и так далее, в зависимости от того, откуда поступают данные.

Эта информация важна для идентификации и отслеживания источника данных, а также может использоваться для анализа данных с конкретных бирж.

Значения {{exchange}} поступают из TradingView.


tv_instrument" — обязательное поле. Представляет актив, связанный с сигналом.

Это поле указывает на конкретный финансовый инструмент, такой как фьючерсный контракт или валютная пара, для которого были получены данные.

Например, для пары BTC/USDT на Binance Futures perpetual: "BTCUSDT.P" и т. д.

Эта информация важна для идентификации торгуемого актива и анализа его торговой активности и характеристик.

Значения {{ticker}} поступают из TradingView.


"action" — обязательное поле. Представляет действие, которое должно быть выполнено в ответ на полученный сигнал.

Примеры значений "action":

  1. "buy" — Купить актив или открыть лонг позицию.

  2. "sell" — продать актив или выйти из текущей позиции.

Значение {{strategy.order.action}} поступают в это поле из TradingView.

Обратите внимание:

Если стратегия была запущена раньше, чем Signal bot, и вход в позицию или выход из позиции уже был выполнен в рамках этой стратегии, может возникнуть временная рассинхронизация со стратегией. Например, ордер, который был исполнен на графике TradingView, не может быть исполнен Signal ботом на стороне 3Commas.

Таблица поведения бота при получении сигнала на разных этапах стратегии:

  • strategy.order.action (поле "action") — в JSON сообщении, полученном из TradingView, представляет информацию о действии, выполненном вашей стратегией. Это может быть одно из следующих значений:

    • "buy" — указывает, что ваша стратегия принимает решение купить актив.

    • "sell" — указывает, что ваша стратегия принимает решение продать актив.

    • "close" — указывает, что ваша стратегия принимает решение закрыть текущую позицию (либо купленную, либо проданную).

    Эти значения позволяют понять, какие действия выполняются в вашей стратегии на основе данных, полученных из TradingView.

  • strategy.market_position (поле "market_position") — указывает текущую позицию, которой управляет ваша стратегия. Это значение может быть разным в зависимости от того, какая позиция открыта:

    • "long" — означает, что ваша стратегия в данный момент управляет лонг позицией;

    • "short" — означает, что ваша стратегия в данный момент управляет шорт позицией;

    • "flat" — означает, что ваша стратегия в данный момент не управляет никакими открытыми позициями, то есть у вас нет ни лонг, ни шорт позиций.

    Эта информация важна для отслеживания текущего состояния вашей стратегии и принятия решений о дальнейших действиях на основе текущей позиции.

  • strategy.prev_market_position (поле "prev_market_position") — указывает предыдущую позицию, которой управляла ваша стратегия. Это значение отображает состояние позиции до выполнения последнего действия в вашей стратегии. Примеры значений:

    • "long" — означает, что в предыдущем состоянии стратегия управляла лонг позицией;

    • "short" — означает, что в предыдущем состоянии стратегия управляла шорт позицией;

    • "flat" — означает, что в предыдущем состоянии стратегия не управляла никакими позициями.

    Эта информация полезна для отслеживания изменений позиций и анализа того, как стратегия принимает решения о входе и выходе из позиций в различных рыночных условиях.

Пример отправленного сигнала:

В зависимости от того, какие команды содержатся в сообщении, бот выполнит соответствующие действия:

Невозможные комбинации приведут к тому, что Signal bot отобразит ошибку и переведет сигнал в статус “Ошибка”.

Пользователи могут просматривать такие неудачные сигналы в таблице сигналов.

Ниже приведены некоторые примеры комбинаций, которые приведут к тому, что сигнал будет обработан с ошибкой:


"bot_uuid" — обязательное поле. Уникальный идентификатор Signal бота в 3Commas.

Важное примечание: Не делитесь публично этим параметром!


market_position” — обязательное поле. Указывает текущую позицию. Может принимать одно из следующих значений:

  • "long": означает, что у вас открыта лонг позиция, то есть вы держите актив в ожидании его роста.

  • "short": означает, что у вас открыта шорт позиция, то есть вы продали актив в ожидании его снижения.

  • "flat": означает, что у вас нет открытых позиций, то есть у вас нет ни лонг, ни шорт позиций.

Эта информация полезна для понимания текущей рыночной ситуации и принятия соответствующих решений, таких как открытие новых позиций, закрытие существующих или изменение стратегии в зависимости от рыночных условий.

Значения {{strategy.market_position}} поступают из TradingView.


market_position_size” — обязательное поле. Представляет размер текущей позиции. Это число указывает количество актива, которое в данный момент находятся в открытой позиции.

Эта информация важна для оценки размера ваших позиций на рынке и управления рисками, поскольку размер позиции напрямую влияет на потенциальные убытки или прибыль.

Значения {{strategy.market_position_size}} поступают из TradingView.


prev_market_position” — обязательное поле. Представляет информацию о предыдущей позиции. Указывает состояние позиции до выполнения последнего действия в вашей торговой стратегии.

Значение "prev_market_position" может быть одним из следующих:

  • "long": означает, что до последнего действия стратегия управляла лонг позицией.

  • "short": означает, что до последнего действия стратегия управляла шорт позицией.

  • "flat": означает, что до последнего действия стратегия не управляла никакими открытыми позициями, то есть не было ни лонг, ни шорт позиций.

Эта информация полезна для анализа изменений рыночных позиций и понимания того, как стратегия принимает решения о входе и выходе из позиций в различных рыночных условиях.

Данные {{strategy.prev_market_position}} поступают в это поле из TradingView.


prev_market_position_size” — обязательное поле. Представляет размер предыдущей позиции. Указывает количество активов, которые находились в открытой позиции до выполнения последнего действия в вашей стратегии.

Эта информация полезна для анализа изменений размера рыночных позиций и понимания того, как стратегия управляет торговым объемом в различных сценариях.

Значения {{strategy.prev_market_position_size}} поступают из TradingView.


order.amount” — обязательное поле. Представляет количество активов, которые необходимо купить или продать при получении сигнала.

Значения {{strategy.order.contracts}} поступают из TradingView.


order.currency_type” — обязательное поле. Указывает единицу измерения, в которой определяется размер ордера.

Значение "order.currency_type" должно быть:

  • "base" — размер ордера передается в базовой валюте (например, BTC, ETH, XRP). Это валюта, в которой бот покупает актив.

Примечание:

Сигнал всегда должен использовать "base". Однако вы можете задать размер ордера в USDT в разделе Свойства стратегии. 3Commas автоматически конвертирует это значение из USDT в базовую при генерации сигнала. Эта конвертация может привести к незначительному отклонению из-за округления цены, но это не повлияет на исполнение сигнала.


Дополнительные поля

"enable"/"disable"

Это действие активирует Signal бота:

{
...
"action": "enable",
...
}

Это действие остановит Signal бота:

{
...
"action": "disable",
...
}

Примеры использования

Остановить всех активных Signal ботов на вашем аккаунте 3Commas

{
"secret": "xxxxxxxxx.xxxxxxxxxxx.xxxxxxxxxxx",
"max_lag": "300",
"timestamp": "{{timenow}}",
"action": "disable"
}

Остановить всех активных Signal ботов конкретной биржи

Вам нужно знать ID подключенного аккаунта (биржи) — на странице Мое портфолио найдите нужную биржу, нажмите на меню из 3 точек, выберите Просмотр, и вы увидите ID в адресной строке браузера:

Чтобы добавить более одного аккаунта, необходимо поместить их в квадратные скобки и разделить запятой:

{
"secret": "xxxxxxxxx.xxxxxxxxxxx.xxxxxxxxxxx",
"max_lag": "300",
"timestamp": "{{timenow}}",
"action": "disable",
"account_ids": [3345345, 3345347]
}

Остановить одного или нескольких конкретных ботов

Вам нужно знать UUID этих ботов. Наведите курсор на кнопку ⓘ рядом с ботом, и вы увидите его UUID. Если вы хотите добавить несколько ботов, вы можете записать UUID в кавычках внутри квадратных скобок и разделить их запятой:

{
"secret": "xxxxxxxxx.xxxxxxxxxxx.xxxxxxxxxxx",
"max_lag": "300",
"timestamp": "{{timenow}}",
"action": "disable",
"bot_uuid": ["xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxx", "xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxx"]
}

Остановить всех активных Signal ботов с Лонг стратегией

{
"secret": "xxxxxxxxx.xxxxxxxxxxx.xxxxxxxxxxx",
"max_lag": "300",
"timestamp": "{{timenow}}",
"action": "disable",
"scopes": ["long", "real"]
}

Остановить Signal ботов и закрыть их активные позиции

{
...
"action": "disable",
"positions_sub_action": "market_close"
...
}

Если вы хотите закрыть позицию по рыночной цене, необходимо добавить строку:

"positions_sub_action": "market_close"

Пример:

{
"secret": "xxxxxxxxx.xxxxxxxxxxx.xxxxxxxxxxx",
"max_lag": "300",
"timestamp": "{{timenow}}",
"action": "disable",
"positions_sub_action": "market_close"
}

Если вы хотите отменить позицию и управлять вручную позже, необходимо добавить строку:

"positions_sub_action": "cancel"

Пример:

{
"secret": "xxxxxxxxx.xxxxxxxxxxx.xxxxxxxxxxx",
"max_lag": "300",
"timestamp": "{{timenow}}",
"action": "disable",
"positions_sub_action": "cancel"
}

Примечания

  • Для ботов с типом “Пользовательский сигнал”, сигнал на отключение Лонг или Шорт позиции также отменит и другую позицию.

  • Если вы хотите отключать отдельно Лонг или Шорт ботов, необходимо создать два отдельных бота — один со стратегией Лонг и один со стратегией Шорт.

  • Разные параметры могут быть объединены и будут работать по логике “И”. Если все параметры соответствуют условиям, сигнал будет принят и обработан. Сигнал будет отклонен, если хотя бы один параметр не выполнен.
    Пример:

{
"secret": "xxxxxxxxx.xxxxxxxxxxx.xxxxxxxxxxx",
"max_lag": "300",
"timestamp": "{{timenow}}",
"action": "disable",
"scopes": ["long", "real"],
"account_ids": [1, 2, 3]
}
Нашли ответ на свой вопрос?