ข้ามไปยังเนื้อหา

การเทรด

เครื่องจับคู่

เครื่องจับคู่ตัดสินว่าออร์เดอร์ใดซื้อขายกับกัน หน้านี้ครอบคลุมกฎลำดับความสำคัญ ตัวกระตุ้นการหยุด พฤติกรรมการรีสตาร์ท และหลักการความเป็นธรรมที่เครื่องบังคับใช้

ลำดับความสำคัญราคา-เวลา

เมื่อออร์เดอร์ใหม่มาถึง เครื่องจับคู่กับออร์เดอร์ตรงข้ามที่ดีที่สุดในสมุด ดีที่สุดกำหนดก่อนด้วยราคา แล้วค่อยด้วยเวลา

  • ราคาที่ดีกว่า fill ก่อน — bid สูงกว่าเอาชนะ bid ต่ำกว่าสำหรับผู้ขาย
  • ราคาเท่ากัน fill ตามเวลา — ออร์เดอร์ที่เก่ากว่าชนะ
  • ราคา fill มาจากออร์เดอร์ที่รอดำเนินการ ไม่ใช่ออร์เดอร์ที่เข้ามา

ตัวกระตุ้นการหยุด

สามเหตุการณ์สามารถหยุดการจับคู่ในตลาด ขณะหยุด เครื่องปฏิเสธออร์เดอร์ใหม่และแช่แข็งออร์เดอร์ที่รอดำเนินการ

ตัวกระตุ้นผลกระทบกลับมา
Circuit breaker — ราคาเคลื่อนไหว 30%+ หยุดออร์เดอร์ใหม่ แช่แข็งออร์เดอร์ที่รอ แจ้งผู้ใช้ ผู้ดูแลระบบตรวจสอบ + กลับมาเอง
หยุดการตัดสิน — lockup ก่อนตัดสิน หยุดแล้วนำตลาดไปสู่การชำระบัญชีตลาดปิดหลังการชำระบัญชี
ช่วงการบำรุงรักษาแพลตฟอร์ม ปฏิเสธออร์เดอร์ช่วงสั้นพร้อม error code ที่ชัดเจน โดยอัตโนมัติเมื่อช่วงสิ้นสุด

สิ่งที่เกิดขึ้นระหว่างการรีสตาร์ท

การรีสตาร์ทเครื่องเกิดขึ้นไม่บ่อยแต่เป็นไปได้จริง SatoriEx replay สมุดแบบ deterministic ผู้ใช้เห็นการหยุดชั่วคราวสั้นๆ บนการเขียน ไม่ใช่การอ่าน

  1. API ปฏิเสธออร์เดอร์ใหม่ด้วย transient error code
  2. ออร์เดอร์ที่รอดำเนินการถูกโหลดจาก persistent store
  3. สถานะสมุด replay ไปยัง sequence number ที่ commit ล่าสุด
  4. การจับคู่กลับมา client ที่ถูกปฏิเสธควร retry ด้วย idempotency key เดิม

หลักการความเป็นธรรม

เครื่องไม่อนุญาตให้ออร์เดอร์ซื้อขายก่อนออร์เดอร์เก่ากว่าที่ราคาเดียวกัน ไม่มีออร์เดอร์ใด รวมถึง seed liquidity ของแพลตฟอร์ม ที่ได้รับลำดับความสำคัญ ออร์เดอร์ไม่มี fast-lane flag

ใช้ idempotency key

ทุกการเรียก POST /orders รองรับส่วนหัว Idempotency-Key ระหว่างการรีสตาร์ทและ network blip นี่คือสิ่งที่ให้คุณ retry อย่างปลอดภัยโดยไม่เพิ่มตำแหน่งเป็นสองเท่า