کدهای وضعیت معاملات در بازار سهام چیست؟
کدهای وضعیت معاملات تعیین میکنند کدام تراکنشها در نوار تجمیعی قیمت سقف، کف و حجم روزانه را تغییر میدهند. این برچسبها دلیل تفاوت قیمت در پلتفرمهای مختلف هستند.
کدهای وضعیت معاملات دلیل آن هستند که سه پلتفرم مختلف میتوانند سه سقف قیمتی روزانه متفاوت برای یک سهم واحد نشان دهند، بدون آنکه هیچکدام اشتباه کرده باشند. هر معامله (print) در نوار تجمیعی (consolidated tape) دارای این برچسبها است و این کدها تعیین میکنند که آیا یک معامله مجاز است قیمت پایانی، سقف و کف روزانه، قیمت رسمی بازگشایی، قیمت رسمی بسته شدن و حجم کل تجمیعی را بهروزرسانی کند یا خیر. یک معامله میتواند اجرایی واقعی با قیمتی واقعی باشد و با این حال، از بهروزرسانی تقریباً تمامی این فیلدها محروم بماند.
کدهای وضعیت معاملات چیست؟
کد وضعیت معامله که به آن «شرط فروش» نیز گفته میشود، برچسبی است که نهاد گزارشدهنده به گزارش معامله در مسیر ارسال به نوار قیمت (Tape) الصاق میکند. قیمت و حجم، مشخصات معامله را بیان میکنند، اما کد وضعیت نشان میدهد که این گزارش از چه نوعی است: آیا بهموقع ارسال شده است، آیا قیمت آن بهجای توافق لحظهای از سایر معاملات محاسبه شده، آیا خارج از ساعات عادی بازار انجام شده، یا حجم آن کمتر از یک «لات استاندارد» (100 سهم) بوده است.
به هر کد، مجموعهای از پرچمهای واجد شرایط بودن (Eligibility flags) متصل است که بخشی است که تقریباً هیچکس آن را نمیبیند. هر کد برای «آخرین قیمت»، «بالاترین و پایینترین قیمت»، «قیمت بازگشایی»، «قیمت بسته شدن» و «حجم تجمیعی» بهعنوان واجد شرایط یا غیرواجد شرایط علامتگذاری میشود. این پرچمها مستقل از یکدیگر عمل میکنند. بسیاری از معاملات ثبتشده که نمیتوانند بر سقف یا کف قیمت تأثیر بگذارند، همچنان در حجم کل لحاظ میشوند؛ به همین دلیل است که تعداد سهام گزارششده و سقف و کف قیمت یک سهم، از مجموعههای همپوشان اما متفاوتی از معاملات استخراج میشوند. مجموعه دومی از پرچمها نیز در کنار مجموعه اول وجود دارد: یک مجموعه بر نوار تجمیعی (Consolidated tape) نظارت دارد و مجموعه دیگر بر مرکز بازارِ منفرد، چرا که قیمت رسمی بسته شدنِ یک بورس، تنها از معاملات همان بورس محاسبه میشود.
کدهای وضعیت در قالب خانوادهها ارائه میشوند و تنها یک خانواده تعیین میکند که یک معامله مجاز به بهروزرسانی چه مواردی است.
کد دقیق SQL پشت هر عدد
SELECT
replaceAll(type, '_', ' ') AS condition_family,
countDistinct(id) AS codes
FROM global_markets.stocks_condition_codes
WHERE asset_class = 'stocks'
GROUP BY condition_family
ORDER BY codes DESCفرهنگ لغت سهام شامل 8 خانواده است. بزرگترین آنها خانواده sale condition با 40 کد متمایز است. کدهای مظنه (Quote conditions) بهجای معامله، قیمتهای خرید و فروش (Bid and offer) را توصیف میکنند. خانوادههای نشانگر، وضعیتهایی مانند اعمال محدودیت فروش استقراضی را مشخص میکنند. خانواده «شرط فروش»، همان خانوادهای است که پرچمهای واجد شرایط بودن را حمل میکند و تمام ارقام زیر از این خانواده استخراج شدهاند.
آنچه در واقع بر روی نوار (Tape) ثبت میشود
پنل زیر یک جلسه معاملاتی تثبیتشده در ژوئن 2026 را بررسی میکند: تمام معاملات (prints) نماد AAPL از زمان بازگشایی پیشازبازار در ساعت 4:00 بامداد تا پایان معاملات پسازبازار در ساعت 8:00 شب، که بر اساس شرط معاملاتی (sale condition) هر تراکنش دستهبندی شدهاند. این بازه زمانی در SQL ثابت شده است، بنابراین این ارقام منحصراً مربوط به همان روز هستند. یک تراکنش میتواند همزمان چندین کد داشته باشد و بسیاری از آنها نیز فاقد هرگونه کد هستند؛ به همین دلیل مجموع ستونها به 100 نمیرسد.
کد دقیق SQL پشت هر عدد
WITH
(SELECT count()
FROM global_markets.stocks_trades
WHERE ticker = 'AAPL'
AND sip_timestamp >= toDateTime('2026-06-17 08:00:00', 'UTC')
AND sip_timestamp < toDateTime('2026-06-18 00:00:00', 'UTC')) AS day_prints,
(SELECT sum(size)
FROM global_markets.stocks_trades
WHERE ticker = 'AAPL'
AND sip_timestamp >= toDateTime('2026-06-17 08:00:00', 'UTC')
AND sip_timestamp < toDateTime('2026-06-18 00:00:00', 'UTC')) AS day_shares
SELECT
multiIf(t.code = -1, 'Regular way (no code)',
c.code_name = '', concat('Unmapped code ', toString(t.code)),
c.code_name) AS condition_name,
round(100 * count() / day_prints, 2) AS pct_of_prints,
round(100 * sum(t.size) / day_shares, 2) AS pct_of_shares
FROM
(
SELECT
size,
arrayJoin(if(empty(conditions),
[toInt32(-1)],
arrayMap(x -> toInt32(x), conditions))) AS code
FROM global_markets.stocks_trades
WHERE ticker = 'AAPL'
AND sip_timestamp >= toDateTime('2026-06-17 08:00:00', 'UTC')
AND sip_timestamp < toDateTime('2026-06-18 00:00:00', 'UTC')
) AS t
LEFT JOIN
(
SELECT toInt32(id) AS code_id, any(name) AS code_name
FROM global_markets.stocks_condition_codes
WHERE asset_class = 'stocks'
AND type = 'sale_condition'
GROUP BY code_id
) AS c ON c.code_id = t.code
GROUP BY condition_name
ORDER BY pct_of_prints DESC
LIMIT 12رایجترین برچسب در آن روز Odd Lot Trade بود که در 65.83% از تراکنشهای آن جلسه و 6.37% از حجم سهام معاملهشده مشاهده شد. این دو ستون را سطر به سطر با یکدیگر مقایسه کنید. در مواردی که سهم تراکنشها از سهم حجم معاملات بیشتر است، آن کد نشاندهنده اجرای سفارشهای خرد است. در مواردی که عکس این موضوع صادق است، آن کد نشاندهنده تعداد اندکی تراکنش بسیار بزرگ است. شمارش تعداد تراکنشها و شمارش تعداد سهام، پاسخگوی پرسشهای متفاوتی هستند و کد شرط معاملاتی همان عاملی است که این دو را از هم تفکیک میکند.
چرا دو پلتفرم، سقف قیمتی روزانه متفاوتی را نشان میدهند؟
چهار نوع معامله (print) وجود دارد که هر کدام از زیرمجموعهای از فیلدها مستثنی میشوند.
- گزارششده با تأخیر و خارج از توالی. معاملهای که در ساعت 10:14 توافق شده و در 10:31 گزارش میشود، با برچسب «خارج از توالی» (out of sequence) در نوار قیمت ثبت میشود یا بر اساس یک مرجع قبلی قیمتگذاری میگردد. این معاملات در حجم کل لحاظ میشوند، اما نمیتوانند قیمت پایانی (last price) را تعیین کنند و حتی اگر قیمت آنها بالاتر از تمام معاملات دیگر جلسه باشد، نمیتوانند سقف قیمتی روز را جابهجا کنند. معاملات بلوکی توافقی و معاملاتی که از طریق تسهیلات گزارشدهی معاملات از دارک پولها (dark pool) هدایت میشوند، اغلب در این دسته قرار میگیرند.
- قیمتگذاری مشتقشده. معاملهای با قیمت میانگین یا پرشده بر اساس VWAP، قیمتی دارد که از محاسبات روی بسیاری از معاملات دیگر بهدست آمده و در آن لحظه توافق نشده است. این معاملات در قیمت پایانی و سقف و کف قیمتی لحاظ نمیشوند، زیرا قیمتی که نشان میدهند هرگز بهعنوان یک مظنه زنده (live quote) وجود نداشته است.
- لات خرد (Odd lot). کمتر از 100 سهم. لاتهای خرد واجد شرایط تعیین قیمت پایانی، سقف و کف قیمتی نیستند، اگرچه بهطور کامل در حجم تجمیعی (consolidated volume) شمارش میشوند. این معاملات تا اواخر سال 2013 اصلاً به نوار تجمیعی گزارش نمیشدند. هرگونه مقایسه حجمی که به پیش از آن تاریخ بازگردد، در واقع مقایسه دو تعریف متفاوت از یک واژه است که راهنمای ما در مورد میانگین حجم روزانه بهطور مفصل به آن پرداخته است.
- ساعات معاملاتی تمدیدشده و فرم T. معاملات پیش از گشایش و پس از بسته شدن بازار، برچسبگذاری شده و از قیمتهای بازگشایی، سقف، کف و بسته شدن جلسه عادی کنار گذاشته میشوند، در حالی که همچنان در حجم تجمیعی شمارش میگردند. پلتفرمی که این معاملات را نمودار میکند، بازه روزانه متفاوتی نسبت به پلتفرمی که آنها را نمایش نمیدهد نشان میدهد؛ این همان سازوکاری است که باعث میشود معاملات پس از ساعت و پیش از بازار در یک نمودار ظاهر شوند و در دیگری خیر.
در اینجا سهم هر یک از این دستهها از کل جلسه برای پنج نماد شناختهشده در یک روز مشخص آمده است.
کد دقیق SQL پشت هر عدد
WITH
(SELECT groupArray(toInt32(id))
FROM global_markets.stocks_condition_codes
WHERE asset_class = 'stocks'
AND type = 'sale_condition'
AND name ILIKE '%odd lot%') AS odd_lot_codes,
(SELECT groupArray(toInt32(id))
FROM global_markets.stocks_condition_codes
WHERE asset_class = 'stocks'
AND type = 'sale_condition'
AND multiSearchAnyCaseInsensitive(name,
['form t', 'extended trading hours'])) AS extended_codes,
(SELECT groupArray(toInt32(id))
FROM global_markets.stocks_condition_codes
WHERE asset_class = 'stocks'
AND type = 'sale_condition'
AND multiSearchAnyCaseInsensitive(name,
['out of sequence', 'prior reference', 'derivatively priced',
'average price', 'price variation', 'seller'])
AND NOT multiSearchAnyCaseInsensitive(name,
['form t', 'extended trading hours'])) AS late_or_derived_codes
SELECT
ticker,
round(100 * countIf(hasAny(conditions, odd_lot_codes)) / count(), 2) AS odd_lot_pct,
round(100 * countIf(hasAny(conditions, late_or_derived_codes)) / count(), 2) AS late_or_derived_pct,
round(100 * countIf(hasAny(conditions, extended_codes)) / count(), 2) AS extended_hours_pct
FROM global_markets.stocks_trades
WHERE ticker IN ('AAPL', 'KO', 'MSFT', 'NVDA', 'SPY')
AND sip_timestamp >= toDateTime('2026-06-17 08:00:00', 'UTC')
AND sip_timestamp < toDateTime('2026-06-18 00:00:00', 'UTC')
GROUP BY ticker
ORDER BY odd_lot_pct DESCمعاملات لات خرد بین 46.8% تا 85.14% از کل معاملات این پنج نماد را تشکیل دادند. این ستون همبستگی نزدیکی با قیمت سهام دارد، زیرا یک سفارش با مبلغ ثابت در نمادی با قیمت بالاتر، تعداد سهام کمتری خریداری میکند. نماد NVDA در صدر این فهرست قرار گرفت، بهطوری که 2.4% از معاملات آن دارای برچسب تأخیری یا قیمتگذاری مشتقشده و 3.53% دارای برچسب ساعات تمدیدشده بودند. هر معامله در هر سه دسته، یک معامله واقعی با قیمت واقعی است، اما همگی آنها از تعیین سقف و کف قیمتی منع شدهاند.
معاملهای که سقف قیمت را جابهجا نمیکند
پنل بعدی، همان جلسه معاملاتی AAPL را که در آن قیمت تثبیت شده بود، در بازههای زمانی پانزدهدقیقهای دستهبندی میکند و برای هر بازه، دو سقف قیمتی ترسیم میکند. یک خط، بالاترین قیمت ثبتشده در هر معامله (print) را نشان میدهد. خط دیگر، بالاترین قیمت را در میان معاملاتی نشان میدهد که شرایط آنها برای تعیین سقف قیمت واجد صلاحیت است.
کد دقیق SQL پشت هر عدد
WITH
(SELECT groupArray(toInt32(id))
FROM global_markets.stocks_condition_codes
WHERE asset_class = 'stocks'
AND type = 'sale_condition'
AND multiSearchAnyCaseInsensitive(name,
['odd lot', 'form t', 'extended trading hours', 'out of sequence',
'prior reference', 'derivatively priced', 'average price',
'price variation', 'seller'])) AS not_high_low_codes
SELECT
formatDateTime(toStartOfFifteenMinutes(toTimeZone(sip_timestamp, 'America/New_York')), '%H:%i') AS et_time,
round(toFloat64(max(price)), 2) AS tape_high,
round(toFloat64(maxIf(price, NOT hasAny(conditions, not_high_low_codes))), 2) AS eligible_high
FROM global_markets.stocks_trades
WHERE ticker = 'AAPL'
AND sip_timestamp >= toDateTime('2026-06-17 08:00:00', 'UTC')
AND sip_timestamp < toDateTime('2026-06-18 00:00:00', 'UTC')
AND (toHour(toTimeZone(sip_timestamp, 'America/New_York')) * 60
+ toMinute(toTimeZone(sip_timestamp, 'America/New_York'))) >= 570
AND (toHour(toTimeZone(sip_timestamp, 'America/New_York')) * 60
+ toMinute(toTimeZone(sip_timestamp, 'America/New_York'))) < 960
GROUP BY et_time
HAVING countIf(NOT hasAny(conditions, not_high_low_codes)) > 0
ORDER BY et_timeجلسه معاملاتی در ساعت 09:30 با سقف قیمت ثبتشده در نوار (tape) برابر با $302.07 در مقابل سقف قیمت واجد صلاحیت $302.07 آغاز میشود و تا زمان بسته شدن بازار، 26 بازه پانزدهدقیقهای را طی میکند. خط واجد صلاحیت هرگز نمیتواند بالاتر از خط نوار قرار گیرد، زیرا معاملات واجد صلاحیت، زیرمجموعهای از کل معاملات هستند. در نقاطی که این دو خط بر یکدیگر منطبق هستند، هر معاملهای که در آن بازه پانزدهدقیقهای انجام شده، مجاز به تعیین سقف قیمت بوده است. در نقاطی که خط بالایی فاصله میگیرد، حداقل یک معامله در آن بازه با قیمتی بالاتر از بالاترین قیمت واجد صلاحیت انجام شده است و هیچ نموداری که بر اساس قوانین واجد صلاحیت ساخته شده باشد، هرگز آن را نشان نخواهد داد.
این شکاف، پاسخ صادقانهای به این اختلاف است. منبعی که حداکثر قیمتِ هر معامله را در نظر میگیرد، یک سقف قیمت گزارش میدهد. منبعی که پرچمهای واجد صلاحیت را اعمال میکند، سقف دیگری را گزارش میدهد. منبعی که معاملات پیش از گشایش و پس از بسته شدن بازار را نیز حذف میکند، سقف سومی را گزارش میدهد. هر سه منبع، یک نوار معاملاتی واحد را میخوانند.
لایه واجد شرایط بودن تا چه حد قابل اتکا است؟
نازک. پرچمها (flags) دادههای مرجع هستند و دادههای مرجع اصلاح میشوند. یکی از ارائهدهندگان تجاری دادههای بازار، اصلاحیهای برای فرهنگ لغت شرایط خود ارسال کرد که طبق آن، واجد شرایط بودن یک «شرط معامله» برای تعیین قیمت رسمی بازگشایی و قیمت رسمی بسته شدن، بازتعریف شد. هیچ معاملهای تغییر نکرد. نوار ثبت معاملات (tape) برای تمام روزهای تحت تأثیر، پیش و پس از این اصلاحیه کاملاً یکسان بود. آنچه تغییر کرد، یک پرچم در جدول جستجو بود و به تبع آن، قیمتهای رسمی بازگشایی و بسته شدنی که تمام نمودارها و بکتستهای پاییندستیِ آن فرهنگ لغت نمایش میدادند، تغییر یافت.
هر OHLC ارائهشده توسط یک فروشنده واحد را به عنوان یک قرائت از نوار ثبت معاملات در نظر بگیرید، نه به عنوان یک حقیقت مطلق درباره آن. هنگامی که دو منبع با یکدیگر اختلاف دارند، بپرسید هر کدام از آنها چه قوانینی را برای واجد شرایط بودن اعمال کردهاند. فیدهای مظنه تأخیری و تجمیعشده نسخه دومی از همین مشکل را بر روی لایه قبلی انباشته میکنند، با این تفاوت که تمرکز آنها بر زمانبندی است تا واجد شرایط بودن.
محل دسترسی به فهرست رسمی کدهای شرایط معاملات
نوار معاملات (tapes) تحت دو طرح سیستم ملی بازار اجرا میشوند: طرح CTA برای اوراق بهادار فهرستشده در NYSE و طرح UTP برای اوراق بهادار فهرستشده در Nasdaq؛ هر یک از این طرحها مشخصات شرایط معاملات را برای نوار تحت مدیریت خود منتشر میکنند. این مشخصات، مرجع اصلی و معتبر هستند. تمامی دادههای پاییندستی، از جمله شناسههای عددی موجود در پنلهای بالا، حاصل نگاشتِ ارائهدهندگان داده بر اساس شمارهگذاری اختصاصی خودشان است و یک کد شناسایی از یک ارائهدهنده، لزوماً به معنای همان کد در ارائهدهندهای دیگر نیست. بهجای حفظ کردن اعداد، دستهبندیها را بیاموزید. دستهبندیها سالهاست که ثابت ماندهاند، اما اعداد در جداول جستوجو قرار دارند و این جداول ممکن است ویرایش شوند.
یادداشتهای داده
دستههای شرایط (condition buckets) در پنلهای بالا، بهجای استفاده از شناسههای عددی سختکد شده، مستقیماً از خودِ فرهنگ لغت استخراج شدهاند. هر دسته، یک تطبیق نام در خانواده شرایط معامله است (معاملات خرد یا odd lot، معاملات Form T و ساعات معاملاتی تمدیدشده، معاملات خارج از توالی، قیمت مرجع قبلی، قیمتگذاری مشتق، قیمت میانگین، تغییر قیمت، فروشنده). برای مطالعه الگوهای دقیق، SQL زیر هر پنل را باز کنید. کدها با یکدیگر مانعهالجمع نیستند و یک معامله (print) میتواند چندین کد را همزمان داشته باشد؛ بنابراین درصدهای هر دسته با هم همپوشانی دارند و مجموع آنها لزوماً برابر با کل جلسه معاملاتی نیست. هر دو پنل AAPL و پنل پنجسهمی، یک جلسه معاملاتی ثابت در ژوئن 2026 را پوشش میدهند که در SQL تثبیت شده است، بنابراین با آغاز جلسات جدید، هیچچیز در این صفحه تغییر نمیکند.
پرسشهای متداول
کد وضعیت معامله چیست؟
این کد، برچسبی است که به گزارش معامله در نوار گزارشهای تجمیعی (consolidated tape) الصاق میشود و نوع گزارش را مشخص میکند؛ برای نمونه، گزارش دیرهنگام، قیمتگذاری مشتق، لات خرد (odd lot) یا معاملات خارج از ساعات عادی بازار. هر کد دارای نشانگرهایی است که تعیین میکند آیا آن معامله مجاز به بهروزرسانی آخرین قیمت، سقف و کف قیمت، قیمت بازگشایی، قیمت بسته شدن و حجم تجمیعی هست یا خیر.
چرا دو وبسایت مختلف، سقف قیمت روزانه متفاوتی را برای یک سهم نشان میدهند؟
هر وبسایت مجموعهای از قوانین واجد شرایط بودن را برای گزارشهای معاملاتی یکسان اعمال میکند. یکی ممکن است بالاترین قیمت هر معامله گزارششده را در نظر بگیرد، دیگری ممکن است معاملاتی را که کدهای وضعیت آنها مانع از تعیین سقف قیمت میشود حذف کند، و سومی ممکن است معاملات پیشگشایش و پسازبسته شدن بازار را نیز کنار بگذارد. همه آنها در حال خواندن نوار گزارش یکسانی هستند.
آیا معاملات لات خرد (odd lot) در حجم معاملات لحاظ میشوند؟
بله. لات خرد، به معنای کمتر از 100 سهم، در حجم تجمیعی لحاظ میشود، اما واجد شرایط تعیین آخرین قیمت یا سقف و کف قیمت روز نیست. معاملات لات خرد تا پیش از اواخر سال 2013 اصلاً به نوار گزارش تجمیعی مخابره نمیشدند؛ بنابراین مقایسههای بلندمدت حجم معاملات، از آن نقطه به بعد با تغییر در تعریف مواجه است.
آیا معاملات خارج از ساعات عادی بازار در سقف و کف قیمت روزانه لحاظ میشوند؟
خیر، در سقف و کف قیمت جلسه معاملاتی عادی لحاظ نمیشوند. گزارشهای پیشگشایش و پسازبسته شدن بازار دارای کد وضعیت «ساعات تمدیدشده» یا «فرم T» هستند که آنها را از قیمت بازگشایی، سقف، کف و قیمت بسته شدن جلسه عادی خارج میکند، در حالی که همچنان در حجم تجمیعی روزانه محاسبه میشوند.
فهرست رسمی کدهای وضعیت معامله کجا قرار دارد؟
طرح CTA و طرح UTP مشخصات وضعیت معاملات را برای نوارهایی که مدیریت میکنند منتشر مینمایند و آن اسناد مرجع رسمی هستند. ارائهدهندگان داده (Vendor feeds)، کدها را در فضای شناسهای اختصاصی خود بازشماری میکنند؛ بنابراین یک کد عددی از یک ارائهدهنده لزوماً با همان عدد در ارائهدهنده دیگر مطابقت ندارد.
هر پنل در اینجا به همراه کدهای SQL که آن را تولید کردهاند ارائه میشود. یکی را باز کنید، تیکر (ticker) یا تاریخ را تغییر دهید و همان تحلیل وضعیت را برای هر جلسهای در پایانه Strasmore اجرا کنید.