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

Опубликовано 30 авг. 2023 г.Обновлено 4 апр. 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% доступный баланс (сигнал) ✅

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

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