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

Опубліковано 30 серп. 2023 р.Оновлено 4 квіт. 2024 р.7 хв читання

Зміст

Вступ

Після запуску сигнальних ботів користувачі TradingView тепер можуть публікувати свої сигнали й створити сигнальний бот на OKX. У цій інструкції ми розглянемо різні характеристики сповіщень, які OKX підтримує для зручності своїх користувачів.

Для тих, хто добре знайомий з PineScript і покладається виключно на стратегічні скрипти для надсилання сигналів, ми ретельно розробили ексклюзивний формат специфікацій. Цей формат органічно інтегрує плейсхолдери стратегій PineScript, дозволяючи дуже легко передавати торгові сигнали. Якщо ви користуєтеся стратегіями на PineScript, цей формат є вашим ідеальним інструментом, що забезпечує спрощений підхід до об'єднання ваших скриптів стратегій із плейсхолдерами TradingView. Якщо ви є автором стратегії і використовуєте функції strategy.*() для побудови своїх торгових сигналів, зверніться до [Розділу A — для користувачів стратегій PineScript] (#section-a-pinescript-strategy-users) нижче.

З іншого боку, ми розуміємо, що не всі покладаються виключно на скрипти стратегій PineScript. У Розділі B — Universally Compatible цього посібника ми надаємо універсальний набір специфікацій, які виходять за межі методів написання скриптів. Ці специфікації працюють для всіх підходів до генерації сигналів. Незалежно від того, чи використовуєте ви власні індикатори, різні методи побудови графіків, чи навіть віддаєте перевагу ручним сповіщенням, ця «універсальна» система специфікацій охоплює всі ваші потреби.

Експрес-огляд Pine Script: Поняття «стратегія» і «індикатор»

Стратегії Pine Script служать для проведення тестування на історичних даних, а також для прогностичного тестування на реальних ринках. Окрім індикаторних обчислень, стратегії включають виклики функцій strategy.*(), які передають торгові ордери емулятору брокера Pine Script. Цей емулятор потім може змоделювати виконання цих ордерів. Результати тестування на історичних даних відображаються у вкладці «Тестер стратегій», розташованій внизу графіка, поруч з вкладкою «Редактор Pine Script».

Sect A - express overview 1

З іншого боку, індикатори Pine Script також передбачають обчислення, але вони не призначені для використання в сценаріях тестування на історичних даних (бек-тестування). Завдяки незалежності від емулятора брокера, індикатори споживають менше ресурсів і виконуються швидше.

Sect A - express overview 2

Важливо зазначити, що ви можете використовувати як формат з розділу А, так і формат з розділу B — обидва вони цілком сумісні.. На основі повідомлень, які ви передаєте, система самостійно розпізнає формат, що використовується, і відповідно до нього аналізує ваші повідомлення. Ця інтелектуальна обробка забезпечує ефективність незалежно від обраного вами підходу.

Розділ A (Користувачі стратегії PineScript)

Наведені нижче специфікації спеціально розроблені для користувачів, які складають свої алгоритми за допомогою стратегій PineScript і, головним чином, за допомогою функції strategy.*. Цей формат призначений для використання значень плейсхолдерів стратегій, забезпечуючи легку адаптивність. Додаткова інформація для глибшого розуміння сценаріїв стратегій і процесу надсилання сповіщень за допомогою змінних плейсхолдерів наведена за цим посиланням.

Якщо ця концепція вам незнайома, у [Розділі B] (#section-b-universally-compatible) пропонується альтернативний підхід до побудови ваших сповіщень, який можна застосувати до ширшого спектру сценаріїв.

Огляд специфікацій AlertMsg

Параметр
Обов’язковість
Значення
id
Обов’язковий
  • {{strategy.order.id}} від TradingView

дія
Обов’язковий
  • {{strategy.order.action}} від TradingView

marketPosition
Обов’язковий
  • {{strategy.market_position}} від TradingView

prevMarketPosition
Обов’язковий
  • {{strategy.prev_market_position}} від TradingView

інструмент
Обов’язковий
  • {{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 — дія

Sect A - action

action - купівля чи продаж?

{{strategy.order.action}} - повертає рядок "buy" або "sell" для виконаного ордера.

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

Sect A - MarketPosition

marketPosition — запланований стан позиції (після виконання ордера)

{{strategy.market_position}} — повертає поточну позицію стратегії у вигляді рядка: "long", "flat" або "short".

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

Sect A - prevMarketPosition

prevMarketPosition — попередній стан позиції (до виконання ордера)

{{strategy.prev_market_position}} — повертає попередню позицію стратегії у вигляді рядка: «long», «flat» чи «short».

5. Характеристика AlertMsg — інструмент

Sect A - instrument

Формат 1: тикер — значення плейсхолдера в TradingView

‘Стандартний плейсхолдер’* — це буквально частина тексту всередині сповіщення, виділена фігурними дужками.

"{{ticker}}" поверне тикер інструмента, за яким згенеровано сповіщення.

Наприклад: "BTCUSDT.P", "ETHUSDT.P".

*Стандартний плейсхолдер для доступу до змінних у PineScript. Докладніше  тут.

Формат 2: Формат інструменту OKX

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 і в форматі рррр-MM-ддТГГ: хх: сс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: Інвестована маржа у валюті котирування

  • контракт: Фіксована кількість контрактів

  • percentage_balance: Залежить від % коштів на балансі (тобто доступної маржі для відкриття нових ордерів)

  • percentage_investment: Засновано на відсотку активних інвестицій у вашому боті. Активні інвестиції, як правило, є вашим початковим вкладеним маржем на момент створення бота і залишаються фіксованими до того часу, коли ви додаєте ще маржі і вирішуєте збільшити це значення. Наприклад, якщо ви створите бота з початковою вкладеною маржею 1000 USDT, ваші активні інвестиції будуть встановлені ​​на рівень 1000 USDT. Для будь-яких вхідних сигналів це буде значення, яке використовуватиметься для розрахунку розміру вашого замовлення. Скажімо, через кілька днів роботи ваш бот, ви вирішуєте, що він працює добре, і реінвестуєте ще 1000 USDT маржі, додаючи її до ваших активних інвестицій. Після цього ваші активні інвестиції збільшаться до 2000 USDT, і це нове значення буде використовуватися для розрахунку розміру вашого замовлення. Якщо ви не впевнені, яке поточне значення активних інвестицій у вашого бота, ви завжди можете перевірити це в розділі "Деталі бота".

(ТІЛЬКИ ДЛЯ СИГНАЛІВ НА ВИХІД)
  • base: Сума в базовій валюті (рекомендований вибір)

  • percentage_position: Залежить від % відкритої позиції

Section B (Universally Compatible)

Нижченаведені специфікації є універсальними і можуть бути адаптовані до будь-якого сценарію. Незалежно від того, чи використовуєте ви PineScript для створення скриптів стратегій чи індикаторів (дослідження), або вручну вводите сповіщення в інтерфейс користувача Alert у TradingView, ці специфікації залишаються адаптивними і налаштовуваними.

Огляд специфікацій AlertMsg

Параметр Обов’язковість Значення
дія Обов’язковий
  • 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
  • market

  • 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 — дія

Режим позиції:

Сигнальний бот працює в односторонньому режимі (наприклад, купівля/продаж), тобто бот може утримувати позиції для певного інструмента лише в одному напрямку.

Відкриття ордерів
  • ENTER_LONG: Відкриття позиції лонг з очікуванням, що ціна буде зростати.
  • ENTER_SHORT: Відкриття позиції шорт з очікуванням, що ціна буде знижуватись.
Закриття ордерів
  • EXIT_LONG: Часткове або повне закриття позиції лонг через продаж утримуваних позицій.
  • EXIT_SHORT: Часткове або повне закриття позиції шорт через викуп контрактів.

2. Характеристика AlertMsg — інструмент

Формат 1: тикер — значення плейсхолдера в TradingView

‘Стандартний плейсхолдер’* — це буквально частина тексту ,всередині сповіщення, виділена фігурними дужками.

"{{ticker}}" повертає тикер інструмента, за яким згенеровано сповіщення.

Наприклад: "BTCUSDT.P", "ETHUSDT.P".

*Стандартний плейсхолдер для доступу до змінних у PineScript. Докладніше  тут.

Формат 2: Формат інструмента OKX

ID інструмента або «instId» у API OKX. Більше інформації можна знайти за цим посиланням

Наприклад: "BTC-USDT-SWAP", "ETH-USDT-SWAP"

3. Характеристика AlertMsg — signalToken

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

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

4. Специфікації AlertMsg — timestamp

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

‘Стандартний плейсхолдер’* — це буквально частина тексту всередині сповіщення, виділена фігурними дужками.

"{{timenow}}« повертає поточний точний час, коли було створено сповіщення, в UTC і в форматі рррр-MM-ддТГГ: хх: ссZ.

Варіант форматування (час UTC, формат ISO 8061)

  • формат рррр-MM-ддTГГ:хх:ссZ Наприклад: "2023-06-01T17:38:10Z"
  • формат рррр-MM-ддTГГ:мм:сс.СССZ Наприклад: "2023-06-01T17:38:10.836Z"
  • формат рррр-MM-дд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 допомагає забезпечити своєчасну роботу SignalBot, уникаючи реагування на застарілі або потенційно неточні сигнали, які можуть більше не відображати поточні ринкові умови.

6. Специфікації AlertMsg — ордер

orderType

  • Market: Розміщення маркет ордера для відкриття (якщо action =ENTER_XX) або закриття (якщо action = EXIT_XX) позиції. Значення для параметра orderPriceOffset вказувати необов’язково
  • Limit: Розміщення ліміт-ордера для відкриття (якщо action =ENTER_XX) або закриття (якщо action = EXIT_XX) позиції.

orderPriceOffset (застосовно ЛИШЕ з ЛІМІТ-ордерами)

  • ENTER_LONG: [1-(orderPriceOffset/100)] * Бід-1
  • ENTER_SHORT: [1+(orderPriceOffset/100)] * Аск-1
  • EXIT_LONG: [1+(orderPriceOffset/100)] * Аск-1
  • EXIT_SHORT: [1-(orderPriceOffset/100)] * Бід-1

7. Специфікації AlertMsg — investmentType та amount

investmentType і Amount

(ТІЛЬКИ ДЛЯ СИГНАЛІВ НА ВХІД)
  • Margin: Інвестована маржа у валюті котирування

  • Contract: Фіксована кількість контрактів

  • Percentage_balance: Залежить від % коштів на балансі (тобто доступної маржі для відкриття нових ордерів)

  • Percentage_investment: Засновано на відсотку активних інвестицій у вашому боті. Активні інвестиції, як правило, є вашим початковим вкладеним маржем на момент створення бота і залишаються фіксованими до того часу, коли ви додаєте ще маржі і вирішуєте збільшити це значення. Наприклад, якщо ви створите бота з початковою вкладеною маржею 1000 USDT, ваші активні інвестиції будуть встановлені ​​на рівень 1000 USDT. Для будь-яких вхідних сигналів це буде значення, яке використовуватиметься для розрахунку розміру вашого замовлення. Скажімо, через кілька днів роботи ваш бот, ви вирішуєте, що він працює добре, і реінвестуєте ще 1000 USDT маржі, додаючи її до ваших активних інвестицій. Після цього ваші активні інвестиції збільшаться до 2000 USDT, і це нове значення буде використовуватися для розрахунку розміру вашого замовлення. Якщо ви не впевнені, яке поточне значення активних інвестицій у вашого бота, ви завжди можете перевірити це в розділі "Деталі бота".

(ТІЛЬКИ ДЛЯ СИГНАЛІВ НА ВИХІД)
  • Percentage_position: Залежить від % відкритих позицій

Розділ B Практичні приклади

Приклад 1: Вхід лонг -> Вихід лонг (повне закриття) без мультивходу

Приклад 2: Вхід лонг -> Вхід шорт (однокроковий розворот) без мультивходу

Приклад 3: Вхід лонг -> Вихід лонг (частковий) -> вихід лонг (повне закриття)

Приклад 4: Використання мультивходу

Мультивхід — функція сигнального бота, яка дозволяє виконувати вхід з декількох точок для певного інструмента. Трейдери можуть оптимізувати свій торговий підхід, диверсифікуючи точки входу (наприклад, усереднення доларової вартості), що потенційно збільшує шанси на отримання прибуткових угод у динамічному ринковому середовищі.

Приклад 5: Використання лише тригерних сигналів (без полів, які відносяться до ордера)

Провайдери сигналів можуть виключити певні необов’язкові параметри, якщо користувач вже налаштував їх у боті. Це особливо корисно для провайдерів, які пропонують ТІЛЬКИ тригерні сигнали на купівлю/продаж, і кожен підписник сам вирішує, скільки інвестувати.

Приклад 6: Використання лише тригерних сигналів (без полів, які відносяться до ордера)

Якщо в конфігурації сигналу й бота не вказано деталей ордера, використовуються типові значення.

  • Для сигналів ВХОДУ маркет-ордер типово відкриває інвестування X%*.
    Для сигналів ВИХОДУ отримання сигналу типово закривається 100% відкритих позицій після.

*** X = 100 для однієї пари. X = 50 для мультипари

Приклад 7: Пріоритет польового ордера

Параметри бота мають пріоритет над параметрами сигналу. Потрібно враховувати два правила:

  1. Правило 1: Бот і сигнал визначають поле
Для Типа ордера
Маркет ордер (бот)✅
Ліміт-ордер (сигнал)❌
  1. Правило 2: Бот або сигнал визначає поле
Для типу інвестицій і суми
N/A (бот) ❌
100% коштів на балансі(сигнал) ✅

Поширені запитання

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