Формат Webhook Payload
Payload — это JSON-сообщение, которое TradingView отправляет на ваш webhook Amabit при срабатывании алерта. Формат различается для Strategy Mode и Signal Mode.
Payload для алерта стратегии
Для стратегий TradingView с использованием strategy.entry() и strategy.close():
{
"action": "{{strategy.order.action}}",
"symbol": "{{ticker}}",
"quantity": "{{strategy.order.contracts}}",
"price": "{{close}}",
"order_type": "market",
"order_id": "{{strategy.order.id}}",
"comment": "{{strategy.order.comment}}",
"reduce_only": false
}Payload для ручного сигнала
Для пользовательских индикаторов или ручных алертов:
{
"action": "buy",
"symbol": "BTCUSDT",
"quantity": 0.01,
"price": "{{close}}",
"order_type": "market",
"reduce_only": false
}Измените "action" на "sell" для сигналов продажи.
Справочник полей
| Поле | Обязательное | Значения | Описание |
|---|---|---|---|
action | Да | "buy", "sell" | Направление сделки. Также можно использовать side как альтернативное имя поля |
symbol | Да | например, "BTCUSDT" | Торговая пара в формате Binance. Префиксы биржи вида BINANCE:BTCUSDT автоматически удаляются |
quantity | Да* | Число | Объём сделки в базовой валюте. *Не обязательно, если webhook использует размер лота "% of Balance" |
price | Нет | Число или "{{close}}" | Цена для лимитных ордеров. Также используется как цена входа для расчёта TP/SL в Signal Mode |
order_type | Нет | "market", "limit" | По умолчанию используется тип ордера, настроенный в webhook, если не указан |
order_id | Нет | Строка | Опциональный идентификатор — записывается для отслеживания |
comment | Нет | Строка | Опциональный комментарий — сохраняется в журнале исполнения |
reduce_only | Нет | true, false | Если true, только уменьшает существующую позицию (никогда не открывает новую). Только для фьючерсов |
position_side | Нет | "LONG", "SHORT" | Переопределяет сторону позиции webhook по умолчанию. Только для Hedge Mode фьючерсов |
Плейсхолдеры TradingView
TradingView заменяет эти плейсхолдеры реальными значениями в момент срабатывания алерта:
| Плейсхолдер | Значение |
|---|---|
{{strategy.order.action}} | "buy" или "sell" |
{{strategy.order.contracts}} | Количество контрактов/единиц из стратегии |
{{strategy.order.id}} | ID ордера, назначенный стратегией |
{{strategy.order.comment}} | Комментарий, заданный в strategy.entry() или strategy.close() |
{{ticker}} | Символ графика (например, "BTCUSDT" или "BINANCE:BTCUSDT") |
{{close}} | Текущая цена закрытия |
{{open}}, {{high}}, {{low}} | Значения OHLC текущей свечи |
{{volume}} | Объём текущей свечи |
{{time}} | Временная метка текущей свечи |
Формат символа
Amabit ожидает формат символа Binance — название пары без разделителей:
| Принимается | Не принимается |
|---|---|
BTCUSDT | BTC/USDT |
ETHUSDT | ETH-USDT |
BINANCE:BTCUSDT | SOL/USDT |
TIP
Если ваш график TradingView использует префикс биржи (например, BINANCE:BTCUSDT), это нормально — Amabit автоматически удаляет префикс. Но форматы со слэшем или дефисом (BTC/USDT, BTC-USDT) не поддерживаются.
Если {{ticker}} выдаёт неподдерживаемый формат, захардкодируйте символ в payload.
Примеры
Лимитный ордер
Исполнить по цене алерта вместо рыночной:
{
"action": "buy",
"symbol": "BTCUSDT",
"quantity": 0.005,
"price": "{{close}}",
"order_type": "limit"
}Reduce-Only (Фьючерсы)
Закрыть существующую позицию без открытия новой:
{
"action": "sell",
"symbol": "BTCUSDT",
"quantity": 0.01,
"order_type": "market",
"reduce_only": true
}Hedge Mode — Закрыть длинную позицию
{
"action": "sell",
"symbol": "BTCUSDT",
"quantity": 0.01,
"order_type": "market",
"position_side": "LONG",
"reduce_only": true
}Использование % от баланса (Quantity не нужен)
Если ваш webhook настроен с размером лота Custom % of Balance, поле quantity игнорируется:
{
"action": "buy",
"symbol": "ETHUSDT",
"order_type": "market"
}