İçeriğe geç

Emir Defteri — 900 Lotluk Alış Neden Ekrandaki Fiyattan Pahalıya Geldi?

Orta 9 dk Sık karşılaşılır

30 saniyede özet

Borsada alış ve satış emirleri bir defterde bekler. Eşleşme en iyi fiyattan başlar, aynı fiyatta önce gelen önce eşleşir. Piyasa emri miktarı garanti eder, defterde yukarı yürüyebilir; limit emri fiyatı garanti eder ama kısmen dolabilir.

Pazarda domates alacaksın. Tezgâhlar fiyat sırasıyla dizilmiş: en ucuz tezgâhta iki kasa kalmış. Sen on kasa istiyorsan, kalan sekizi bir sonraki, biraz daha pahalı tezgâhtan alırsın.

  1. Bayt: Ekranda satış fiyatı 100,10. 900 lot piyasa emri gönderdim!

  2. Sen: Gerçekleşme raporu geldi: ortalama 100,14. Neden 100,10 değil?

  3. Bayt: Kimse bize kazık atmadı mı yani? Fiyat hep 100,10 görünüyordu.

  4. Bayt: Ekrandaki tek fiyat bütün hikâye değilmiş. Defterin içine bakalım.

Defterde kim bekliyor?

Bir hissenin emir defteriBir menkul kıymet için bekleyen alış ve satış emirlerinin fiyat sırasıyla tutulduğu iki liste. Ekrandaki fiyat, bu listelerin en üst satırıdır.Sözlükte gör → iki listedir: alış emirleri ve satış emirleri. Alışta en yüksek fiyat, satışta en düşük fiyat en üsttedir. Ekranda gördüğün fiyat, bu listelerin yalnızca en üst satırıdır.

Yeni bir emir gelince karşı tarafla karşılaştırılır. Fiyatlar örtüşüyorsa işlem olur; örtüşmüyorsa emir deftere girer ve sırasını bekler.

Kafam karıştı, daha basit anlat

Defter iki sıradır: alanlar ve satanlar. Ekrandaki fiyat, sıranın en başıdır.

Hızlı kontrolBaşlangıç

Ekranda bir hissenin satış fiyatı olarak gördüğün tek sayı nedir?

Cevabı biliyor musun?Önce birini seç. Tekrar zamanlaması buna göre ayarlanıyor.

Gelen bir alış emrinin fiyatı hiçbir satışla örtüşmüyorsa ne olur?

Cevabı biliyor musun?Önce birini seç. Tekrar zamanlaması buna göre ayarlanıyor.

Önce fiyat, sonra zaman

Eşleşmenin kuralı fiyat-zaman önceliğiEşleşme kuralı: en iyi fiyattaki emir önce eşleşir; aynı fiyatta önce gelen emir önce.Sözlükte gör →dir. En iyi fiyat önce eşleşir. Aynı fiyatta bekleyen iki emirden önce gelen önce eşleşir.

Erken gelmek tek başına yetmez. Herkesten önce gelen ama daha pahalıya satan bir emir, ucuz satışlar bitmeden sıra bulamaz.

Kafam karıştı, daha basit anlat

Önce en iyi fiyat. Aynı fiyatta, önce gelen.

Hızlı kontrolOrta

Satışta aynı fiyattan iki emir var: A 09:00:01'de, B 09:00:03'te geldi. 200 lotluk alış hangisiyle eşleşir?

Cevabı biliyor musun?Önce birini seç. Tekrar zamanlaması buna göre ayarlanıyor.

D emri herkesten önce gelmiş ama fiyatı en pahalı. Neden ilk eşleşen o değil?

Cevabı biliyor musun?Önce birini seç. Tekrar zamanlaması buna göre ayarlanıyor.

Piyasa emri, limit emri

Piyasa emri fiyat sormaz, yalnızca miktar söyler. En iyi fiyattaki miktar yetmezse, emir bir üst fiyata, sonra bir üstüne yürür. Beklenen fiyat ile gerçekleşen fiyat arasındaki farka kaymaBeklenen fiyat ile gerçekleşen ortalama fiyat arasındaki fark. Büyük bir piyasa emri defterde yukarı yürüdüğünde ortaya çıkar.Sözlükte gör → denir.

Çok alan, pahalı tezgâha kadar yürür.
Adım adım oku
  1. Tezgâhlar fiyat sırasıyla dizilmiş.
  2. En ucuz tezgâh önce satar.
  3. Aynı fiyatta önce gelen önce satar.
  4. Çok alan, pahalı tezgâha kadar yürür.
Satışta 100,10'da 500 lot, 100,20'de 500 lot var. Bu kez 900 lotu limit 100,10 ile alıyorsun. Ne olur? Cevabı göster

500 lot alınır, 400 lot defterde bekler. Limit emri 100,10’dan pahalı satışlarla eşleşmez. Kalan 400 lot, alış tarafında 100,10 fiyatıyla sıraya girer.

Limit emri fiyatı sınırlar: “100,10’dan pahalı alma” der. Bedeli kısmi gerçekleşmeBir emrin yalnızca bir kısmının eşleşmesi. Kalan miktar defterde bekler, sonra dolabilir ya da iptal edilebilir.Sözlükte gör →dir: emrin bir kısmı dolar, kalanı bekler ve belki hiç dolmaz.

Kafam karıştı, daha basit anlat

Piyasa emri miktarı garanti eder, limit emri fiyatı.

Hızlı kontrolOrta

Satışta 100,10'da 500 lot, 100,20'de 500 lot var. 900 lot limit 100,10 alış ne olur?

Cevabı biliyor musun?Önce birini seç. Tekrar zamanlaması buna göre ayarlanıyor.

Kendin gör

Emir defterine bir alış emri geliyor

Tohum 161283
Satış tarafı (en iyi fiyat üstte)
emirfiyatlotgeliş
· A100,1020009:00:01
· B100,1030009:00:03
· C100,2050009:00:02
· D100,4040009:00:00

Gelen: piyasa alış, 900 lot · alınan: 0

Hız
Adım 0

Şu an ne oldu?

Eşleşme sürüyor

En iyi fiyat önce; aynı fiyatta önce gelen önce.

Görevler0/3

  • Piyasa emri defterde yukarı yürüsünaçık

    İpucu

    Büyük bir piyasa emri gönder.

  • Emrin bir kısmı dolsun, kalanı defterde beklesinaçık

    İpucu

    Limit emri, 100,10, 900 lot.

  • Aynı fiyattaki iki satıştan önce geleni eşleşsin, sonrakine sıra gelmesinaçık

    İpucu

    Küçük bir emir yeter.

Olay günlüğü (0)

Henüz olay yok. Oynat veya adımla.

  1. Varsayılanla oynat. 900 lot piyasa emri A, B ve C ile eşleşti. D herkesten önce gelmişti ama fiyatı en kötüydü; sıra ona gelmedi.
  2. Emir tipini limit, fiyatı 100,10 yap. 500 lot alındı, 400 lot defterde bekliyor.
  3. Miktarı 200 lot yap. Yalnızca A ile eşleşti: B ile aynı fiyatta ama A önce gelmişti.
Hızlı kontrolOrta

Simülatörde 900 lot piyasa emrinin ortalaması neden 100,10'dan yüksek çıktı?

Cevabı biliyor musun?Önce birini seç. Tekrar zamanlaması buna göre ayarlanıyor.

Tuzaklar

Fiyatı double ile tutmak. 100,10 gibi bir fiyat ikili sistemde tam yazılamaz. Fiyatı kuruş ya da fiyat adımı cinsinden long olarak, ya da BigDecimal olarak tut.

Tek gerçekleşme beklemek. Bir emir birçok parçada dolabilir. Kodun her gerçekleşmeyi ayrı bir olay olarak işlemeli ve kalan miktarı takip etmeli.

Sırayı bozan değişiklik. Birçok borsada bekleyen emrin miktarını artırmak ya da fiyatını değiştirmek, emrin zaman önceliğini sıfırlar. Kuralı kendi borsanın kurallarından doğrula.

Kafam karıştı, daha basit anlat

Fiyatı tam sayı ya da BigDecimal tut. Her parçalı gerçekleşmeyi ayrı işle.

Hızlı kontrolOrta

Bir eşleşme motorunda fiyatı nasıl tutmalı?

Cevabı biliyor musun?Önce birini seç. Tekrar zamanlaması buna göre ayarlanıyor.

Aşağıda küçük bir eşleşme motoru var: fiyat seviyeleri sıralı bir TreeMap içinde, her seviyede emirler geliş sırasıyla bir kuyrukta.

Derinleş · Eşleşme motoru: fiyat-zaman önceliği 3 dosya · ~80 satır · ilk okumada atlayabilirsin
Proje dosyaları

trading/src/main/java/com/bank/trading/book/ Order.java Order: fiyat kuruş cinsinden long; piyasa emrinin fiyatı yok.

trading/src/main/java/com/bank/trading/book/Order.java
package com.bank.trading.book;
/** priceKurus is null for a market order. */
public record Order(String id, Side side, Long priceKurus, long quantity, long sequence) {
public enum Side { BUY, SELL }
public boolean isMarket() {
return priceKurus == null;
}
}

trading/src/main/java/com/bank/trading/book/ Fill.java OrderBook: satış tarafı ucuzdan pahalıya, alış tarafı pahalıdan ucuza sıralı; her fiyatta emirler geliş sırasıyla.

trading/src/main/java/com/bank/trading/book/Fill.java
package com.bank.trading.book;
public record Fill(String takerId, String makerId, long priceKurus, long quantity) {}

trading/src/main/java/com/bank/trading/book/ OrderBook.java Bir alış emri en iyi satıştan başlayarak eşleşir; limit emrinin kalanı deftere girer, piyasa emrinin kalanı iptal edilir.

trading/src/main/java/com/bank/trading/book/OrderBook.java
package com.bank.trading.book;
import java.util.ArrayDeque;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.Deque;
import java.util.List;
import java.util.Map;
import java.util.TreeMap;
public final class OrderBook {
private static final class Resting {
final Order order;
long remaining;
Resting(Order order, long remaining) {
this.order = order;
this.remaining = remaining;
}
}
/** Cheapest ask first. */
private final TreeMap<Long, Deque<Resting>> asks = new TreeMap<>();
/** Highest bid first. */
private final TreeMap<Long, Deque<Resting>> bids = new TreeMap<>(Comparator.reverseOrder());
public List<Fill> submit(Order taker) {
TreeMap<Long, Deque<Resting>> opposite = taker.side() == Order.Side.BUY ? asks : bids;
List<Fill> fills = new ArrayList<>();
long left = taker.quantity();
while (left > 0 && !opposite.isEmpty()) {
Map.Entry<Long, Deque<Resting>> best = opposite.firstEntry();
if (!crosses(taker, best.getKey())) {
break; // the limit price stops the walk
}
Deque<Resting> level = best.getValue();
Resting maker = level.peekFirst(); // earliest at this price
long qty = Math.min(left, maker.remaining);
fills.add(new Fill(taker.id(), maker.order.id(), best.getKey(), qty));
left -= qty;
maker.remaining -= qty;
if (maker.remaining == 0) {
level.pollFirst();
if (level.isEmpty()) {
opposite.pollFirstEntry();
}
}
}
if (left > 0 && !taker.isMarket()) {
TreeMap<Long, Deque<Resting>> own = taker.side() == Order.Side.BUY ? bids : asks;
own.computeIfAbsent(taker.priceKurus(), p -> new ArrayDeque<>()).addLast(new Resting(taker, left));
}
// A market order's unfilled rest is not booked: it has no price to wait at.
return fills;
}
private static boolean crosses(Order taker, long makerPrice) {
if (taker.isMarket()) {
return true;
}
return taker.side() == Order.Side.BUY ? makerPrice <= taker.priceKurus() : makerPrice >= taker.priceKurus();
}
}

Kendini sına

Şimşek turu1/4

Herkesten önce gelen satış emri, fiyatı ne olursa olsun önce eşleşir.

Soru 1/3İleri

Emir yönetim sistemin her emir için tek bir gerçekleşme mesajı bekliyor. Ne kırılır?

Cevabı biliyor musun?Önce birini seç. Tekrar zamanlaması buna göre ayarlanıyor.

Aklında kalacak üç şey

  1. 1 Eşleşmede önce fiyat, sonra zaman gelir: en iyi fiyat önce eşleşir, aynı fiyatta önce gelen emir önce.
  2. 2 Piyasa emri miktarı garanti eder, fiyatı etmez. Ekrandaki fiyattaki miktar yetmezse emir daha pahalı satışlarla da eşleşir.
  3. 3 Limit emri fiyatı garanti eder, miktarı etmez. Dolmayan kısım defterde bekler; emrin yaşamı tek bir cevapla bitmez.
Sonraki kapı İptal tuşuna bastın, ekranda Canceled yazdı. Gün sonunda borsa 700 lot daha almışsın diyor. Kim yanılıyor? Emrin Yaşam Döngüsü — İptal Ettim Sandım, Borsa Neden Doldurdu? · 9 dk

4 kart sonraki derste seni bekliyor

0/4 kart bu dersten toplandı

Bu dersin üstüne kurulanlar

Bunlar bu dersi temel alıyor; hazır olduğunda devam edebilirsin.