Strasmore Research
Навчання Matt ConnorВід Matt Connor · data as of August 15, 2026 · refreshed weekly

Що таке bracket-ордер та OCO ордери у трейдингу

Дізнайтеся як працюють bracket-ордери та OCO інструкції. Розбираємо механіку зв'язку profit-target і стоп-ордерів, особливості часткового виконання та логіку керування позицією.

Bracket-ордер — це єдина інструкція, що об’єднує три ордери у фіксованому взаємозв’язку: вхідну позицію та пару пов’язаних ордерів на вихід, що розміщуються по обидва боки від неї. Ця пара є OCO (one cancels the other — «один скасовує інший»). Лімітний ордер на фіксацію прибутку (profit-target) розміщується вище ціни входу, а захисний стоп-ордер — нижче; виконання будь-якої з цих частин автоматично скасовує іншу. Bracket-ордер фактично є невеликою машиною станів, і більшість несподіванок виникає саме в моменти між цими станами.

Що таке bracket-ордер?

Уявіть трейдера, який хоче купити 200 акцій за ціною близько $50, закрити позицію біля $53, якщо сценарій спрацює, або вийти біля $48,50, якщо ні. Якщо оформлювати це як окремі заявки, вийде три ордери та ручна робота: потрібно скасувати стоп у момент виконання цілі, інакше виникає ризик продати 200 акцій двічі. Bracket-ордер об’єднує цей намір в одну заявку. Вхід — це звичайний ринковий або лімітний ордер. Два ордери на вихід є його «дочірніми»: лімітний ордер для закриття за цільовою ціною та стоп-ордер або стоп-ліміт для закриття на захисному рівні.

Термінологія може відрізнятися. Bracket, attached order, OCO bracket та OTOCO — усі ці назви описують таку структуру. OTOCO (one triggers a one-cancels-the-other — «один активує пару, де один скасовує інший») є найбільш точним описом послідовності: вхід активує пару, а потім пара самостійно скорочується до одного ордера.

Що означає OCO в bracket-ордері?

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

Повна послідовність для bracket-ордера на 200 акцій виглядає так:

  1. Вхідний ордер працює самостійно. Цілі та стопи існують у системі брокера, але не є активними ордерами, тому виконання угоди за цільовою ціною, поки вхід не виконано, нічого не змінить.
  2. Вхідний ордер виконується на 200 акцій. Обидва дочірні ордери стають активними, кожен на 200 акцій.
  3. Ціна досягає рівня стопу. Стоп перетворюється на активний ордер на продаж і потрапляє в книгу заявок.
  4. Стоп виконується на 120 акцій, перш ніж ринок розвертається. Лімітний ордер на ціль зменшується з 200 до 80, відповідаючи залишку позиції.
  5. Останні 80 акцій виконуються за цільовою ціною пізніше протягом сесії. Залишок стопу на 80 акцій скасовується, і bracket-ордер закривається.

Часткове виконання вхідного ордера — це момент, де підходи платформ найбільше різняться. Деякі брокери активують дочірні ордери на виконану кількість одразу і збільшують їх у міру виконання решти входу. Інші чекають повного виконання входу, що залишає позицію незахищеною в цей проміжок часу. Семантичні відмінності між брокерами не є суто косметичними: вони стосуються того, чи активуються дочірні ордери при частковому виконанні та чи не призводить редагування одного з них до розриву зв’язку скасування з іншим.

На якій відстані мають бути розміщені обидві частини?

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

ЗапитТиповий денний діапазон та зміна ціни від відкриття до закриття за останній рік
Точний SQL-код для кожного числа
SELECT
    ticker,
    round(quantileDeterministic(0.5)(
        (toFloat64(high) - toFloat64(low)) / toFloat64(open) * 100,
        toUInt32(date)), 2)                                   AS median_range_pct,
    round(quantileDeterministic(0.5)(
        abs(toFloat64(close) - toFloat64(open)) / toFloat64(open) * 100,
        toUInt32(date)), 2)                                   AS median_open_to_close_pct
FROM global_markets.stocks_daily_aggs
WHERE ticker IN ('SPY', 'AAPL', 'MSFT', 'NVDA', 'KO', 'JNJ')
  AND date >= today() - 370
  AND date <  today() - 2
GROUP BY ticker
ORDER BY median_range_pct DESC
Run this yourself

NVDA має найширшу типову сесію серед шести з показником 2.72%, а SPY — найвужчу з показником 0.86%. Зверніть увагу, наскільки нижче першого стовпця знаходиться другий у кожному рядку. Типовий актив проходить протягом сесії значно більшу відстань, ніж чиста зміна від відкриття до закриття, і обидві частини bracket-ордера знаходяться всередині цього руху. Ціль і стоп можуть бути досяжні протягом одного й того самого звичайного дня.

Як часто спрацьовує частина bracket-ордера?

Відстань від ціни входу — це параметр, який трейдер контролює безпосередньо. Наступна панель аналізує три повні роки сесій SPY і показує, для набору відстаней від ціни відкриття, яка частка сесій досягала такого рівня вниз і яка — вгору в певний момент дня.

ЗапитЧастка сесій SPY, що досягли певної відстані від ціни відкриття (серпень 2023 – липень 2026)
Точний SQL-код для кожного числа
SELECT
    concat(toString(d.dist), '%')                             AS distance_from_open,
    round(100 * countIf(
        (toFloat64(a.open) - toFloat64(a.low)) / toFloat64(a.open) * 100 >= d.dist
    ) / count(), 1)                                           AS reached_below_pct,
    round(100 * countIf(
        (toFloat64(a.high) - toFloat64(a.open)) / toFloat64(a.open) * 100 >= d.dist
    ) / count(), 1)                                           AS reached_above_pct
FROM global_markets.stocks_daily_aggs AS a
CROSS JOIN
(
    SELECT arrayJoin([0.25, 0.5, 1.0, 1.5, 2.0, 3.0]) AS dist
) AS d
WHERE a.ticker = 'SPY'
  AND a.date >= '2023-08-01'
  AND a.date <  '2026-08-01'
GROUP BY d.dist
ORDER BY d.dist
Run this yourself

На відстані чверті відсотка від відкриття 62.3% сесій торгувалися настільки нижче в певний момент, і 64.7% торгувалися настільки вище. Якщо збільшити відстань до 3%, показник для руху вниз падає до 0.5%. Обидві криві знижуються разом, що і є головною складністю при визначенні розмірів bracket-ордера. Занадто вузький стоп спрацьовує в звичайні дні. Занадто далека ціль здебільшого залишається невиконаною.

Чи завжди стоп-лосс виконується за ціною стопу?

Ні. Стоп — це інструкція надіслати ордер, як тільки ціна досягне тригера. Звичайний стоп надсилає ринковий ордер, і виконання відбувається за тією ціною, яка є в книзі заявок у цей момент. Стоп-ліміт надсилає лімітний ордер за встановленою вами ціною, що захищає ціну, але несе ризик невиконання взагалі. Цей компроміс є темою стоп-ордер проти стоп-ліміт ордера.

Нічний геп — найочевидніший приклад. Захисний стоп залишається активним у години, коли біржа закрита, і ціна відкриття може виявитися значно далі за тригер. Десять прикладів з AAPL за три з половиною роки:

ЗапитДесять найбільших нічних цінових розривів вниз для AAPL (січень 2023 – червень 2026)
Точний SQL-код для кожного числа
SELECT
    formatDateTime(session_date, '%b %e, %Y')                 AS gap_label,
    round((day_open / prev_close - 1) * 100, 2)               AS overnight_gap_pct
FROM
(
    SELECT
        session_date,
        day_open,
        lagInFrame(day_close) OVER (
            ORDER BY session_date ROWS BETWEEN 1 PRECEDING AND CURRENT ROW
        )                                                     AS prev_close
    FROM
    (
        SELECT
            date                  AS session_date,
            toFloat64(any(open))  AS day_open,
            toFloat64(any(close)) AS day_close
        FROM global_markets.stocks_daily_aggs
        WHERE ticker = 'AAPL'
          AND date >= '2023-01-01'
          AND date <  '2026-07-01'
        GROUP BY date
    )
)
WHERE prev_close > 0
ORDER BY overnight_gap_pct ASC
LIMIT 10
Run this yourself

Найбільший з них становив -9.45% на Aug 5, 2024, а десятий у списку — -2.96%. Захисний стоп, що знаходився в межах цих гепів, перетворився на ордер за ціною відкриття, а не за ціною тригера. Розрахунок bracket-ордера лише на основі внутрішньоденного діапазону залишає цей ризик поза моделлю.

Де фактично знаходиться зв’язок OCO?

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

Це місце розміщення визначає, що виживе під час збою. Bracket-ордер на стороні брокера продовжує працювати, коли ви закриваєте ноутбук, оскільки сервери брокера утримують обидві частини та логіку скасування. Bracket-ордер на стороні платформи, який реалізують деякі графічні додатки, потребує запущеного та підключеного додатка. Деякі платформи утримують симульований стоп, який існує лише в локальній пам’яті до моменту досягнення ціни тригера. Закрийте ноутбук — і цей стоп ніколи не буде надіслано.

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

Час дії (time in force) застосовується до кожної частини

Кожна частина має власне налаштування часу дії. Денний ордер на вхід у поєднанні з GTC (good-til-cancelled) дочірніми ордерами — це поширена і незручна комбінація: вхід закінчується на закритті, тоді як дочірні ордери ніколи не активуються, залишаючи bracket-ордер, який тихо нічого не робить наступного ранку. Зворотне поєднання залишає захист, який закінчується о 16:00 за східним часом для позиції, перенесеної через ніч.

Поза регулярними годинами сама книга заявок змінює характер. На панелі нижче наведено хвилинні бари SPY за часом ET протягом повного дня, де для кожних пів години вказано дві речі: середній розмір хвилинного руху в базисних пунктах (один базисний пункт — це сота частина відсотка) та медіанний обсяг за хвилину.

ЗапитВнутрішньоденний рух та обсяг торгів SPY за хвилину (за часом ET)
Точний SQL-код для кожного числа
SELECT
    formatDateTime(
        toStartOfInterval(toTimeZone(window_start, 'America/New_York'), INTERVAL 30 MINUTE),
        '%H:%i')                                              AS et_time,
    round(avg(abs(toFloat64(close) - toFloat64(open)) / toFloat64(open) * 10000), 1) AS avg_move_bps,
    round(quantileDeterministic(0.5)(toFloat64(volume), toUInt64(window_start)), 0)  AS median_volume
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPY'
  AND window_start >= today() - 120
  AND window_start <  today() - 2
GROUP BY et_time
ORDER BY et_time
Run this yourself

Панель повертає 32 півгодинних сегментів, від 04:00 до 19:30 за східним часом. Читайте зліва направо, і форма графіка пояснить усе. Обидва ряди знаходяться поблизу мінімумів у передринкові години, різко зростають до відкриття о 09:30 і падають після 16:00. GTC-стоп, що стоїть о 5 ранку, знаходиться в «тонкій» частині цієї кривої, і виконання стоп-ринкового ордера в такій тонкій книзі може відбутися далеко від тригера.

Часті питання

У чому різниця між bracket-ордером та OCO-ордером?

OCO — це сама пара: два ордери зі зв’язком скасування, де виконання одного видаляє інший. Bracket — це вхідний ордер із доданою парою OCO, причому пара стає активною лише після виконання входу. Кожен bracket містить OCO. Багато OCO-пар використовуються самостійно.

Чи працює bracket-ордер, якщо мій комп’ютер вимкнено?

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

Що станеться зі стопом, якщо ціль з прибутку виконається частково?

Стоп зменшується на виконану кількість, а не скасовується. Якщо ціль на 200 акцій виконана на 60 акцій, стоп зменшується до 140 акцій, відповідаючи відкритій позиції. Скасування спрацьовує лише тоді, коли закривається остання частина позиції.

Чи можу я використовувати bracket-ордер під час передринкових або післяринкових торгів?

Поведінка залежить від брокера, і багато хто маршрутизує дочірні ордери bracket лише в регулярні години. Зокрема, стоп-ордери часто відхиляються або утримуються поза межами 09:30–16:00 за східним часом для акцій США. Налаштування часу дії для кожної частини визначає, чи може ця частина бути виконана під час розширеної сесії.

Чи знають біржі, що мої два ордери пов’язані?

Ні. Для акцій США зв’язок скасування утримується брокером або платформою, а біржа отримує два незалежні ордери. Повідомлення про скасування для частини, що залишилася, надсилається тією системою, яка утримує зв’язок, після того, як інша частина звітує про виконання.


Кожна панель тут супроводжується точним SQL-запитом. Щоб виміряти діапазон і ризик гепу для активу, за яким ви стежите, поставте питання простою англійською мовою на терміналі Strasmore.

#order types#oco#bracket orders#stop orders#execution