Спецификации оповещений сигнального бота 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% доступный баланс (сигнал) ✅
|
Часто задаваемые вопросы
Если у вас вопросы о сигнальных ботах ознакомьтесь с часто задаваемыми вопросами в этой статье.