Bracket at OCO Orders: Paano Gumagana
Ano ang bracket order? Alamin kung paano nagli-link ang profit target at protective stop bilang OCO, ano ang mangyayari sa partial fill, at saan nakalagay ang linkage.
Ang bracket order ay isang instruction na nagpapadala ng tatlong order na may fixed na relasyon: isang entry, at isang linked exit pair na nasa magkabilang panig nito. Ang pair ang OCO, na nangangahulugang one cancels the other. Ang profit-target limit ay nakapuwesto sa itaas ng entry price, habang ang protective stop ay nasa ibaba nito. Kapag na-fill ang alinman sa dalawang leg, awtomatikong kinakansela ang isa pa. Sa praktika, isang maliit na state machine ang bracket, at karamihan ng mga sorpresa ay nangyayari sa pagitan ng mga state nito.
Ano ang bracket order?
Isipin ang isang trader na gustong bumili ng 200 shares malapit sa $50, isara ang position malapit sa $53 kung pabor ang resulta, at lumabas malapit sa $48.50 kung hindi. Kapag magkahiwalay na tickets, tatlong order iyon at may manual na gawain: kailangang kanselahin ang stop sa sandaling ma-fill ang target, kung hindi, maaaring maibenta nang dalawang beses ang 200 shares. Ipinapadala ng bracket ang parehong intensyon bilang isang submission. Ang entry ay isang ordinaryong market order o limit order. Ang dalawang exit ang mga child order nito: isang limit para magsara sa target, at isang stop o stop limit order para magsara sa protective level.
Nag-iiba ang terminolohiya. Ang bracket, attached order, OCO bracket, at OTOCO ay tumutukoy sa ganitong anyo. Ang OTOCO, na nangangahulugang one triggers a one-cancels-the-other, ang pinakaliteral na pangalan para sa sequence: ina-activate ng entry ang pair, at pagkatapos ay kinakansela ng pair ang sarili nito hanggang isa na lamang ang matira.
Ano ang ibig sabihin ng OCO sa bracket order?
Ang OCO ay dalawang resting order na may cancel link sa pagitan nila. Pareho silang live sa order book nang sabay. Kapag na-fill ang isa, inaalis ang isa pa. Kapag bahagyang na-fill ang isa, binabawasan ang isa pa ayon sa filled quantity sa halip na tuluyang alisin. Sa ganitong paraan, nagtutugma ang position at protection share for share.
Ganito ang buong sequence para sa 200-share long bracket.
- Mag-isang gumagana ang entry. Nasa loob ng system ng broker ang target at stop, pero hindi pa sila working orders. Kaya kung may print na lumampas sa target price habang hindi pa filled ang entry, wala itong epekto.
- Na-fill ang entry para sa 200 shares. Nagiging live ang parehong child order, tig-200 shares ang bawat isa.
- Naabot ng trading ang stop price. Nagko-convert ang stop sa live sell order at pumapasok ito sa order book.
- Na-fill ng stop ang 120 shares bago lumayo ang market. Binabawasan ang target limit mula 200 tungo sa 80, alinsunod sa natitirang position.
- Na-fill ang natitirang 80 shares sa target kalaunan sa session. Kinakansela ang natitirang 80 ng stop at nagsasara ang bracket.
Pinakamalaki ang pagkakaiba ng mga platform pagdating sa partial fill ng entry. Ina-activate agad ng ilang broker ang mga child order para sa filled quantity at dinaragdagan ang mga ito habang natatapos ang natitirang entry. Naghihintay naman ang iba hanggang sa tuluyang ma-fill ang entry, kaya walang protection ang position sa pagitan ng mga sandali. Nag-iiba ang semantics ayon sa broker sa mga paraang hindi lamang kosmetiko: kung ina-activate ang mga child order kapag bahagyang na-fill ang entry, at kung napuputol ng pag-edit sa isang child order ang cancel link sa isa pa.
Gaano kalayo ang pagitan ng dalawang leg?
Kailangang nasa labas ng karaniwang ingay ng isang name ang parehong leg, pero nasa loob pa rin ng distansiyang aktuwal nitong kayang marating. Ang daily range ang unang magaspang na sukatan nito. Binabasa ng panel sa ibaba ang anim na kilalang name sa nakalipas na taon: ang median high-to-low range bilang porsiyento ng open, katabi ng median absolute move mula open hanggang close.
Ang eksaktong SQL sa likod ng bawat numero
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 DESCNVDA ang may pinakamalawak na karaniwang session sa anim, sa 2.72%, at SPY naman ang pinakamakitid, sa 0.86%. Pansinin kung gaano kababa ang ikalawang column kumpara sa una sa bawat row. Karaniwang mas malayo ang nararating ng isang name sa loob ng session kaysa sa net move nito mula open hanggang close, at nasa loob ng galaw na iyon ang parehong bracket leg. Maaaring parehong maabot ang target at stop sa isang ordinaryong araw.
Gaano kadalas nahahawakan ang isang bracket leg?
Ang distansiya mula sa entry ang aktuwal na dial na kinokontrol ng trader. Itinatakda ng susunod na panel ang tanong sa tatlong fixed year ng SPY sessions. Sinusukat nito, para sa ilang distansiya mula sa opening print, kung anong bahagi ng mga session ang umabot sa ganoong kalalim pababa at kung anong bahagi ang umabot sa ganoong taas sa anumang oras ng araw.
Ang eksaktong SQL sa likod ng bawat numero
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.distSa quarter ng isang porsiyento mula sa open, 62.3% ng mga session ang nag-trade nang ganoon kalalim pababa at 64.7% ang umabot nang ganoon kataas. Kapag pinalawak ang distansiya sa 3%, bumababa ang downside figure sa 0.5%. Magkasabay na bumababa ang dalawang curve, at ito ang pangunahing trade-off sa bracket sizing. Ang tight stop ay stop na natatamaan sa mga ordinaryong araw. Ang distant target ay target na kadalasang nag-e-expire nang hindi nafi-fill.
Lagi bang nafi-fill ang stop loss sa stop price?
Hindi. Ang stop ay instruction na magpadala ng order kapag may print sa trigger price. Ang plain stop ay nagpapadala ng market order, kaya ang fill ay mapupunta kung nasaan ang order book sa sandaling iyon. Ang stop limit ay nagpapadala ng limit order sa presyong itinakda mo. Pinoprotektahan nito ang presyo, pero tinatanggap ang posibilidad na hindi ito ma-fill. Ang trade-off na ito ang paksa ng stop order kumpara sa stop limit order.
Ang overnight gap ang pinakamalinaw na halimbawa. Nananatili ang protective stop habang sarado ang exchange, at maaaring lumampas nang malaki sa trigger ang opening print. Narito ang ten halimbawa mula sa AAPL sa loob ng three and a half years:
Ang eksaktong SQL sa likod ng bawat numero
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 10Ang pinakamalaki sa mga ito ay may sukat na -9.45% noong Aug 5, 2024, at ang pang-sampu sa listahan ay may sukat pa rin na -2.96%. Ang protective stop na nakapuwesto saanman sa loob ng mga gap na iyon ay nag-convert sa opening print, hindi sa trigger price nito. Kung intraday range lamang ang gagamiting batayan sa bracket sizing, hindi nasusukat ang distansiyang iyon.
Saan talaga nakalagay ang OCO link?
Halos kailanman ay hindi sa exchange. Ang cancel link sa pagitan ng dalawang child order ay nasa order-management system ng broker, o isang layer pa palabas, sa trading platform na tumatakbo sa sarili mong machine. Dalawang ordinaryo at magkahiwalay na order ang nakikita ng exchange.
Tinutukoy ng lokasyong iyon kung ano ang magpapatuloy kapag nagkaroon ng outage. Patuloy na gumagana ang broker-side bracket kapag isinara ang laptop, dahil hawak ng servers ng broker ang parehong leg at ang cancel logic. Ang platform-side bracket, gaya ng ipinatutupad ng ilang charting application nang lokal, ay nangangailangan na tumatakbo at konektado ang application. May ilang platform na may simulated stop na nasa local memory lamang hanggang sa lumitaw ang trigger price. Kapag isinara ang laptop, hindi kailanman naipapadala ang stop na iyon.
Ganito rin ang tanong para sa sarili mong code. Ang stop na nasa loob lamang ng tumatakbong process ay walang maiiwang order sa book kapag huminto ang process. Sinasaklaw ng Circuit breakers para sa trading bots ang pattern para sa automated systems: ipagpalagay na namatay ang process sa pinakamasamang sandali, at pagkatapos ay tingnan kung ano pa ang gumagana sa broker.
Ang time in force ay para sa bawat leg
May sarili nitong time in force setting ang bawat leg. Karaniwan pero mahirap na kombinasyon ang day entry na may GTC children: nag-e-expire ang entry sa pagsara ng market, habang hindi kailanman nag-a-activate ang mga child order. Dahil dito, tahimik na walang ginagawa ang bracket sa susunod na umaga. Sa kabaligtarang pairing, nag-e-expire ang protection sa 4:00 p.m. ET habang overnight ang position.
Nag-iiba ang katangian ng order book sa labas ng regular hours. Binabucket ng panel sa ibaba ang SPY minute bars ayon sa ET clock time sa buong araw at sinusukat ang dalawang bagay kada half hour: ang average size ng one-minute move, sa basis points (ang one basis point ay one hundredth ng isang porsiyento), at ang median volume na na-print sa loob ng isang minuto.
Ang eksaktong SQL sa likod ng bawat numero
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_timeNaglalaman ang panel ng 32 half-hour bucket, mula 04:00 hanggang 19:30 ET. Basahin ito mula kaliwa pakanan upang makita ang pattern. Parehong malapit sa kanilang floor ang dalawang series sa premarket hours, mabilis na umaakyat patungo sa 09:30 open, at muling bumababa pagkalipas ng 16:00. Ang GTC stop na nakapuwesto sa 5 a.m. ay nasa manipis na bahagi ng curve, at ang stop-market fill sa manipis na order book ay maaaring mapunta nang malayo sa trigger.
FAQ
Ano ang pagkakaiba ng bracket order at OCO order?
Ang OCO ang pair mismo: dalawang resting order na may cancel link, kung saan inaalis ng fill sa isa ang isa pa. Ang bracket ay isang entry order na may naka-attach na OCO pair, at nagiging live lamang ang pair kapag na-fill ang entry. May OCO ang bawat bracket. Maraming OCO pair ang ginagamit nang mag-isa.
Gumagana pa ba ang bracket order kapag naka-off ang computer ko?
Depende ito kung saan nakalagay ang linkage. Ang broker-side bracket ay nananatili sa servers ng broker at patuloy na gumagana kapag nakasara ang platform. Ang platform-side o simulated bracket ay nangangailangan na tumatakbo at konektado ang application, at maaaring hindi makarating sa market ang child order kapag wala ito.
Ano ang nangyayari sa stop kapag bahagyang na-fill ang profit target?
Binabawasan ang stop ayon sa filled quantity sa halip na kanselahin. Kung na-fill ang 60 shares mula sa 200-share target, bumababa ang stop sa 140 shares, alinsunod sa position na bukas pa. Nagkakabisa lamang ang cancel kapag naisara na ang huling bahagi ng position.
Maaari ba akong gumamit ng bracket order sa premarket o after-hours trading?
Nag-iiba ang behavior ayon sa broker, at maraming broker ang nagra-route ng bracket children sa regular hours lamang. Partikular na madalas tanggihan o i-hold ang stop orders sa labas ng 9:30 a.m. hanggang 4:00 p.m. ET para sa US equities. Tinutukoy ng time-in-force setting ng bawat leg kung eligible ba talaga ang leg na iyon sa extended session.
Alam ba ng exchanges na linked ang dalawang order ko?
Hindi. Sa US equities, hawak ng broker o platform ang cancel link, at dalawang independent order ang natatanggap ng exchange. Ipinapadala ng system na may hawak ng link ang cancel message para sa natitirang leg matapos i-report ng kabilang leg ang fill nito.
May eksaktong SQL sa ilalim ng bawat panel dito. Para masukat ang range at gap risk ng isang name na sinusubaybayan mo, itanong ang kailangan mo sa plain English sa Strasmore terminal.