市价单与限价单:真实成本比较
市价单追求立即成交,限价单控制价格但可能不成交。用真实美元报价和股票代码比较两者成本,了解快速行情、大额订单及期权交易中的选择。
市价单的含义是“立即按当时可获得的最佳价格成交”;限价单的含义是“只有达到我的价格或更优价格才成交”。这一差异会决定您的成交价格、交易能否完成,以及可能出现的问题。本指南使用真实报价数据,以美元和真实 ticker 衡量这一取舍,并分析其影响最明显的场景:行情快速变动、大额订单、期权交易和盘前盘后交易时段。
什么是市价单?
市价单会立即与市场另一侧的最佳报价成交:买单按卖价成交,卖单按买价成交。对于上市股票中的普通散户订单规模,成交几乎可以保证,但成交价格无法保证。相对于买卖价中点,市价单为即时成交所支付的成本,就是一半的买卖价差。屏幕上显示的报价是NBBO,即所有交易所中的最佳买价和卖价。报价会不断变化:您的订单会按照订单到达时有效的NBBO成交,而不是按照您点击下单时的报价成交。
什么是限价单?
限价单设定了买入价格上限或卖出价格下限。将买入限价设为50.00美元,您支付的价格就不会高于50.00美元。但如果市场价格始终未达到您的限价,交易就不会执行,订单只会继续等待。有一种中间设置值得关注:可成交限价单,即将买入限价设在当前卖价或略高于当前卖价。通常情况下,它会像市价单一样立即成交;如果订单传输期间报价突然上升,限价则会发挥价格上限的作用。
订单等待期间的处理方式由两个设置决定。有效期:未成交的当日有效订单会在收盘时自动取消;撤销前有效(GTC)订单会跨交易日持续挂单,直到成交、被取消,或达到券商设定的有效期限(通常为60至90天)。部分成交:限价单可以分批执行。例如,一笔100股的订单可能有40股按您的限价成交,剩余60股继续挂单。
止损单与止损限价单
订单界面还列出了另外两种由上述订单构成的类型。止损单在股票交易价格达到或穿过您设定的止损价前保持不激活;触发后,它会转为普通市价单。经典的“止损卖单”通常设在当前价格下方。需要注意的是,触发后的订单是市价单。如果股票出现跳空,实际成交价可能远低于止损价。止损限价单触发后则转为限价单,同时设定止损价和限价。这样可以限制退出交易时最差的成交价格,但如果价格下跌过快,订单也可能始终无法成交。
即时交易成本,以美元计
跨越买卖价差的成本可以从报价记录中量化。以下数据覆盖一个完整的正常交易时段和五只股票,列出报价中位价差,以及在100股交易中,跨越价差一半所需的成本:
| ticker | 价差(美分) | 100股半价差成本(美元) | 每秒报价更新次数 |
|---|---|---|---|
| SPY | 2 | 1 | 176.8 |
| IWM | 2 | 1 | 138.8 |
| AAPL | 3 | 1.5 | 53.6 |
| KO | 1 | 0.5 | 16.2 |
| CATO | 5 | 2.5 | 0 |
每个数字背后的完整 SQL
SELECT ticker,
round(quantileExactIf(0.5)(toFloat64(ask_price - bid_price) * 100, bid_price > 0 AND ask_price > bid_price), 1) AS spread_cents,
round(quantileExactIf(0.5)(toFloat64(ask_price - bid_price) * 50, bid_price > 0 AND ask_price > bid_price), 2) AS half_spread_cost_100sh_usd,
round(count() / 23400, 1) AS quote_updates_per_sec
FROM global_markets.cache_stocks_quotes
WHERE ticker IN ('SPY', 'IWM', 'AAPL', 'KO', 'CATO')
AND sip_timestamp >= '2026-07-08 04:00:00'
AND sip_timestamp < '2026-07-09 04:00:00'
AND toTimeZone(sip_timestamp, 'America/New_York') >= toDateTime('2026-07-08 09:30:00', 'America/New_York')
AND toTimeZone(sip_timestamp, 'America/New_York') < toDateTime('2026-07-08 16:00:00', 'America/New_York')
GROUP BY ticker
ORDER BY quote_updates_per_sec DESC先看两端。SPY是样本中交易最活跃的股票,每秒更新全国最佳报价约176.8次,报价价差中位数为2美分。在100股交易中跨越这一价差,成本约为$1。另一端的CATO几乎没有报价,价差中位数为5美分;同样交易100股,跨越一半价差的成本接近$2.5。对于流动性较高的大盘股,即时交易成本微不足道;对于成交清淡的股票,成本则相当可观,而且屏幕上的报价可能已经过时数分钟。全市场层面的经济含义,取决于交易一只股票的成本。
订单传递期间,价格会发生变化
市价单的真正风险不是您能看到的买卖价差,而是您无法预见的价格变动。在交易活跃的股票中,报价每秒更新数百次。而当大多数人集中使用市价单时,价格变化最快:这通常发生在开盘后不久。以下是同一交易日内,SPY每分钟最高价与最低价平均区间的变化:
| 开盘时段(美分) | 午盘时段(美分) | 收盘时段(美分) | 开盘对比午盘 |
|---|---|---|---|
| 70.3 | 35.8 | 38.8 | 2 |
每个数字背后的完整 SQL
SELECT round(avgIf(range_cents, et_minute >= '09:30' AND et_minute < '09:45'), 1) AS open_window_cents,
round(avgIf(range_cents, et_minute >= '12:00' AND et_minute < '13:00'), 1) AS midday_window_cents,
round(avgIf(range_cents, et_minute >= '15:45' AND et_minute < '16:00'), 1) AS close_window_cents,
round(avgIf(range_cents, et_minute >= '09:30' AND et_minute < '09:45')
/ avgIf(range_cents, et_minute >= '12:00' AND et_minute < '13:00'), 1) AS open_vs_midday
FROM (
SELECT formatDateTime(toTimeZone(window_start, 'America/New_York'), '%H:%i') AS et_minute,
toFloat64(high - low) * 100 AS range_cents
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPY'
AND window_start >= '2026-07-08 04:00:00'
AND window_start < '2026-07-09 04:00:00'
)
WHERE et_minute >= '09:30' AND et_minute < '16:00'开盘后的前十五分钟内,SPY平均每分钟的价格波动达到70.3美分;午盘一小时内为每分钟35.8美分,收盘前十五分钟内为38.8美分。上午9:31提交的市价单,其目标价格的移动速度约为中午提交订单时的2倍。开盘后的最初几分钟内,买卖价差也最宽,详见为什么开盘时买卖价差会扩大。
快速行情如何改变权衡
2026年7月8日是一个普通交易日;而在异常行情日,这种权衡会重新定价。2025年4月9日处于当年春季关税消息引发的波动期中段。以下两天均为 SPY,采用相同口径:
| 时段 | 时段波动范围(%) | 分钟平均波动范围(美分) | 最差分钟波动范围(美分) | 价差中位数(美分) |
|---|---|---|---|---|
| 2026-07-08 | 0.9 | 37.2 | 133 | 2 |
| 2025-04-09 | 10.8 | 156.4 | 1638 | 5 |
每个数字背后的完整 SQL
WITH quotes AS (
SELECT toDate(toTimeZone(sip_timestamp, 'America/New_York')) AS d,
round(quantileDeterministicIf(0.5)(toFloat64(ask_price - bid_price) * 100, cityHash64(ticker, sip_timestamp), bid_price > 0 AND ask_price > bid_price), 1) AS median_spread_cents
FROM global_markets.cache_stocks_quotes
WHERE ticker = 'SPY'
AND ((sip_timestamp >= '2026-07-08 04:00:00' AND sip_timestamp < '2026-07-09 04:00:00')
OR (sip_timestamp >= '2025-04-09 04:00:00' AND sip_timestamp < '2025-04-10 04:00:00'))
AND (toHour(toTimeZone(sip_timestamp, 'America/New_York')) * 60 + toMinute(toTimeZone(sip_timestamp, 'America/New_York'))) BETWEEN 570 AND 959
GROUP BY d
HAVING countIf(bid_price > 0 AND ask_price > bid_price) > 0
),
bars AS (
SELECT toDate(toTimeZone(window_start, 'America/New_York')) AS d,
round(avg(toFloat64(high - low) * 100), 1) AS avg_minute_range_cents,
round(max(toFloat64(high - low) * 100), 0) AS worst_minute_range_cents,
round((max(high) - min(low)) / argMin(toFloat64(open), window_start) * 100, 1) AS session_range_pct
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPY'
AND ((window_start >= '2026-07-08 04:00:00' AND window_start < '2026-07-09 04:00:00')
OR (window_start >= '2025-04-09 04:00:00' AND window_start < '2025-04-10 04:00:00'))
AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959
GROUP BY d
)
SELECT formatDateTime(quotes.d, '%Y-%m-%d') AS session,
bars.session_range_pct,
bars.avg_minute_range_cents,
bars.worst_minute_range_cents,
quotes.median_spread_cents
FROM quotes INNER JOIN bars ON quotes.d = bars.d
ORDER BY quotes.d DESC在 2025-04-09,SPY在一个常规交易时段内从 10.8%低点升至高点,而平静交易日为 0.9%;每分钟平均波动幅度为 156.4美分,对比之下为 37.2美分;最剧烈的每分钟波动为 1638,对比之下为 133。买卖价差也有所扩大,中位数为 5美分,而另一日为 2美分,但价格波动远大于价差:在这样的交易日,市价单的主要成本,是从下单到成交期间价格移动的距离。此时,限价单的价格上限才真正发挥作用;同时,挂出的限价单也最有可能较早成交,随后价格继续运行,使交易者错失后续行情。
更大订单与显示报价
报价既包含价格,也包含数量,即最佳卖价上实际提供的股票数量。若市价单大于显示数量,就可能将其全部成交,剩余部分则在更高的后续价格成交,也就是沿着订单簿逐档吃单。在同一交易时段的显示数据中:
| ticker | 最小显示股数 | 卖方股数中位数 | 覆盖1000股的比例(%) |
|---|---|---|---|
| IWM | 40 | 360 | 7.8 |
| KO | 100 | 300 | 2.6 |
| SPY | 40 | 160 | 1 |
| CATO | 100 | 100 | 5.6 |
| AAPL | 40 | 80 | 0.6 |
每个数字背后的完整 SQL
SELECT ticker,
minIf(ask_size, bid_price > 0 AND ask_price > bid_price) AS smallest_displayed_shares,
round(quantileDeterministicIf(0.5)(toFloat64(ask_size), cityHash64(ticker, sip_timestamp), bid_price > 0 AND ask_price > bid_price), 0) AS median_ask_shares,
round(countIf(ask_size >= 1000 AND bid_price > 0 AND ask_price > bid_price) / countIf(bid_price > 0 AND ask_price > bid_price) * 100, 1) AS pct_covering_1000_shares
FROM global_markets.cache_stocks_quotes
WHERE ticker IN ('SPY', 'IWM', 'AAPL', 'KO', 'CATO')
AND sip_timestamp >= '2026-07-08 04:00:00' AND sip_timestamp < '2026-07-09 04:00:00'
AND (toHour(toTimeZone(sip_timestamp, 'America/New_York')) * 60 + toMinute(toTimeZone(sip_timestamp, 'America/New_York'))) BETWEEN 570 AND 959
GROUP BY ticker
HAVING countIf(bid_price > 0 AND ask_price > bid_price) > 0
ORDER BY median_ask_shares DESC, ticker ASC在这组股票中,IWM的盘口深度最大,最佳卖价处的股票数量中位数为360股;AAPL仅为80股。五只股票中,最佳卖价处的显示卖盘都未能在至少十分之一的时间内覆盖1,000股订单,最高为7.8%的报价记录,最低为0.6%。显示数量只是底线,并不代表全部可交易库存。最佳价格之间可能存在隐藏委托,流动性充足的订单簿也会在数毫秒内补充。但市价单的成交保证只覆盖显示数量:超过该数量后,订单会继续成交于订单簿中的后续价格;限价单则设定了价格边界,订单不会越过该边界。
期权:同样的权衡,但影响更大
期权交易者对此感受最深:合约价格较低,因此几美分的买卖价差占支付金额的比例要高得多。在同一交易时段内,将所有有实时双边报价、到期日为2026年的Apple期权与Apple股票进行比较:
| 期权价差中位数(基点) | 期权价差中位数(美分) | 股票价差中位数(基点) | 期权与股票比率 | 期权报价更新次数(百万) |
|---|---|---|---|---|
| 606 | 65 | 1 | 606 | 31 |
每个数字背后的完整 SQL
WITH opt AS (
SELECT round(quantileDeterministic(0.5)((toFloat64(ask_price) - toFloat64(bid_price)) / ((toFloat64(ask_price) + toFloat64(bid_price)) / 2) * 10000, cityHash64(ticker, sip_timestamp)), 0) AS option_median_spread_bps,
round(quantileDeterministic(0.5)(toFloat64(ask_price - bid_price) * 100, cityHash64(ticker, sip_timestamp)), 0) AS option_median_spread_cents,
round(count() / 1e6, 0) AS option_quote_updates_millions
FROM global_markets.cache_options_quotes
WHERE ticker >= 'O:AAPL26' AND ticker < 'O:AAPL27'
AND sip_timestamp >= '2026-07-08 04:00:00' AND sip_timestamp < '2026-07-09 04:00:00'
AND (toHour(toTimeZone(sip_timestamp, 'America/New_York')) * 60 + toMinute(toTimeZone(sip_timestamp, 'America/New_York'))) BETWEEN 570 AND 959
AND bid_price > 0 AND ask_price > bid_price
),
stk AS (
SELECT round(quantileDeterministic(0.5)((toFloat64(ask_price) - toFloat64(bid_price)) / ((toFloat64(ask_price) + toFloat64(bid_price)) / 2) * 10000, cityHash64(ticker, sip_timestamp)), 1) AS stock_median_spread_bps
FROM global_markets.cache_stocks_quotes
WHERE ticker = 'AAPL'
AND sip_timestamp >= '2026-07-08 04:00:00' AND sip_timestamp < '2026-07-09 04:00:00'
AND (toHour(toTimeZone(sip_timestamp, 'America/New_York')) * 60 + toMinute(toTimeZone(sip_timestamp, 'America/New_York'))) BETWEEN 570 AND 959
AND bid_price > 0 AND ask_price > bid_price
)
SELECT opt.option_median_spread_bps,
opt.option_median_spread_cents,
stk.stock_median_spread_bps,
round(opt.option_median_spread_bps / stk.stock_median_spread_bps, 0) AS option_to_stock_ratio,
opt.option_quote_updates_millions
FROM opt CROSS JOIN stkApple期权报价的价差中位数为自身中间价的606个基点,约合每份合约65美分;Apple股票的价差为1个基点,前者约为后者的606倍。期权市价单一次成交所承担的损失,往往相当于股票市价单数百次成交的损失;有经验的期权交易者通常使用限价单,并围绕中间价逐步成交。完整的成本分析见交易期权需要多少钱。
常规交易时段之外,限价单往往是唯一选择
许多券商不接受盘前和盘后交易时段的普通市价单,只接受限价单。报价记录显示了这一政策背后的市场条件,涵盖同一天的三个时段:
| 时段窗口 | SPY价差(美分) | AAPL价差(美分) | KO价差(美分) |
|---|---|---|---|
| 1. Pre-market (4:00-9:30) | 7 | 32 | 28 |
| 2. Regular (9:30-16:00) | 2 | 3 | 1 |
| 3. After-hours (16:00-20:00) | 6 | 20 | 30 |
每个数字背后的完整 SQL
SELECT multiIf(et_min < 570, '1. Pre-market (4:00-9:30)', et_min < 960, '2. Regular (9:30-16:00)', '3. After-hours (16:00-20:00)') AS session_window,
round(quantileDeterministicIf(0.5)(spread_cents, det, ticker = 'SPY'), 1) AS spy_spread_cents,
round(quantileDeterministicIf(0.5)(spread_cents, det, ticker = 'AAPL'), 1) AS aapl_spread_cents,
round(quantileDeterministicIf(0.5)(spread_cents, det, ticker = 'KO'), 1) AS ko_spread_cents
FROM (
SELECT ticker,
toHour(toTimeZone(sip_timestamp, 'America/New_York')) * 60 + toMinute(toTimeZone(sip_timestamp, 'America/New_York')) AS et_min,
toFloat64(ask_price - bid_price) * 100 AS spread_cents,
cityHash64(ticker, sip_timestamp) AS det
FROM global_markets.cache_stocks_quotes
WHERE ticker IN ('SPY', 'AAPL', 'KO')
AND sip_timestamp >= '2026-07-08 04:00:00' AND sip_timestamp < '2026-07-09 04:00:00'
AND bid_price > 0 AND ask_price > bid_price
)
WHERE et_min >= 240 AND et_min < 1200
GROUP BY session_window
HAVING countIf(ticker = 'SPY') > 0 AND countIf(ticker = 'AAPL') > 0 AND countIf(ticker = 'KO') > 0
ORDER BY session_window可口可乐在常规交易时段的中位买卖价差为 1 美分,盘前为 28 美分,收盘后为 30 美分;苹果的价差从 3 美分扩大至 32 美分;就连 SPY 的价差也从 2 美分扩大至 7 美分。参与者更少,订单簿更薄,延长交易时段交易中不设价格上限的订单最容易以不利价格成交,券商规则正体现了这一点。
哪种订单类型适合哪种情形
这些要点最终可归纳为一份检查清单,而不是投资建议。关键在于:在哪些情形下,某类订单的弱点代价较低,哪些情形下代价较高:
- 高流动性大盘股、行情平稳、订单规模较小。 买卖价差的成本微不足道;可成交限价单兼具市价单的即时成交特性,并设定了价格上限。
- 流动性低的股票。 买卖报价可能很宽,且可能已数分钟未更新;限价单可以在过时报价无法反映价格时发现价格。
- 行情快速变动时,例如开盘、新闻发布后的成交,或2025年4月9日这样的交易日。价格波动风险远高于价差风险;限价单可将风险封顶,但代价是可能无法成交。
- 订单规模大于盘口显示数量。 报价的保证只覆盖显示的股票数量;限价单则设定您能够接受的最差价格。
- 期权,以及常规交易时段之外的股票交易。 限价单是专业交易者的默认选择,而且在盘后时段,通常也是券商唯一接受的订单类型。
一句话总结:市价单保证成交,但不保证价格;限价单保证价格,但不保证成交;可成交限价单在争取立即成交的同时,将潜在损失控制在设定范围内。
市价单与限价单常见问题
市价单是否保证成交?
对于常规交易时段内、规模普通的上市股票散户订单,实际上可以认为会成交,因为市场上通常总有可供成交的最佳卖价。得到保证的是成交,而不是价格:对于成交清淡或波动快速的股票,成交价可能明显偏离您刚看到的最新报价。
什么是止损限价单?它与限价单有何不同?
限价单在您提交后立即生效;止损限价单在股票交易价格达到或穿过止损价之前处于未激活状态,触发后才会按照您设定的限价作为限价单执行。其风险在于,快速行情可能直接穿过限价,导致订单无法成交。
我的限价单隔夜会怎样?
当日有效单在收盘时若未成交就会失效。成交前有效(GTC)订单会持续挂单,直到成交、被取消,或因经纪商设定的期限到期。除非您启用了延长交易时段执行,否则该订单不会在常规交易时段之外成交。股票经常隔夜跳空;如果开盘价跳过了挂单限价,订单会按开盘价成交。按照限价单的定义,成交价应为您的价格或更优价格。
为什么我的市价单成交价与屏幕显示的价格不同?
活跃股票的全国最佳买价和卖价每秒更新多次,SPY在上文所测交易时段内约每秒更新176.8次。您的订单会与订单到达时市场上显示的报价成交,而显示、网络和处理延迟会造成时间差。
我能否用限价单以亏损价卖出?
可以,但卖出限价单会以您设定的价格或更优价格成交:如果限价低于当前买价,订单会立即在接近买价的位置成交。如果您的意图是“只有当股价跌至45美元时才卖出”,应使用卖出止损单;如果股价为50美元,却以45美元设置卖出限价单,订单会立即以约50美元成交。
上文每个面板都是基于真实报价和成交记录运行的存储查询。您可以展开 SQL,或在 Strasmore 终端中输入自己的 ticker,按照同样的问题进行查询。