Uživatelská příručka: Správa objednávek
Revolut X umožňuje zadávat, sledovat a rušit objednávky prostřednictvím autentizovaných koncových bodů API.
Zadávání objednávek
Objednávky můžete zadávat buď v kótované měně (např. EUR), nebo v základní měně (např. BTC).
1. Sjednocená metoda place_order (Doporučeno)
Můžete použít sjednocenou metodu place_order a specifikovat order_type:
from revolut_x import RevolutXClient, OrderSide, OrderType
client = RevolutXClient(api_key="...", private_key_path="keys/private.pem")
# Tržní objednávka (Market)
order = client.place_order(
"BTC-EUR",
OrderSide.BUY,
order_type=OrderType.MARKET,
quote_size="50.00",
)
# Limitní objednávka (Maker post-only)
order = client.place_order(
"BTC-EUR",
OrderSide.BUY,
order_type=OrderType.LIMIT,
price="70000.00",
quote_size="50.00",
post_only=True,
)
2. Smart Maker objednávky bez poplatku (place_maker_order)
Revolut X účtuje 0.00% poplatek za Maker objednávky (objednávky, které vstupují do knihy objednávek a poskytují likviditu).
Pomocí metody place_maker_order SDK automaticky určí optimální limitní cenu dotazem na živou knihu objednávek (best_bid / best_ask) a aplikuje bezpečnostní offset (výchozí: 0.10 EUR). Tím je zaručeno, že objednávka vstoupí do knihy bez okamžité kolize s existujícími kotacemi, a kvalifikuje se na 0.00% poplatek:
- NÁKUP (BUY):
price = best_bid - offset - PRODEJ (SELL):
price = best_ask + offset
from revolut_x import RevolutXClient, OrderSide
client = RevolutXClient(api_key="...", private_key_path="keys/private.pem")
# 1. Nákup BTC za 50 EUR za optimální Maker cenu (0.00% poplatek)
order = client.place_maker_order(
symbol="BTC-EUR",
side=OrderSide.BUY,
quote_size="50.00",
offset="0.10", # 10 centů pod nejlepší bid
)
# 2. Prodej 0.001 BTC za optimální Maker cenu (0.00% poplatek)
order = client.place_maker_order(
symbol="BTC-EUR",
side=OrderSide.SELL,
base_size="0.001",
offset="0.10", # 10 centů nad nejlepší ask
)
Optimální Maker cenu si můžete předem spočítat a zkontrolovat i bez odeslání objednávky:
# Zjištění optimální ceny bez odeslání objednávky
price = client.calculate_maker_price("BTC-EUR", OrderSide.BUY, offset="0.10")
print(f"Optimální Maker nákupní cena: {price} EUR")
3. Ruční limitní objednávky s vlastní cenou
Pokud chcete zadat limitní objednávku s pevnou cenou a zajistit 0.00% Maker poplatek, použijte order_type=OrderType.LIMIT s parametrem post_only=True:
from revolut_x import RevolutXClient, OrderSide, OrderType, TimeInForce
# Nákup BTC za 50 EUR při limitní ceně 70 000 EUR
order = client.place_order(
"BTC-EUR",
side=OrderSide.BUY,
order_type=OrderType.LIMIT,
price="70000.00",
quote_size="50.00",
post_only=True,
time_in_force=TimeInForce.GTC,
)
print(f"Objednávka odeslána: ID = {order['venue_order_id']}, Stav = {order['state']}")
4. Okamžité tržní objednávky (0.09% Taker poplatek)
Pro okamžité provedení proti stávající knize objednávek použijte order_type=OrderType.MARKET:
from revolut_x import RevolutXClient, OrderSide, OrderType
# Tržní nákup za 100 EUR
market_buy = client.place_order(
"BTC-EUR",
side=OrderSide.BUY,
order_type=OrderType.MARKET,
quote_size="100.00",
)
# Tržní prodej přesně 0.002 BTC
market_sell = client.place_order(
"BTC-EUR",
side=OrderSide.SELL,
order_type=OrderType.MARKET,
base_size="0.002",
)
Kontrola objednávek a exekucí
Dotaz na detail objednávky podle ID
detail = client.get_order(order["venue_order_id"])
print(f"Stav: {detail['status']}")
print(f"Vyplněný objem: {detail['filled_quantity']} BTC")
print(f"Celkový poplatek: {detail['total_fee']} {detail.get('fee_currency', 'EUR')}")
Zjištění dílčích exekucí (Fills)
fills = client.get_order_fills(order["venue_order_id"])
for fill in fills:
fee_type = "Maker (0%)" if fill.get("im") else "Taker (0.09%)"
print(f"Vyplněno {fill['q']} BTC @ {fill['p']} EUR [{fee_type}]")
Aktivní a historické objednávky
# Všechny aktivní objednávky
active_orders = client.get_active_orders(symbol="BTC-EUR")
# Stránkovaná historie objednávek
history, next_cursor = client.get_historical_orders(symbol="BTC-EUR", limit=20)