Strasmore Research
Deep Dives · Matt ConnorBy Matt Connor · · Updated 2026-08-08

交易條件代碼:如何決定高點、低點與收盤價

三個平台顯示同一檔股票的日內高點可能不同,交易條件代碼決定哪些成交可更新高低點、收盤價與成交量,讀懂代碼即可找出差異原因。

交易條件代碼是造成三個平台對同一檔股票顯示三種不同日內高點的原因,而它們可能全都沒有錯。綜合行情帶上的每筆成交都帶有這些標籤。這些標籤決定某筆成交是否可以更新最新成交價、當日高點與低點、正式開盤價、正式收盤價,以及綜合成交量總額。某筆成交即使是真實執行、價格也是真實成交價,仍可能無法更新上述幾乎所有欄位。

什麼是交易條件代碼?

交易條件代碼(trade condition code)也稱為成交條件(sale condition),是報送場所將交易報告送往行情帶時附加的標籤。價格與數量說明成交了什麼。條件代碼則說明這是哪一類報告:是否延遲送出、價格是否依其他成交計算而非當下議定、是否發生在正常交易時段之外,以及成交股數是否少於一個整股單位的100股。

每個代碼都附有一組資格旗標,而這正是幾乎沒有人看見的部分。每個代碼都會標示是否具備更新最新成交價、高點與低點、開盤價、收盤價及綜合成交量的資格。這些旗標彼此獨立。許多成交雖然不能觸及高點或低點,仍會計入成交量。因此,股票報導的成交股數與價格極值,是由彼此重疊但不完全相同的成交集合構成。除此之外,還有另一組並行的旗標:一組適用於綜合行情帶,另一組適用於個別市場中心,因為交易所自身的正式收盤價只會根據該交易所自身的成交計算。

交易條件代碼分成多個類別,但只有其中一類決定某筆成交可以更新哪些欄位。

查詢美國股票的交易條件代碼分類
每個數據背後的精確 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
Run this yourself

股票字典包含 8 個類別。最大的是 sale condition 類別,共有 40 個不同代碼。報價條件描述的是買價與賣價,而不是成交。指標類別則標示放空限制生效等狀態。成交條件類別才是承載資格旗標的類別,以下所有數字都取自這個類別。

行情帶上實際承載了什麼

下方面板擷取2026年6月一個固定的交易時段:從美東時間上午4:00盤前開市,到晚上8:00盤後交易結束的每筆 AAPL 成交,並依每筆成交所帶的成交條件分組。時間區間已固定寫入 SQL,因此這些數字只描述該日,不適用於其他交易日。單筆成交可能同時帶有多個代碼,也有許多成交完全沒有代碼,因此各欄位加總不會等於100%。

查詢單一 AAPL 交易時段:按成交條件分組的每筆成交
每個數據背後的精確 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
Run this yourself

當天最常見的標籤是 Odd Lot Trade,出現在該時段 65.83% 的成交筆數及 6.37% 的成交股數中。請逐列比較兩欄。若成交筆數占比遠高於成交量占比,表示該代碼標示的是小額成交。若成交量占比反過來較高,則表示該代碼集中在少數超大筆成交。計算成交筆數與計算成交股數回答的是不同問題,而交易條件代碼正是區分兩者的依據。

為什麼兩個平台會顯示不同的日內高點?

有四類成交,分別會被排除在不同欄位之外。

  • 延遲報送與非序列成交。 某筆交易在10:14議定,直到10:31才報送,會以非序列成交或以前一參考價格定價的標籤進入行情帶。這筆成交會計入成交量,但不能設定最新成交價;即使價格高於該時段其他所有成交,也不能推高當日高點。透過 大宗交易 協商完成的成交,以及由 暗池交易 場所透過交易報告機制送出的成交,經常屬於這一類。
  • 衍生定價成交。 平均價格成交或 VWAP 成交的價格,是根據其他多筆成交計算而來,而非當下議定的價格。這類成交不會納入最新成交價及價格極值,因為其顯示的價格從未以即時報價形式存在。
  • 零股成交。 成交股數少於100股。零股成交不具備更新最新成交價及高點、低點的資格,但會完整計入綜合成交量。直到2013年末,零股成交才開始報送至綜合行情帶。任何追溯到該時間點以前的成交量比較,都是在比較兩種不同定義的「成交量」;我們的 平均每日成交量 指南對此有詳細說明。
  • 延長交易時段與 form 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
Run this yourself

五檔股票的零股成交,占所有成交筆數的比例介於 46.8% 至 85.14%。這一欄與股價密切相關,因為固定金額的委託在股價較高的股票上能買到的股數較少。NVDA 的比例最高,其中 2.4% 的成交帶有延遲報送或衍生定價標籤,另有 3.53% 帶有延長交易時段標籤。這三類成交中的每一筆都是真實交易,價格也是真實成交價,但全部都不得設定高點與低點。

不能推高高點的成交

下一個面板使用相同的固定 AAPL 交易時段,將正常交易時段上午9:30至下午4:00切分為每15分鐘一個區間,並為每個區間繪製兩個高點。一條線取所有成交中的最高價。另一條線只取具備設定高點資格的成交中的最高價。

查詢同一 AAPL 交易時段高點的兩種版本,每15分鐘一段
每個數據背後的精確 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
Run this yourself

該時段以 09:30 開盤。行情帶高點為 $302.07,具備資格的高點則為 $302.07,並經過 26 個區間後收盤。具備資格的成交只是所有成交的子集合,因此資格線不可能高於行情帶線。若兩條線重疊,表示該15分鐘內的每筆成交都可以設定高點。若上方線條與下方線條分離,表示該區間至少有一筆成交價格高於最高的具備資格成交,而任何依資格規則建立的圖表都不會顯示這筆價格。

這個差距正是該不一致的實際原因。取所有成交最高價的資料來源會報導一個高點。套用資格旗標的資料來源會報導另一個高點。若資料來源同時排除盤前及收盤後交易時段,則會報導第三個高點。三者讀取的都是同一條行情帶。

資格層有多可靠?

可靠性有限。這些旗標屬於參考資料,而參考資料可能被修正。某家商業市場資料供應商曾修正其交易條件字典,重新分類單一成交條件設定正式開盤價與正式收盤價的資格。沒有任何交易被更改。所有受影響交易日的行情帶,在修正前後完全相同。改變的是查找表中的一個旗標;隨之改變的,則是所有依賴該字典的圖表與回測所顯示的正式開盤價與收盤價。

應將任何單一供應商的 OHLC 視為對行情帶的一種解讀,而不是行情帶本身的既定事實。當兩個來源出現差異時,應確認它們各自套用了哪些資格規則。延遲與綜合報價資料流會在資格問題之外,因時間差異再疊加另一層相同問題。

具權威性的交易條件代碼清單在哪裡?

行情帶由兩套全國市場系統計畫管理:適用於 NYSE 上市證券的 CTA Plan,以及適用於 Nasdaq 上市證券的 UTP Plan。兩者都會公布其管理行情帶所使用的成交條件規格。這些規格才是權威來源。包括上方面板使用的代碼編號在內,所有下游資料都是供應商將規格映射至自身編號系統的結果;一家供應商的代碼編號,不一定代表另一家供應商中的相同意義。應先理解類別,而不是記住編號。這些類別多年來大致穩定,但編號只是查找表,而查找表會被修改。

資料說明

上方面板中的成交條件分組,是根據字典本身建立,而不是使用硬編碼的代碼編號。每個分組都在成交條件類別中依名稱比對建立,包括零股、form T 與延長交易時段、非序列成交、前一參考價格、衍生定價、平均價格、價格變動及賣方等。開啟任一面板下方的 SQL,即可查看確切的比對模式。代碼並非互斥,單筆成交可能同時帶有多個代碼,因此各分組百分比會重疊,且不會加總至該交易時段。兩個 AAPL 面板及五檔股票面板都涵蓋2026年6月的一個固定交易時段,並已在 SQL 中鎖定,因此新交易時段出現後,本頁內容不會變動。

常見問題

什麼是交易條件代碼?

這是附加在綜合行情帶交易報告上的標籤,用來描述報告的類型,例如延遲報送、衍生定價、零股或延長交易時段。每個代碼都帶有旗標,標示該筆成交是否可以更新最新成交價、高點與低點、開盤價、收盤價及綜合成交量。

為什麼兩個網站會顯示同一檔股票的不同日內高點?

每個網站都會對同一批成交套用不同的資格規則。一個網站可能取所有已報送成交中的最高價,另一個可能排除交易條件代碼禁止其設定高點的成交,第三個則可能同時排除盤前及收盤後交易時段。它們讀取的都是同一條行情帶。

零股成交會計入成交量嗎?

會。零股是指少於100股的成交。零股成交會計入綜合成交量,但不具備設定最新成交價或當日高點、低點的資格。2013年末以前,零股成交完全不會報送至綜合行情帶,因此長期成交量比較會在該時間點跨越一次定義變更。

盤後交易會計入日內高點與低點嗎?

不會計入正常交易時段的高點與低點。盤前及收盤後成交會帶有延長交易時段或 form T 條件,不會納入正常交易時段的開盤價、高點、低點及收盤價,但仍會計入當日綜合成交量。

官方交易條件代碼清單在哪裡?

CTA Plan 與 UTP Plan 會分別公布其管理行情帶所使用的成交條件規格,這些文件具有權威性。供應商資料流會將條件重新編號至自身的編號空間,因此一家供應商的數字代碼,不一定對應另一家供應商的相同編號。


本頁每個面板都附有產生該面板的 SQL。開啟其中一個面板,替換 ticker 或日期,即可在 Strasmore terminal 上,為任何交易時段執行相同的交易條件分析。

#market data#trade conditions#consolidated tape#volume#ohlc