ความแตกต่างระหว่าง Market Order และ Limit Order
เปรียบเทียบความแตกต่างระหว่าง Market Order และ Limit Order โดยใช้ข้อมูลราคาจริงเพื่อวัดต้นทุนที่ต้องจ่ายในรูปแบบสกุลเงินดอลลาร์และผลกระทบจากสภาวะตลาด
คำสั่ง Market order คือการระบุว่า "ให้จับคู่คำสั่งทันที ณ ราคาที่ดีที่สุดที่มีอยู่ในขณะนั้น" ส่วนคำสั่ง Limit order คือการระบุว่า "ให้จับคู่คำสั่งเฉพาะที่ราคาที่กำหนดหรือราคาที่ดีกว่าเท่านั้น" ความแตกต่างเพียงอย่างเดียวนี้เป็นตัวกำหนดราคาที่คุณต้องจ่าย ว่าคุณจะได้ทำรายการหรือไม่ และความเสี่ยงที่อาจเกิดขึ้นคืออะไร คู่มือนี้จะวัดผลตอบแทนที่ต้องแลกเปลี่ยนด้วยข้อมูลราคาจริง ทั้งในรูปแบบสกุลเงินดอลลาร์และจาก ticker จริง จากนั้นจะแสดงให้เห็นว่าสภาวะใดที่ส่งผลกระทบมากที่สุด ได้แก่ ช่วงที่มีการซื้อขายอย่างรวดเร็ว, การส่งคำสั่งขนาดใหญ่, ออปชัน และช่วงเวลาที่ตลาดเปิดทำการนอกเวลาปกติ
Market order คืออะไร?
Market order คือคำสั่งซื้อขายที่จะดำเนินการทันทีโดยอิงจากราคาที่ดีที่สุดในฝั่งตรงข้ามของตลาด การซื้อจะดำเนินการที่ราคา ask และการขายจะดำเนินการที่ราคา bid สำหรับหุ้นจดทะเบียนที่มีขนาดคำสั่งซื้อขายปกติ การทำรายการให้สำเร็จนั้นแทบจะการันตีได้แน่นอน แต่ราคาที่ได้รับนั้นไม่สามารถการันตีได้ ต้นทุนของ market order เมื่อเทียบกับราคา midpoint ระหว่าง bid และ ask คือครึ่งหนึ่งของ bid-ask spread ซึ่งเป็นค่าธรรมเนียมที่ต้องจ่ายเพื่อแลกกับความรวดเร็วในการทำรายการ ราคาที่คุณเห็นบนหน้าจอคือ NBBO ซึ่งเป็นราคา bid และ offer ที่ดีที่สุดจากทุกตลาดหลักทรัพย์ และราคานี้มีการเปลี่ยนแปลงตลอดเวลา คำสั่งของคุณจะถูกดำเนินการตามราคา NBBO ณ ขณะที่คำสั่งส่งไปถึง ไม่ใช่ราคา ณ ขณะที่คุณคลิกสั่งซื้อ
Limit order คืออะไร?
Limit order คือคำสั่งซื้อขายที่กำหนดเพดานราคา (สำหรับการซื้อ) หรือพื้นราคา (สำหรับการขาย) หากคุณตั้งราคาซื้อที่ $50.00 คุณจะไม่ต้องจ่ายเงินเกินกว่า $50.00 แต่หากราคาตลาดไม่เคลื่อนมาถึงระดับที่คุณตั้งไว้ การซื้อขายจะไม่เกิดขึ้น โดยคำสั่งจะรอจนกว่าเงื่อนไขจะครบถ้วน มีการตั้งค่ารูปแบบหนึ่งที่สำคัญคือ marketable limit order ซึ่งหมายถึงการตั้งราคาซื้อที่เท่ากับหรือสูงกว่าราคา ask ปัจจุบันเล็กน้อย ในกรณีปกติคำสั่งนี้จะจับคู่ได้ทันทีเหมือน market order แต่ราคา limit จะทำหน้าที่เป็นเพดานราคาหากราคาเสนอขายมีการกระโดดขึ้นในขณะที่คำสั่งกำลังดำเนินการ
การตั้งค่าสองประการจะกำหนดสิ่งที่เกิดขึ้นระหว่างรอคำสั่ง Duration (ระยะเวลา): คำสั่งแบบ day จะถูกยกเลิกเมื่อตลาดปิดหากยังจับคู่ไม่สำเร็จ ส่วนคำสั่งแบบ good-till-canceled (GTC) จะคงค้างไว้ข้ามเซสชันจนกว่าจะจับคู่สำเร็จ ถูกยกเลิก หรือหมดอายุตามระยะเวลาที่โบรกเกอร์กำหนด (โดยทั่วไปคือ 60 ถึง 90 วัน) Partial fills (การจับคู่บางส่วน): limit order สามารถทยอยจับคู่เป็นส่วนๆ ได้ เช่น หากคุณสั่งซื้อ 100 หุ้น อาจมีการจับคู่ที่ราคาของคุณจำนวน 40 หุ้น ในขณะที่อีก 60 หุ้นที่เหลือยังคงรอการจับคู่ต่อไป
คำสั่ง Stop orders และ stop-limit orders
ในรายการคำสั่งยังมีคำสั่งอีกสองประเภทที่สร้างขึ้นจากคำสั่งเหล่านี้ stop order จะไม่มีการเคลื่อนไหวจนกว่าราคาหุ้นจะซื้อขายที่ระดับราคา stop price หรือผ่านราคาดังกล่าว จากนั้นคำสั่งจะถูกเปลี่ยนเป็น market order ทันที ตัวอย่างคลาสสิกคือ "stop-loss" ซึ่งเป็นคำสั่ง sell stop ที่ตั้งไว้ต่ำกว่าราคาปัจจุบัน ข้อควรระวังคือ เมื่อคำสั่งถูกเปิดใช้งานแล้วจะเป็น market order ซึ่งหากเกิดสถานการณ์ราคาหุ้นกระโดด (gapping) ราคาที่ทำรายการได้จริงอาจต่ำกว่าราคา stop price ไปมาก ส่วน stop-limit order จะเปลี่ยนเป็น limit order เมื่อราคาถึงระดับที่กำหนด โดยประกอบด้วย stop price และ limit price ซึ่งช่วยจำกัดระดับราคาที่ยอมรับได้ในการขายออก แต่ต้องยอมรับความเสี่ยงว่าหากราคาตกลงอย่างรวดเร็ว คำสั่งอาจไม่ถูกจับคู่เลยก็ได้
ต้นทุนของความรวดเร็วในการซื้อขายในรูปแบบดอลลาร์
ต้นทุนของการซื้อขายในราคาที่ข้ามส่วนต่าง spread สามารถวัดได้จากบันทึกราคาเสนอซื้อเสนอขาย ตัวอย่างจากการซื้อขายในหนึ่งเซสชันปกติ โดยใช้ five tickers เพื่อดูค่ามัธยฐานของ spread และต้นทุนครึ่งหนึ่งของ spread เมื่อซื้อขายที่ 100 shares:
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 ครั้งต่อวินาที และมีค่ามัธยฐาน spread อยู่ที่ 2 cents โดยการซื้อขายข้าม spread ที่ 100 shares มีต้นทุนประมาณ $1 ในทางตรงกันข้าม CATO มีการเสนอราคาเพียงเล็กน้อย โดยมีค่ามัธยฐาน spread อยู่ที่ 5 cents และมีต้นทุนครึ่งหนึ่งของ spread อยู่ที่ประมาณ $2.5 สำหรับ 100 shares เท่ากัน สำหรับหุ้น Large-cap ที่มีสภาพคล่องสูง ต้นทุนของความรวดเร็วในการซื้อขายถือเป็นจำนวนเงินที่น้อยมาก แต่สำหรับหุ้นที่มีสภาพคล่องต่ำ ต้นทุนนี้คือเงินจำนวนมาก และราคาที่แสดงบนหน้าจออาจล้าสมัยไปแล้วหลายนาที กลไกทางเศรษฐศาสตร์ในภาพรวมของตลาดปรากฏอยู่ใน ต้นทุนในการซื้อขายหุ้นหนึ่งตัว
ราคาเคลื่อนที่ในขณะที่คำสั่งซื้อขายของคุณกำลังดำเนินการ
ความเสี่ยงที่แท้จริงของ market order ไม่ใช่ spread ที่คุณมองเห็น แต่คือการเคลื่อนที่ของราคาที่คุณมองไม่เห็น ราคาในหุ้นที่มีสภาพคล่องสูงมีการอัปเดตหลายร้อยครั้งต่อวินาที และราคาจะเคลื่อนที่เร็วที่สุดเมื่อมีผู้ใช้ market order จำนวนมาก ซึ่งก็คือช่วงหลังเปิดตลาดทันที ข้อมูลในเซสชันเดียวกันแสดงค่าเฉลี่ยของช่วงราคาสูงสุดถึงต่ำสุด (high-to-low range) ภายในแต่ละนาทีของการซื้อขาย SPY ดังนี้:
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 cents ภายในแต่ละนาที เมื่อเทียบกับ 35.8 cents ต่อนาทีในช่วงเวลาเที่ยง และ 38.8 cents ในช่วงสิบห้านาทีสุดท้าย การส่ง market order ณ เวลา 9:31 น. จะเผชิญกับราคาเป้าหมายที่เคลื่อนที่เร็วกว่าการส่งคำสั่ง ณ เวลาเที่ยง ประมาณ 2 เท่า นอกจากนี้ spread ยังมีความกว้างมากที่สุดในช่วงนาทีแรกๆ ของการเปิดตลาดด้วย สามารถอ่านเพิ่มเติมได้ที่ ทำไม spread จึงกว้างขึ้นในช่วงเปิดตลาด
ผลกระทบของความผันผวนสูงต่อการแลกเปลี่ยนความเสี่ยง
วันที่ 8 กรกฎาคม 2026 เป็นเพียงวันซื้อขายปกติ แต่การประเมินมูลค่าการแลกเปลี่ยนความเสี่ยง (trade-off) จะเกิดขึ้นอย่างรุนแรงในวันที่ตลาดมีความผันผวนผิดปกติ เมื่อเทียบกับวันที่ 9 เมษายน 2025 ซึ่งเป็นช่วงกลางของความผันผวนจากข่าวเรื่องภาษีในช่วงฤดูใบไม้ผลิ โดยใช้ SPY เป็นเกณฑ์วัดทั้งสองวัน:
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 cents เทียบกับ 37.2 ซึ่งเป็นช่วงความผันผวนที่รุนแรงที่สุดที่ 1638 เทียบกับ 133 นอกจากนี้ส่วนต่าง (spread) ยังขยายตัวขึ้น โดยมีค่ามัธยฐานอยู่ที่ 5¢ เทียบกับ 2¢ แต่การเคลื่อนที่ของราคานั้นมีผลมากกว่ามาก ในวันเช่นนี้ ต้นทุนหลักของการส่งคำสั่งซื้อขายแบบ market order คือระยะห่างของราคาที่เคลื่อนที่ไปในช่วงระหว่างการตัดสินใจและการจับคู่คำสั่ง นี่คือช่วงเวลาที่การใช้ limit order จะมีความสำคัญ และเป็นช่วงที่ limit order ที่ตั้งรอไว้มีโอกาสถูกจับคู่ในช่วงแรกแล้วทำให้เสียโอกาสหากราคาเคลื่อนที่ต่อไปอย่างรวดเร็ว
คำสั่งซื้อขนาดใหญ่และราคาเสนอขายที่แสดง
ราคาเสนอขายประกอบด้วย ราคาและขนาด ซึ่งหมายถึงจำนวนหุ้นที่มีการเสนอขายจริง ณ ราคา Ask ที่ดีที่สุด คำสั่งซื้อแบบ Market order ที่มีขนาดใหญ่กว่าจำนวนที่แสดงไว้สามารถทำให้ปริมาณหุ้นในราคานั้นหมดลง และต้องไปซื้อส่วนที่เหลือในราคาถัดไป ซึ่งเรียกว่าการ walking the book โดยข้อมูลที่แสดงในช่วงเวลาเดียวกันมีดังนี้:
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 ASCIWM ซึ่งเป็นหุ้นที่มีสภาพคล่องสูงสุดในกลุ่ม แสดงค่ามัธยฐานที่ 360 หุ้น ณ ราคา Ask ที่ดีที่สุด ขณะที่ AAPL แสดงเพียง 80 หุ้น ในบรรดาหุ้นทั้งห้าตัว ไม่มีตัวใดที่มีปริมาณ Ask ที่แสดงไว้สามารถรองรับคำสั่งซื้อขนาด 1,000 หุ้นได้ถึงหนึ่งในสิบของจำนวนครั้งทั้งหมด โดยมีสัดส่วนอยู่ที่ 7.8% ในกรณีที่ดีที่สุด และ 0.6% ในกรณีที่แย่ที่สุด ปริมาณที่แสดงไว้เป็นเพียงระดับขั้นต่ำ ไม่ใช่จำนวนหุ้นทั้งหมดที่มีอยู่ในตลาด เนื่องจากยังมีคำสั่งซื้อที่ซ่อนอยู่ (hidden interest) ระหว่างราคาที่ดีที่สุด และสภาพคล่องในตลาดจะถูกเติมเต็มใหม่ภายในเวลาเพียงไม่กี่มิลลิวินาที อย่างไรก็ตาม การรับประกันของ Market order จะสิ้นสุดลงที่จำนวนหุ้นที่แสดงไว้เท่านั้น หากเกินจากนั้นระบบจะไปดึงหุ้นจากลำดับถัดไปใน Book ส่วน Limit order จะเป็นตัวกำหนดขอบเขตราคาที่ผู้ซื้อยอมรับได้โดยไม่ข้ามไปราคาอื่น
Options: ความเสี่ยงที่เพิ่มขึ้นในสัดส่วนที่เท่าเดิม
เทรดเดอร์ Options ได้รับผลกระทบหนักที่สุด เนื่องจากราคาต่อสัญญาต่ำ ทำให้ส่วนต่างราคา (spread) เพียงไม่กี่เซนต์ คิดเป็นสัดส่วนที่สูงมากเมื่อเทียบกับต้นทุนที่จ่ายไป ตัวอย่างคือ Apple option ที่จะหมดอายุในปี 2026 ทุกสัญญาที่มีราคาเสนอซื้อและเสนอขาย (two-sided quote) ในเซสชันเดียวกัน เทียบกับหุ้น Apple:
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 stkค่ากลาง (median) ของ Apple option มีส่วนต่างราคาอยู่ที่ 606 basis points ของราคา midpoint — หรือประมาณ 65 เซนต์ต่อสัญญา — ในขณะที่หุ้น Apple มีส่วนต่างราคาอยู่ที่ 1 basis point ซึ่งคิดเป็นช่องว่างประมาณ 606 เท่า การส่งคำสั่งซื้อขายแบบ market order ใน options มักทำให้เสียต้นทุนจากการทำธุรกรรม (slippage) สูงกว่าการส่งคำสั่งในหุ้นหลายร้อยเท่า เทรดเดอร์ options ที่มีประสบการณ์จึงมักใช้คำสั่งแบบ limit order และพยายามซื้อขายที่ราคา midpoint ต้นทุนทั้งหมดที่เกิดขึ้นสามารถดูได้จาก ต้นทุนในการซื้อขาย options
นอกเวลาทำการปกติ การส่งคำสั่งแบบ Limit Order มักเป็นทางเลือกเดียวที่มีให้เลือก
โบรกเกอร์หลายแห่งปฏิเสธคำสั่งซื้อขายแบบ Market Order ในช่วง Pre-market และ After-hours โดยจะรับเฉพาะคำสั่งแบบ Limit Order เท่านั้น ข้อมูลราคาแสดงให้เห็นถึงเงื่อนไขเบื้องหลังนโยบายดังกล่าว ซึ่งแบ่งเป็นสามช่วงเวลาภายในวันเดียวกัน:
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ค่า Median spread ของ Coca-Cola อยู่ที่ 1 cent ในช่วงเวลาทำการปกติ, 28 cents ในช่วง Pre-market และ 30 cents ในช่วง After-hours; ขณะที่ Apple มีค่าเปลี่ยนจาก 3 cents เป็น 32; แม้แต่ SPY ยังมีส่วนต่างที่กว้างขึ้นจาก 2 เป็น 7 เนื่องจากจำนวนผู้เล่นในตลาดมีน้อยลงและสภาพคล่องในสมุดคำสั่งซื้อขายเบาบางลง การซื้อขายในช่วงเวลาขยายตลาด จึงเป็นช่วงที่คำสั่งซื้อขายแบบไม่จำกัดราคา (Uncapped order) มีความเสี่ยงสูงสุดที่จะเกิดความคลาดเคลื่อนของราคา และกฎระเบียบของโบรกเกอร์ได้กำหนดเงื่อนไขนี้ไว้เพื่อรองรับความเสี่ยงดังกล่าว
ประเภทคำสั่งซื้อขายที่เหมาะสมกับแต่ละสถานการณ์
ข้อมูลเหล่านี้สรุปเป็นรายการตรวจสอบ ซึ่งไม่ใช่คำแนะนำ แต่เป็นการระบุว่าจุดอ่อนของคำสั่งแต่ละประเภทมีต้นทุนต่ำหรือสูงในสถานการณ์ใด:
- หุ้นขนาดใหญ่ที่มีสภาพคล่องสูง ตลาดเคลื่อนไหวปกติ และคำสั่งซื้อขายมีขนาดเล็ก ค่า Spread มีต้นทุนต่ำมาก การใช้ Marketable limit ช่วยให้ได้ความรวดเร็วแบบ Market order โดยมีการกำหนดเพดานราคาไว้
- หุ้นที่มีสภาพคล่องต่ำ ราคาเสนอซื้อขาย (Quotes) มีส่วนต่างกว้างและอาจล่าช้าไปหลายนาที การใช้ Limit order จะช่วยในการค้นหาราคาที่เหมาะสมซึ่งราคาเสนอขายที่ล่าช้าไม่สามารถทำได้
- ตลาดที่มีความผันผวนสูง เช่น ช่วงเปิดตลาด การประกาศข่าว หรือวันที่มีความเคลื่อนไหวรุนแรงอย่างวันที่ 9 เมษายน 2025 ความเสี่ยงจากการเคลื่อนไหวของราคาสำคัญกว่าค่า Spread การใช้ Limit order จะช่วยจำกัดความเสี่ยงนี้ แต่อาจทำให้พลาดโอกาสในการซื้อขาย
- คำสั่งซื้อขายที่มีขนาดใหญ่กว่าจำนวนที่แสดงในหน้าจอ การรับประกันราคาตามที่แสดงจะสิ้นสุดลงเมื่อถึงจำนวนหุ้นที่ระบุไว้ การใช้ Limit order จะช่วยกำหนดระดับราคาที่แย่ที่สุดที่คุณยอมรับได้
- Options และหุ้นที่ซื้อขายนอกเวลาทำการ Limit order คือมาตรฐานสำหรับมืออาชีพ และมักเป็นคำสั่งประเภทเดียวที่โบรกเกอร์ยอมรับในช่วงนอกเวลาทำการ
สรุปสั้นๆ: Market order รับประกันการจับคู่คำสั่งแต่ไม่รับประกันราคา; Limit order รับประกันราคาแต่ไม่รับประกันการจับคู่คำสั่ง; Marketable limit ให้ผลลัพธ์การจับคู่ทันทีเหมือน Market order แต่มีการจำกัดความเสียหายของราคาไว้
คำถามที่พบบ่อยเกี่ยวกับ Market order และ Limit order
Market order การันตีว่าจะมีการจับคู่คำสั่ง (fill) หรือไม่?
สำหรับคำสั่งซื้อขายหุ้นจดทะเบียนในปริมาณปกติสำหรับรายย่อยในช่วงเวลาทำการปกติ คำตอบคือใช่ เนื่องจากมีราคาเสนอขายที่ดีที่สุด (best offer) รองรับอยู่เสมอ อย่างไรก็ตาม การการันตีนั้นครอบคลุมเฉพาะการจับคู่คำสั่งเท่านั้น ไม่ใช่การการันตีราคา ในกรณีที่สภาพคล่องต่ำหรือราคาเคลื่อนที่อย่างรวดเร็ว ราคาที่จับคู่ได้จริงอาจแตกต่างจากราคาเสนอขายล่าสุดที่คุณเห็นอย่างมีนัยสำคัญ
Stop-limit order คืออะไร และแตกต่างจาก Limit order อย่างไร?
Limit order จะมีผลทันทีที่คุณส่งคำสั่ง ส่วน Stop-limit order จะยังไม่มีสถานะจนกว่าราคาหุ้นจะเคลื่อนที่มาถึงหรือผ่านราคา Stop ที่คุณกำหนดไว้ จากนั้นคำสั่งจะเปลี่ยนเป็น Limit order ตามราคา Limit ที่คุณตั้งไว้ ความเสี่ยงคือ หากราคาเคลื่อนที่อย่างรวดเร็วจนผ่านระดับราคา Limit ไป คำสั่งนั้นอาจไม่ถูกจับคู่เลย
คำสั่ง Limit order ของฉันจะเป็นอย่างไรเมื่อข้ามคืน?
Day order จะหมดอายุโดยไม่ถูกจับคู่เมื่อตลาดปิด ส่วนคำสั่งแบบ Good-till-canceled (GTC) จะคงสถานะไว้จนกว่าจะถูกจับคู่ ถูกยกเลิก หรือหมดอายุตามระยะเวลาที่โบรกเกอร์กำหนด และคำสั่งดังกล่าวจะไม่ซื้อขายนอกเวลาทำการปกติ เว้นแต่คุณจะเปิดใช้งานการซื้อขายในส่วนของ Extended-hours ไว้ โดยปกติแล้วหุ้นมักจะ เกิดช่องว่างราคา (gap) ข้ามคืน; หากราคาเปิดเกิดช่องว่างผ่านระดับราคา Limit ที่ตั้งค้างไว้ คำสั่งจะถูกจับคู่ที่ราคาเปิด ซึ่งตามนิยามแล้วคือราคาของคุณหรือราคาที่ดีกว่า
ทำไม Market order ของฉันถึงจับคู่ที่ราคาต่างจากที่แสดงบนหน้าจอ?
ราคา Bid และ Ask ที่ดีที่สุด (National best bid and offer) ของหุ้นที่มีการซื้อขายคึกคักจะอัปเดตหลายครั้งต่อวินาที โดยในเซสชันที่วัดผลข้างต้น SPY มีการอัปเดตประมาณ 176.8 ครั้งต่อวินาที คำสั่งของคุณจะถูกจับคู่กับราคาที่มีอยู่ ณ ขณะที่คำสั่งส่งไปถึง โดยมีความล่าช้าจากการแสดงผล ระบบเครือข่าย และการประมวลผลเข้ามาเกี่ยวข้อง
ฉันสามารถใช้ Limit order เพื่อขายเพื่อตัดขาดทุนได้หรือไม่?
ได้ แต่การขายแบบ Sell limit จะดำเนินการที่ราคาของคุณ หรือราคาที่ดีกว่า หากตั้งราคาไว้ต่ำกว่าราคา Bid ปัจจุบัน คำสั่งจะถูกจับคู่ทันทีใกล้กับราคา Bid หากความตั้งใจของคุณคือ "จะขายก็ต่อเมื่อหุ้นตกลงมาถึง $45" นั่นคือคำสั่ง Sell stop — การใช้ Sell limit ที่ $45 ในขณะที่หุ้นอยู่ที่ $50 จะทำให้เกิดการจับคู่ทันทีที่ราคาประมาณ $50
ข้อมูลในทุกส่วนข้างต้นมาจากการดึงข้อมูลจริงจากราคาเสนอขายและบันทึกการซื้อขาย — คุณสามารถขยายคำสั่ง SQL หรือนำ Ticker ของคุณมาตรวจสอบผ่านคำถามเดียวกันนี้บนเทอร์มินัลของ Strasmore