วิธีตั้งค่าออเดอร์ OCO ในแพลตฟอร์มการเทรดของคุณ

คำสั่ง OCO (one-cancels-the-other) คือคำสั่งที่เชื่อมโยงกัน 2 คำสั่ง โดยเมื่อคำสั่งหนึ่งถูกเติมเต็ม อีกคำสั่งจะถูกยกเลิก เหมาะสำหรับการทะลุกรอบ (breakouts), การตั้ง stop-loss คู่กับเป้ากำไร (profit targets) และการกลับเข้ารอบ (re-entries) นี่คือวิธีตั้งค่า

คำเตือน

นี่ไม่ใช่คำแนะนำการลงทุน ข้อมูลที่ให้ไว้มีไว้เพื่อการศึกษาและข้อมูลเท่านั้น และไม่ถือเป็นการแนะนำให้ซื้อหรือขายผลิตภัณฑ์ทางการเงินใดๆ

ข้อความภาษาอังกฤษของคำเตือนความเสี่ยงเหล่านี้ถือเป็นข้อมูลที่มีผลผูกพัน คำแปลมีไว้เพื่อความสะดวกเท่านั้น

คำสั่ง OCO (one-cancels-the-other) คือคำสั่งที่เชื่อมโยงกัน 2 คำสั่ง โดยเมื่อคำสั่งหนึ่งถูกเติมเต็ม อีกคำสั่งจะถูกยกเลิกอัตโนมัติ คำสั่งนี้มีประโยชน์เมื่อคุณต้องการปิดสถานะที่ระดับราคาใดระดับหนึ่งจากสองระดับ—โดยทั่วไปคือเป้าหมายกำไรหรือจุดตัดขาดทุน—แต่ไม่ต้องการทั้งสองอย่างพร้อมกัน รายการที่ถูกเติมเต็มก่อนจะเป็นฝ่ายชนะ ส่วนอีกคำสั่งจะถูกยกเลิก

บทความนี้เป็นคู่มือแบบลงมือทำ: ว่าเมื่อใดคำสั่ง OCO ถึงจะเหมาะสม วิธีตั้งค่าบนแพลตฟอร์มทั่วไป และสิ่งที่ควรระวัง

เมื่อคำสั่ง OCO มีความเหมาะสม

การใช้งานที่พบบ่อย 3 แบบ:

  1. คำสั่งแบบ Bracket (ครอบคำสั่ง). สถานะฝั่ง Long ที่มีทั้งเป้ากำไรและจุดตัดขาดทุน วางคำสั่งขายแบบจำกัด (sell limit) ไว้เหนือราคาปัจจุบัน และวางคำสั่งขายแบบหยุด (sell stop) ไว้ต่ำกว่า เมื่ออันใดอันหนึ่งทำงานก่อน ระบบจะเติมเต็ม (fill) และอีกอันจะถูกยกเลิก ตำแหน่งจะถูกปิดที่หนึ่งในสองราคานั้น
  2. การเข้าซื้อเมื่อทะลุ (Breakout entries). เทรดเดอร์ที่รอให้ราคาทะลุเหนือแนวต้านหรือหลุดลงต่ำกว่าแนวรับ วางคำสั่งซื้อแบบหยุด (buy stop) ไว้เหนือแนวต้าน และวางคำสั่งขายแบบหยุด (sell stop) ไว้ต่ำกว่าแนวรับ อันแรกที่ทริกเกอร์จะเป็นฝ่ายเข้าทำสถานะ ส่วนอีกอันจะถูกยกเลิก
  3. การกลับเข้าเทรด (Re-entries). เทรดเดอร์ที่ต้องการถือ Long เหนือระดับหนึ่ง และ Short ใต้ระดับเดียวกัน โครงสร้างเหมือนกับการเข้าซื้อเมื่อทะลุ แต่มีการจัดการทั้งสองฝั่งของสถานะ

รูปแบบที่เหมือนกัน: คำสั่ง OCO คือเรื่องของ “ตัวเลือก” คุณไม่รู้ว่าอีกฝั่งจะทำงานก่อน แต่คุณต้องการเตรียมพร้อมสำหรับทั้งสองกรณี

วิธีตั้งค่า OCO บนแพลตฟอร์มทั่วไป

ขั้นตอนที่แน่นอนจะแตกต่างกันไปตาม Broker แต่โครงสร้างจะเหมือนกัน ในแพลตฟอร์มส่วนใหญ่ (เช่น thinkorswim, Interactive Brokers, Tastyworks, TradeStation):

  1. คลิกขวาที่สถานะ (position) หรือเปิดหน้าตั๋วคำสั่ง (order ticket) แพลตฟอร์มส่วนใหญ่มีตัวเลือก OCO ในเมนูแบบเลื่อนลงของประเภทคำสั่ง
  2. ตั้งค่าขาแรก (first leg) โดยปกติจะเป็นคำสั่งแบบลิมิต (limit order) เพื่อทำกำไร (profit target) หรือคำสั่งแบบสต็อป (stop order) เพื่อจำกัดการขาดทุน (stop-loss)
  3. ตั้งค่าขาที่สอง (second leg) ซึ่งเป็นคำสั่งอีกฝั่งที่สอดคล้องกัน
  4. เชื่อมโยงทั้งสองขาเป็น OCO แพลตฟอร์มส่วนใหญ่มีช่องทำเครื่องหมายหรือปุ่มให้ทำเครื่องหมายคำสั่งเป็น OCO
  5. ส่งคำสั่ง (Submit) แพลตฟอร์มจะส่งคำสั่งทั้งสองรายการ; เมื่อรายการหนึ่งถูกเติมเต็ม (fills) อีกคำสั่งจะถูกยกเลิกอัตโนมัติ

แพลตฟอร์มยังช่วยให้คุณปรับราคาและประเภทคำสั่งได้หลังจากส่งคำสั่งแล้ว การเชื่อมโยง OCO จะยังคงอยู่จนกว่าหนึ่งในขาจะถูกเติมเต็ม หรือคุณยกเลิกทั้งสองรายการด้วยตนเอง

รูปแบบที่พบบ่อย

OCO ด้วย stop-limit ฝั่ง stop

คำสั่ง stop แบบธรรมดาจะถูกแปลงเป็นคำสั่ง market เมื่อถูกทริกเกอร์ ซึ่งอาจทำให้เกิด slippage ในตลาดที่มีความผันผวน คำสั่ง stop-limit จะถูกแปลงเป็นคำสั่ง limit ที่ราคาที่กำหนด ช่วยหลีกเลี่ยง slippage แต่มีความเสี่ยงที่จะไม่ได้รับการเติมเต็ม (non-fill) หากราคากระโดดข้าม (gap) ผ่านราคาที่ตั้งไว้

จุดแลกเปลี่ยน: stop-market เติมเต็มพร้อม slippage; stop-limit เติมเต็มที่ราคาที่ระบุหรือไม่ก็ไม่เติมเต็มเลย OCO สามารถรวม stop-market (สำหรับ stop-loss) กับคำสั่ง limit (สำหรับเป้ากำไร) หรือใช้ stop-limit ทั้งสองฝั่งได้

Trailing stop OCO

Trailing stop คือคำสั่งหยุดขาดทุนที่ปรับตัวตามราคาเมื่อราคาขยับไปในทิศทางที่เป็นประโยชน์กับคุณ Trailing stop OCO คือการรวม Trailing stop (คำสั่งหยุดขาดทุนที่ “ตาม” ราคาขึ้นไป) เข้ากับคำสั่งจำกัดราคา (เป้ากำไร) โดยตำแหน่งจะปิดที่ Trailing stop หากราคาย้อนกลับ หรือปิดที่ราคาเป้าหมายหากไปถึงก่อน

Trailing stop OCO เหมาะสำหรับการเทรดตามโมเมนตัมที่คุณต้องการเก็บการเคลื่อนไหวหลายวัน แต่ต้องออกเมื่อเกิดการกลับตัว Trailing stop จะช่วยล็อกกำไรเมื่อราคาปรับขึ้น ส่วนราคาเป้าหมายแบบ limit จะเป็นทางออกเมื่อราคาขึ้นไปถึงจุดที่กำหนด

OCO แบบมีระยะเวลา

บางแพลตฟอร์มให้คุณตั้งวันหมดอายุสำหรับ OCO ได้ เมื่อถึงเวลาหมดอายุ ระบบจะยกเลิก OCO อัตโนมัติ หากยังไม่มีขาใดถูกเติมเต็ม (filled) เหมาะสำหรับการตั้งค่าที่ใช้ได้เฉพาะช่วงเวลาหนึ่งเท่านั้น (เช่น ช่วงประกาศผลประกอบการ หรือช่วงตลาดเปิด)

วันหมดอายุขึ้นอยู่กับแพลตฟอร์ม บางแพลตฟอร์มตั้งค่าเริ่มต้นเป็น “good till cancelled” (GTC) ซึ่งหมายความว่า OCO จะยังคงใช้งานอยู่ไม่มีกำหนด บางแพลตฟอร์มตั้งค่าเริ่มต้นเป็น “day” หรือ “good till close” (GTC) ตั้งวันหมดอายุอย่างตั้งใจตามกลยุทธ์ของคุณ

อะไรที่อาจผิดพลาดได้

สามรูปแบบ:

1. ขาทั้งสองถูกทริกเกอร์ในตลาดที่เคลื่อนไหวเร็ว

ในตลาดที่เคลื่อนไหวอย่างรวดเร็ว ทั้งสองข้างอาจถูกทริกเกอร์ภายในมิลลิวินาทีเดียวกัน แพลตฟอร์มอาจเติมคำสั่งเพียงข้างเดียว ข้างใดข้างหนึ่ง หรือทั้งสองข้าง—ขึ้นอยู่กับการกำหนดเส้นทางคำสั่ง (order routing) “OCO” รับประกันเพียงว่าอีกข้างจะถูกยกเลิกหากอีกข้างถูกเติมก่อนเท่านั้น หากทั้งสองข้างถูกเติมก่อนที่แพลตฟอร์มจะสามารถยกเลิกได้ ผลลัพธ์อาจเป็นการปิดบางส่วน (partial close) หรือการสลับไปอีกฝั่ง (flip)

วิธีแก้: อย่าใช้ OCO ในตลาดที่มีแนวโน้มจะ “กระโดดข้าม” (gap) ผ่านทั้งสองระดับ ใช้ stop-market พร้อมส่วนเผื่อ (buffer) หรือยอมรับความเสี่ยงของการเติมบางส่วน

2. การทริกเกอร์ฝั่ง stop จากไส้เทียน (wick)

ในไส้เทียนของแท่งเทียน ราคาแตะระดับ stop ชั่วคราว แต่ปิดกลับมาเหนือระดับนั้น คำสั่ง stop-market จะทริกเกอร์จากไส้เทียนและเติมเต็มที่ราคาของ stop (หรือแย่กว่า) OCO จะยกเลิกคำสั่ง limit แต่คุณดันออกจากการเคลื่อนไหวที่เป็นเพียงสัญญาณรบกวน (noise)

วิธีแก้: ใช้ stop-limit พร้อมส่วนเผื่อ (buffer) หรือใช้การยืนยันตามเวลา (time-based confirmation)

3. แพลตฟอร์มไม่รองรับ OCO แบบแท้จริง

บางแพลตฟอร์มรองรับเพียง “คำสั่งที่เชื่อมโยงกัน” หรือ “คำสั่งแบบ if-touched” ซึ่งดูเหมือน OCO แต่มีตรรกะการยกเลิกที่แตกต่างกัน อ่านเอกสารของแพลตฟอร์มเพื่อยืนยันพฤติกรรมของ OCO

วิธีประเมิน

เมื่อคุณตั้งค่าออเดอร์ OCO ให้ถามว่า:

  • แพลตฟอร์มรองรับ OCO แบบแท้จริงหรือไม่? (ลองทดสอบด้วยออเดอร์ขนาดเล็กในหุ้นที่มีสภาพคล่องสูงเพื่อยืนยันพฤติกรรม)
  • รองรับประเภทออเดอร์อะไรบ้างในแต่ละขา? (stop-market, stop-limit, trailing stop, limit ยิ่งมีตัวเลือกมาก ยิ่งสามารถรันกลยุทธ์ได้หลากหลาย)
  • ค่าเริ่มต้นของวันหมดอายุคืออะไร? (Day, GTC หรือแบบกำหนดเอง ตั้งใจเลือกให้ชัดเจน)
  • การจัดการ partial-fill เป็นอย่างไร? (ถ้าออเดอร์ขา limit เติมเพียง 50% ระบบจะยกเลิก OCO หรือไม่? โดยมากแพลตฟอร์มจะยกเลิก แต่บางแพลตฟอร์มจะคงขาที่ไม่ได้เติมไว้ให้ทำงานต่อ)
  • slippage บนขา stop เป็นเท่าไร? (stop-market จะเติมพร้อม slippage ทดสอบในบัญชี paper-trading เพื่อดูคุณภาพการเติมจริง)

คำถามที่พบบ่อย

OCO เหมือนกับออเดอร์แบบ bracket หรือไม่?

ออเดอร์แบบ bracket คือ OCO ประเภทหนึ่งโดยเฉพาะ: ออเดอร์สำหรับการเข้า (entry) ที่มีทั้งเป้ากำไร (profit target) และจุดตัดขาดทุน (stop-loss) ซึ่งเชื่อมโยงกันในรูปแบบ OCO ออเดอร์ OCO ทั่วไปสามารถเป็นออเดอร์ที่เชื่อมโยงกันได้สองรายการ และ bracket เป็นหนึ่งในกรณีการใช้งานที่พบบ่อย

ฉันสามารถตั้งค่า OCO ข้ามหลายบัญชีได้ไหม?

แพลตฟอร์มส่วนใหญ่ไม่รองรับการตั้งค่า OCO ข้ามบัญชี โดย OCO จะถูกตั้งค่าที่ระดับ “ตำแหน่ง” ภายในบัญชีเดียวเท่านั้น

OCO กับ OTO ต่างกันอย่างไร (one-triggers-the-other)?

OTO คือคำสั่งซื้อขาย 2 รายการที่เชื่อมโยงกัน โดยคำสั่งที่ 2 จะถูกวางก็ต่อเมื่อคำสั่งที่ 1 สำเร็จ (fills) แล้วเท่านั้น ส่วน OCO คือคำสั่งซื้อขาย 2 รายการที่เชื่อมโยงกัน โดยคำสั่งที่ 2 จะถูกยกเลิกเมื่อคำสั่งที่ 1 สำเร็จ (fills) แล้ว

โบรกเกอร์ทุกรายรองรับคำสั่ง OCO หรือไม่?

โบรกเกอร์ระดับท็อปส่วนใหญ่รองรับ รวมถึง Interactive Brokers, Schwab, Tastyworks, TradeStation และ E*TRADE การนำไปใช้งานจะแตกต่างกันไป

แหล่งข้อมูลที่เกี่ยวข้อง

เริ่มต้นตรงไหน

หากคุณต้องการใช้งานคำสั่ง OCO ในการเทรด ขั้นตอนแรกที่เป็นประโยชน์คือการตั้งค่าบัญชีเทรดแบบกระดาษ (paper-trading) กับ Broker ที่รองรับประเภทคำสั่งนี้ และทดสอบพฤติกรรมด้วยพอร์ต/สถานะขนาดเล็ก บัญชีแบบกระดาษคือวิธีเดียวที่จะยืนยันตรรกะของ OCO ในแพลตฟอร์มก่อนที่จะตัดสินใจใช้เงินจริง ดูตาราง broker table ของเราสำหรับรายชื่อแพลตฟอร์มที่รองรับ OCO ในปัจจุบัน