Спецификации оповещений сигнального бота 2.0
Оглавление
Введение
Благодаря запуску сигнальных ботов, пользователи TradingView теперь могут публиковать свои сигналы и создавать сигнальные боты на OKX. В этом руководстве мы подробно рассмотрим спецификации для различных оповещений, которые поддерживает OKX.
Мы также разработали особый формат спецификаций для уверенных пользователей PineScript, использующих сигналы только от скриптов стратегий. Этот формат очень просто интегрирует плейсхолдеры стратегии PineScript, позволяя с легкостью отправлять торговые сигналы. Этот формат идеально подходит для продвинутых пользователей стратегии PineScript и позволяет с легкостью объединять скрипты стратегий с плейсхолдерами TradingView. Если вы лично пишете стратегии и используете функции strategy.*() для создания торговых сигналов, то перейдите в Раздел A - для пользователей стратегии PineScript below.
Но также мы понимаем, что не все полагаются только на скрипты стратегий PineScript. В разделе Б - универсальные этого руководства, мы представили набор многофункциональных спецификаций, которые подойдут не только для скриптов. Эти спецификации подходят для любых методов генерации сигналов. Так, набор данных спецификаций будет работать с пользовательскими индикаторами, различными техниками построения графиков и даже ручными оповещениями — это по-настоящему универсальный набор.
Краткий обзор Pine Script: разница между функциями "Strategy" и "Indicator"
Стратегии Pine Script нужны для ретроспективного тестирования исторических данных, а также форвард-тестов на реальных рынках. Помимо расчетов индикатора, стратегии также вызывают функции strategy.*(), передающие торговые ордера в эмулятор брокера Pine Script. Затем эмулятор симулирует исполнение этих ордеров. Результаты ретроспективного тестирования отражаются во вкладке «Тестировщик стратегии» внизу графика рядом с вкладкой «Редактор Pine Script».
При этом индикаторы Pine Script тоже предполагают вычисления, однако не предназначены для ретроспективного тестирования. Они не зависят от эмулятора брокера, требуют меньше ресурсов и исполняются быстрее.
Также подчеркнем, что можно использовать формат как из Раздела А, так и из Раздела Б — они полностью совместимы. Система проанализирует передаваемые сообщения, автоматически определит используемый формат и преобразует сообщения соответствующим образом. Данный механизм смарт-обработки обеспечивает правильную работу независимо от выбранного подхода.
Раздел A (Для пользователей стратегии PineScript)
Спецификации ниже специально разработаны для алгоритмов, созданных с помощью стратегий PineScript, в особенности функции strategy.* . Этот формат работает со значениями плейсхолдеров стратегии, обеспечивая легкую адаптацию. Для детального изучения скриптов стратегий и процесса отправки оповещений с помощью плейсхолдеров стратегии, обратитесь к этой статье.
Если данный подход вам не знаком, то обратитесь к разделу Б, где представлен альтернативный подход к созданию оповещений, который подойдет для более широкого спектра сценариев применения.
Краткий обзор спецификаций для AlertMsg
Параметр
|
Обязательный
|
Значения
|
id
|
Обязательный
|
|
action
|
Обязательный
|
|
marketPosition
|
Обязательный
|
|
prevMarketPosition
|
Обязательный
|
|
instrument
|
Обязательный
|
|
signalToken
|
Обязательный
|
Предоставляется OKX при создании сигнала
|
timestamp
|
Обязательный
|
{{timenow}} от TradingView
|
maxLag
|
Необязательный
|
Положительное целое значение между [1, 3600]. По умолчанию 60.
|
investmentType
|
Необязательный*
|
|
amount
|
Обязательный
|
|
1. Спецификация AlertMsg — id
id — идентификатор ордера
{{strategy.order.id}} — возвращает ID исполненного ордера (строчка, используемая как первый параметр в одном из вызовов функций, создающем ордера: strategy.entry, strategy.exit или strategy.order).
2. Спецификация AlertMsg — action
action — покупка или продажа?
{{strategy.order.action}} — возвращает строчку «покупка» или «продажа» для исполненного ордера.
3. Спецификация AlertMsg — marketPosition
marketPosition - желаемое состояние позиции (после исполнения ордера)
{{strategy.market_position}} — возвращает текущую позицию стратегии в форме строчки: «лонг», «флэт» или «шорт».
4. Спецификация AlertMsg — prevMarketPosition
prevMarketPosition - прошлое состояние позиции (до исполнения ордера)
{{strategy.prev_market_position}} — возвращает предыдущую позицию стратегии в форме строчки: «лонг», «флэт» или «шорт».
5. Спецификация AlertMsg — instrument
Формат 1: ticker — значения плейсхолдеров TradingView
«Стандартный плейсхолдер»* — это текст в двойных скобках, добавленный в сообщение оповещения.
"{{ticker}}" вернет тикер инструмента, сгенерированный оповещением.
Например: BTCUSDT.P, ETHUSDT.P.
* Стандартный плейсхолдер для доступа к переменным в PineScript. Подробнее по ссылке.
Формат 2: формат инструмента OKX
Instrument ID, или "instId" в API OKX. Подробнее по ссылке.
Например: "BTC-USDT-SWAP", "ETH-USDT-SWAP"
6. Спецификация AlertMsg — signalToken
** signalToken — аутентификация для сигнала**
Это мера безопасности, обеспечивающая проверку и аутентификацию входящих запросов. Параметр signalToken генерируется автоматически, когда пользователь создает новый сигнал на нашей платформе, и должен быть скопирован в сообщение оповещения TradingView.
Как найти signalToken для уже активного сигнала?
- Проверьте вкладку «Детали» вашего сигнала.
- Найдите signalToken в разделе «Рекомендованные оповещения».
7. Спецификация AlertMsg — timestamp
** timenow — значения плейсхолдеров TradingView**
«Стандартный плейсхолдер»* — это текст в двойных скобках, добавленный в сообщение оповещения.
"{{timenow}}" вернет текущее и точное время создания оповещения в UTC и формате «гггг-мм-ддTчч: мм: ссZ».
Например: 2023-06-01T17:38:10Z
* Стандартный плейсхолдер для доступа к переменным в PineScript. Подробнее по ссылке.
8. Спецификация AlertMsg — maxLag
** maxLag — максимальная допустимая задержка**
"maxLag" задает макс. лимит задержки, измеряемый в секундах. По достижении лимита торговый сигнал считается недействительным. Расчет значения maxLag предполагает определение временного интервала между отправкой сигнала из TradingView (с использованием поля "timestamp" в оповещении) и его получением на OKX для исполнения ордера.
По умолчанию этот параметр установлен на 60 секунд. Установка значения maxLag обеспечивает своевременную работу сигнального бота и позволяет избежать устаревших или неточных сигналов, которые больше не отражают текущие условия на рынке.
9. Спецификации AlertMsg — investmentType и amount
Важная информация: для обеспечения оптимальной совместимости со стратегией TradingView настоятельно рекомендуем установить investmentType как "base", а сумму как "{{strategy.order.contracts}}". Этот подход обеспечивает соответствие количества ордеров на OKX с количеством ордеров в стратегии TradingView.
investmentType и amount
(ТОЛЬКО ДЛЯ СИГНАЛОВ ВХОДА)
- base: сумма в базовой валюте (рекомендуется).
- margin: инвестированная маржа в валюте котировки.
- contract: фиксированное количество контрактов.
- percentage_balance: зависит от % доступного баланса (доступной маржи для открытия новых ордеров).
- percentage_investment: На основе процента активных инвестиций в вашем боте. Активные инвестиции обычно представляют собой ваш начальный вложенный маржин на момент создания бота и остаются неизменными до тех пор, пока вы не пополните маржин и не решите увеличить эту стоимость. Например, если вы создаете бот с начальным вложенным маржином 1000 USDT, ваш активный инвестиционный портфель будет установлен в 1000 USDT. Для любых входящих сигналов это значение будет использоваться для расчета размера вашего ордера. Допустим, через несколько дней работы вашего бота вы решаете, что он хорошо справляется и реинвестируете еще 1000 USDT маржин и добавляете его к вашим активным инвестициям. После этого ваш активный инвестиционный портфель увеличится до 2000 USDT, и это новое значение будет использоваться для расчета размера ваших ордеров. Если вы не уверены, каково текущее значение активных инвестиций вашего бота, вы всегда можете проверить это в разделе «Детали бота».
(ТОЛЬКО ДЛЯ СИГНАЛОВ ВЫХОДА)
- base: сумма в базовой валюте (рекомендуется).
- percentage_position: зависит от % открытых позиций.
Раздел Б (универсальные)
Спецификации ниже универсальны и подойдут для любого сценария. Их можно адаптировать и подстроить под индикаторы (study) и стратегии PineScript, а также оповещения TradingView, созданные вручную через интерфейс оповещений и др.
Краткий обзор спецификаций AlertMsg
Параметр | Обязательный | Значения |
---|---|---|
action | Обязательный |
|
instrument | Обязательный |
|
signalToken | Обязательный | Предоставляется OKX при создании сигнала |
timestamp | Обязательный | {{timenow}} от TradingView |
maxLag | Необязательный | Положительное целое значение между [1, 3600]. По умолчанию 60. |
orderType | Необязательный. Параметр необходим, если orderType = Limit | |
orderPriceOffset | Необязательный. необходим, если настройки не были указаны при создании сигнального бота OKX | Плавающее значение между [0, 100] в % |
investmentType | Необязательный. Параметр необходим, если orderType = Limit |
|
amount | Необязательный. Параметр необходим, если orderType = Limit |
|
1. Спецификация AlertMsg — action
Режим позиции:
Сигнальный бот удерживает позиции только в одном направлении (покупка/продажа) для заданного инструмента.
Ордера на открытие позиции
- ENTER_LONG: открытие лонг-позиции с расчетом на повышение цены.
- ENTER_SHORT: открытие шорт-позиции с расчетом на понижение цены.
Ордера на закрытие позиции
- EXIT_LONG: частичное или полное закрытие лонг-позиции за счет продажи удерживаемых позиций.
- EXIT_SHORT: частичное или полное закрытие шорт-позиции за счет выкупа контрактов.
2. Спецификация AlertMsg — instrument
Формат 1: ticker — значения плейсхолдеров TradingView
«Стандартный плейсхолдер»* — это текст в двойных скобках, добавленный в сообщение оповещения.
"{{ticker}}" вернет тикер инструмента, сгенерированный оповещением.
Например: BTCUSDT.P, ETHUSDT.P.
* Стандартный плейсхолдер для доступа к переменным в PineScript. Подробнее по ссылке.
Формат 2: формат инструмента OKX
Instrument ID, или "instId" в API OKX. Подробнее по ссылке
Например: "BTC-USDT-SWAP", "ETH-USDT-SWAP"
3. Спецификация AlertMsg — signalToken
** signalToken — аутентификация для сигнала**
Это мера безопасности, обеспечивающая проверку и аутентификацию входящих запросов. Параметр signalToken генерируется автоматически, когда пользователь создает новый сигнал на нашей платформе, и должен быть скопирован в оповещение TradingView.
4. Спецификация AlertMsg — timestamp
** timenow — значения плейсхолдеров TradingView**
«Стандартный плейсхолдер»* — это текст в двойных скобках, добавленный в сообщение оповещения.
"{{timenow}}" вернет текущее и точное время создания оповещения в UTC и формате «гггг-мм-ддTчч: мм: ссZ».
Доступные способы записи даты (UTC, формат ISO 8061)
- гггг-мм-ддTчч:мм:ссZ, например: 2023-06-01T17:38:10Z
- гггг-мм-ддTчч:мм:сс.сссZ, например: 2023-06-01T17:38:10.836Z
- гггг-мм-ддTчч:мм:сс+0000, например: 2023-06-01T17:38:10+0000
Например: 2023-06-01T17:38:10Z
* Стандартный плейсхолдер для доступа к переменным в PineScript. Подробнее по ссылке.
5. Спецификация AlertMsg — maxLag
** maxLag — максимальная допустимая задержка**
"maxLag" задает макс. лимит задержки, измеряемый в секундах. По достижении лимита торговый сигнал считается недействительным. Расчет значения maxLag предполагает определение временного интервала между отправкой сигнала из TradingView (с использованием поля "timestamp" в оповещении) и его получением на OKX для исполнения ордера.
По умолчанию этот параметр установлен на 60 секунд. Установка значения maxLag обеспечивает своевременную работу сигнального бота и позволяет избежать устаревших или неточных сигналов, которые больше не отражают текущие условия на рынке.
6. Спецификация AlertMsg — order
orderType
- Market: размещение рыночного ордера на открытие (если action = ENTER_XX) или закрытие (если action = EXIT_XX) позиции. Предоставлять orderPriceOffset не нужно
- Limit: размещение лимитного ордера на открытие (если action = ENTER_XX) или закрытие (если action = EXIT_XX) позиции.
orderPriceOffset (ТОЛЬКО для ордеров LIMIT)
- ENTER_LONG: [1-(orderPriceOffset/100)] * Bid-1
- ENTER_SHORT: [1+(orderPriceOffset/100)] * Ask-1
- EXIT_LONG: [1+(orderPriceOffset/100)] * Ask-1
- EXIT_SHORT: [1-(orderPriceOffset/100)] * Bid-1
7. Спецификации AlertMsg — investmentType и amount
investmentType и amount
(ТОЛЬКО ДЛЯ СИГНАЛОВ ВХОДА)
- Margin: инвестированная маржа в валюте котировки.
- Contract: фиксированное количество контрактов.
- Percentage_balance: зависит от % доступного баланса (доступной маржи для открытия новых ордеров).
- Percentage_investment: На основе процента активных инвестиций в вашем боте. Активные инвестиции обычно представляют собой ваш начальный вложенный маржин на момент создания бота и остаются неизменными до тех пор, пока вы не пополните маржин и не решите увеличить эту стоимость. Например, если вы создаете бот с начальным вложенным маржином 1000 USDT, ваш активный инвестиционный портфель будет установлен в 1000 USDT. Для любых входящих сигналов это значение будет использоваться для расчета размера вашего ордера. Допустим, через несколько дней работы вашего бота вы решаете, что он хорошо справляется и реинвестируете еще 1000 USDT маржин и добавляете его к вашим активным инвестициям. После этого ваш активный инвестиционный портфель увеличится до 2000 USDT, и это новое значение будет использоваться для расчета размера ваших ордеров. Если вы не уверены, каково текущее значение активных инвестиций вашего бота, вы всегда можете проверить это в разделе «Детали бота».
(ТОЛЬКО ДЛЯ СИГНАЛОВ ВЫХОДА)
- Percentage_position: зависит от % открытых позиций.
Раздел Б Практические примеры
Пример 1: вход в лонг - выход из лонга (полное закрытие) без многократного входа
Пример 2: вход в лонг - вход в > шорт (разворот в один шаг) без многократного входа
Пример 3: Вход в лонг -> выход из лонга (частичный) -> выход из лонга (полное закрытие)
Пример 4: многократный вход
Многократный вход — это функция сигнального бота, позволяющая применять несколько точек входа в позицию в используемом инструменте. Она помогает оптимизировать торговлю за счет диверсификации точек входа (усреднения стоимости в долларах), чтобы увеличить шансы на совершение прибыльных сделок в условиях динамичного рынка.
Пример 5: использование только сигнала триггера (без полей, связанных с ордером)
Поставщики сигналов могут исключить некоторые необязательные параметры, если они уже были ранее настроены в боте. Это особенно удобно для поставщиков, которые предлагают ТОЛЬКО триггерные сигналы на покупку/продажу. При этом подписчики сами определяют сумму инвестиций.
Пример 6: использование только сигнала триггера (без полей, связанных с ордером)
Если в настройках сигнала и бота не указаны данные ордера, будут использованы значения по умолчанию.
- В сигналах ** ENTER** позиция откроется на X%* инвестиций с помощью рыночного ордера.
- В сигналах ** EXIT** закроется 100% открытых позиций при получении сигнала.
*** X = 100 для одной пары. X = 50 для нескольких пар
Пример 7: Приоритет полей ордера
Параметры бота имеют преимущество перед параметрами сигнала. Следует обратить внимание на два следующих правила.
- Правило 1: поле определяет и бот, и сигнал.
Для Order Type
|
Рыночный ордер (бот) ✅
|
Лимитный ордер (сигнал) ❌
|
- Правило 2. поле определяет или бот, или сигнал.
Для Investment Type и Amount
|
N/A (бот) ❌
|
100% доступный баланс (сигнал) ✅
|
Часто задаваемые вопросы
Если у вас вопросы о сигнальных ботах ознакомьтесь с часто задаваемыми вопросами в этой статье.