Спецификации оповещений сигнального бота 2.0

Опубликовано 30 авг. 2023 г.Обновлено 3 июл. 2024 г.7 мин на чтение

Оглавление

Введение

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

Мы также разработали особый формат спецификаций для уверенных пользователей PineScript™, использующих сигналы только от скриптов стратегий. Этот формат очень просто интегрирует плейсхолдеры стратегии PineScript™, позволяя с легкостью отправлять торговые сигналы. Этот формат идеально подходит для продвинутых пользователей стратегии PineScript™ и позволяет с легкостью объединять скрипты стратегий с плейсхолдерами TradingView. Если вы лично пишете стратегии и используете функции strategy.*() для создания торговых сигналов, то перейдите в Раздел A - для пользователей стратегии PineScript™ below.

Но также мы понимаем, что не все полагаются только на скрипты стратегий PineScript™. В разделе Б - универсальные этого руководства, мы представили набор многофункциональных спецификаций, которые подойдут не только для скриптов. Эти спецификации подходят для любых методов генерации сигналов. Так, набор данных спецификаций будет работать с пользовательскими индикаторами, различными техниками построения графиков и даже ручными оповещениями — это по-настоящему универсальный набор.

Краткий обзор Pine Script™: разница между функциями "Strategy" и "Indicator"

Стратегии Pine Script™ нужны для ретроспективного тестирования исторических данных, а также форвард-тестов на реальных рынках. Помимо расчетов индикатора, стратегии также вызывают функции strategy.*(), передающие торговые ордера в эмулятор брокера Pine Script™. Затем эмулятор симулирует исполнение этих ордеров. Результаты ретроспективного тестирования отражаются во вкладке «Тестировщик стратегии» внизу графика рядом с вкладкой «Редактор Pine Script™».

Sect A - express overview 1

При этом индикаторы Pine Script тоже предполагают вычисления, однако не предназначены для ретроспективного тестирования. Они не зависят от эмулятора брокера, требуют меньше ресурсов и исполняются быстрее.

Sect A - express overview 2

Также подчеркнем, что можно использовать формат как из Раздела А, так и из Раздела Б — они полностью совместимы. Система проанализирует передаваемые сообщения, автоматически определит используемый формат и преобразует сообщения соответствующим образом. Данный механизм смарт-обработки обеспечивает правильную работу независимо от выбранного подхода.

Раздел A (Для пользователей стратегии PineScript™)

Спецификации ниже специально разработаны для алгоритмов, созданных с помощью стратегий PineScript™, в особенности функции strategy.* . Этот формат работает со значениями плейсхолдеров стратегии, обеспечивая легкую адаптацию. Для детального изучения скриптов стратегий и процесса отправки оповещений с помощью плейсхолдеров стратегии, обратитесь к этой статье.

Если данный подход вам не знаком, то обратитесь к разделу Б, где представлен альтернативный подход к созданию оповещений, который подойдет для более широкого спектра сценариев применения.

Краткий обзор спецификаций для AlertMsg

Параметр
Обязательный
Значения
id
Обязательный
  • {{strategy.order.id}} от TradingView

action
Обязательный
  • {{strategy.order.action}} от TradingView

marketPosition
Обязательный
  • {{strategy.market_position}} от TradingView

prevMarketPosition
Обязательный
  • {{strategy.prev_market_position}} от TradingView

instrument
Обязательный
  • {{ticker}} от TradingView

  • Формат Instld от OKX

signalToken
Обязательный
Предоставляется OKX при создании сигнала
timestamp
Обязательный
{{timenow}} от TradingView
maxLag
Необязательный
Положительное целое значение между [1, 3600]. По умолчанию 60.
investmentType
Необязательный*


  • base (ДЛЯ СИГНАЛОВ ВХОДА И ВЫХОДА) сумма в базовой валюте

  • margin (ТОЛЬКО ДЛЯ СИГНАЛОВ ВХОДА) сумма внесенной маржи в валюте котировки

  • contract (ТОЛЬКО ДЛЯ СИГНАЛОВ ВХОДА) фиксированное число контрактов

  • percentage_balance (ТОЛЬКО ДЛЯ СИГНАЛОВ ВХОДА) зависит от % доступного баланса (доступной маржи для открытия новых ордеров)

  • percentage_investment (ТОЛЬКО ДЛЯ СИГНАЛОВ ВХОДА) На основе процента активных инвестиций в вашем боте. Активные инвестиции обычно представляют собой ваш начальный вложенный маржин на момент создания бота и остаются неизменными до тех пор, пока вы не пополните маржин и не решите увеличить эту стоимость.

  • percentage_position (ТОЛЬКО ДЛЯ СИГНАЛОВ ВЫХОДА) зависит от % открытой позиции

amount
Обязательный
  • base (положительное плавающее значение)

  • margin (положительное плавающее значение)

  • contract (положительное целое число)

  • percentage_balance( плавающее значение между [0,01, 100] в %)

  • percentage_investment( плавающее значение между [0,01, 100] в %)

  • percentage_position( плавающее значение между [0,01, 100] в %)

* investmentType по умолчанию примет значение "percentage_investment", если сигнал будет распознан как сигнал входа или значение "percentage_position", если сигнал будет распознан как сигнал выхода. Тем не менее, настоятельно рекомендуем установить это значение как "base", а сумму как {{strategy.order.contracts}}для обеспечения наибольшей совместимости со стратегией TradingView.

1. Спецификация AlertMsg — id

Sect A - id

id — идентификатор ордера

{{strategy.order.id}} — возвращает ID исполненного ордера (строчка, используемая как первый параметр в одном из вызовов функций, создающем ордера: strategy.entry, strategy.exit или strategy.order).

2. Спецификация AlertMsg — action

Sect A - action

action — покупка или продажа?

{{strategy.order.action}} — возвращает строчку «покупка» или «продажа» для исполненного ордера.

3. Спецификация AlertMsg — marketPosition

Sect A - marketPosition

marketPosition - желаемое состояние позиции (после исполнения ордера)

{{strategy.market_position}} — возвращает текущую позицию стратегии в форме строчки: «лонг», «флэт» или «шорт».

4. Спецификация AlertMsg — prevMarketPosition

Sect A - prevMarketPosition

prevMarketPosition - прошлое состояние позиции (до исполнения ордера)

{{strategy.prev_market_position}} — возвращает предыдущую позицию стратегии в форме строчки: «лонг», «флэт» или «шорт».

5. Спецификация AlertMsg — instrument

Sect A - 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

Sect A - signalToken

** signalToken — аутентификация для сигнала**

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

Как найти signalToken для уже активного сигнала?

  1. Проверьте вкладку «Детали» вашего сигнала.

Sect A - locate signalToken 1

  1. Найдите signalToken в разделе «Рекомендованные оповещения».

Sect A - locate signalToken 2

7. Спецификация AlertMsg — timestamp

Sect A - timestamp

** timenow — значения плейсхолдеров TradingView**

«Стандартный плейсхолдер»* — это текст в двойных скобках, добавленный в сообщение оповещения.

"{{timenow}}" вернет текущее и точное время создания оповещения в UTC и формате «гггг-мм-ддTчч: мм: ссZ».

Например: 2023-06-01T17:38:10Z

* Стандартный плейсхолдер для доступа к переменным в PineScript. Подробнее  по ссылке.

8. Спецификация AlertMsg — maxLag

Sect A - maxLag

** maxLag — максимальная допустимая задержка**

"maxLag" задает макс. лимит задержки, измеряемый в секундах. По достижении лимита торговый сигнал считается недействительным. Расчет значения maxLag предполагает определение временного интервала между отправкой сигнала из TradingView (с использованием поля "timestamp" в оповещении) и его получением на OKX для исполнения ордера.

По умолчанию этот параметр установлен на 60 секунд. Установка значения maxLag обеспечивает своевременную работу сигнального бота и позволяет избежать устаревших или неточных сигналов, которые больше не отражают текущие условия на рынке.

9. Спецификации AlertMsg — investmentType и amount

Sect A - investmenttype and 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

HTML, XML
            <td colspan="1" rowspan="1">
                <ul start="1">
                    <li>
                        <p>market</p>
                    </li>
                    <li>
                        <p>limit</p>
                    </li>
                </ul>
            </td>
Параметр Обязательный Значения
action Обязательный
  • ENTER_LONG

  • ENTER_SHORT

  • EXIT_LONG

  • EXIT_SHORT

instrument Обязательный
  • {{ticker}} от TradingView

  • Формат Instld от OKX

signalToken Обязательный Предоставляется OKX при создании сигнала
timestamp Обязательный {{timenow}} от TradingView
maxLag Необязательный Положительное целое значение между [1, 3600]. По умолчанию 60.
orderType Необязательный. Параметр необходим, если orderType = Limit
orderPriceOffset Необязательный. необходим, если настройки не были указаны при создании сигнального бота OKX Плавающее значение между [0, 100] в %
investmentType Необязательный. Параметр необходим, если orderType = Limit
  • margin (ТОЛЬКО ДЛЯ СИГНАЛОВ ВХОДА) сумма внесенной маржи в валюте котировки

  • contract (ТОЛЬКО ДЛЯ СИГНАЛОВ ВХОДА) фиксированное число контрактов

  • percentage_balance (ТОЛЬКО ДЛЯ СИГНАЛОВ ВХОДА) зависит от % доступного баланса (доступной маржи для открытия новых ордеров)

  • percentage_investment (ТОЛЬКО ДЛЯ СИГНАЛОВ ВХОДА) На основе процента активных инвестиций в вашем боте. Активные инвестиции обычно представляют собой ваш начальный вложенный маржин на момент создания бота и остаются неизменными до тех пор, пока вы не пополните маржин и не решите увеличить эту стоимость.

  • percentage_position (ТОЛЬКО ДЛЯ СИГНАЛОВ ВЫХОДА) зависит от % открытой позиции

amount Необязательный. Параметр необходим, если orderType = Limit
  • margin (положительное плавающее значение)

  • contract (положительное целое число)

  • percentage_balance( плавающее значение между [0,01, 100] в %)

  • percentage_investment( плавающее значение между [0,01, 100] в %)

  • percentage_position( плавающее значение между [0,01, 100] в %)

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. Правило 1: поле определяет и бот, и сигнал.
Для Order Type
Рыночный ордер (бот) ✅
Лимитный ордер (сигнал) ❌
  1. Правило 2. поле определяет или бот, или сигнал.
Для Investment Type и Amount
N/A (бот) ❌
100% доступный баланс (сигнал) ✅

Часто задаваемые вопросы

Если у вас вопросы о сигнальных ботах ознакомьтесь с часто задаваемыми вопросами в этой статье.