Perdagangan
Mesin pencocokan
Mesin pencocokan memutuskan order mana yang berdagang satu sama lain. Halaman ini mencakup aturan prioritas, pemicu penghentian, perilaku restart, dan invarian keadilan yang diberlakukan mesin.
Prioritas harga-waktu
Saat order baru tiba, mesin mencocokkannya terhadap counter-order terbaik di buku. Terbaik ditentukan pertama berdasarkan harga, kemudian waktu.
- Harga lebih baik diisi terlebih dahulu โ penawaran lebih tinggi mengalahkan penawaran lebih rendah untuk penjual.
- Harga yang sama diisi berdasarkan waktu โ order yang lebih awal menang.
- Harga isian berasal dari order yang menunggu, bukan dari order yang masuk.
Pemicu penghentian
Tiga peristiwa dapat menghentikan pencocokan di sebuah pasar. Selama dihentikan, mesin menolak order baru dan membekukan order yang menunggu.
| Pemicu | Efek | Lanjutkan |
|---|---|---|
| Circuit breaker โ pergerakan harga 30%+ | Hentikan order baru, bekukan yang menunggu, beri tahu pengguna. | Tinjauan admin + lanjutkan manual. |
| Penghentian resolusi โ penguncian pra-resolusi | Hentikan kemudian dorong pasar ke penyelesaian. | Pasar ditutup setelah penyelesaian. |
| Jendela pemeliharaan platform | Tolak order untuk jendela singkat dengan kode error yang jelas. | Otomatis saat jendela berakhir. |
Yang terjadi saat restart
Restart mesin jarang tapi nyata. SatoriEx memutar ulang buku secara deterministik; pengguna melihat gangguan singkat pada penulisan, tidak pernah pada pembacaan.
- API menolak order baru dengan kode error sementara.
- Order yang menunggu dimuat dari penyimpanan persisten.
- Status buku diputar ulang ke nomor urut yang terakhir di-commit.
- Pencocokan dilanjutkan; klien yang ditolak harus mencoba ulang dengan kunci idempoten yang sama.
Invarian keadilan
Mesin tidak pernah membiarkan order berdagang di depan order yang lebih lama dengan harga yang sama. Tidak ada order, termasuk likuiditas awal platform, yang diberi prioritas โ order tidak memiliki tanda jalur cepat.
Gunakan kunci idempoten