Place & Manage Orders

trading needs credentials — see API Keys Setup. Every example below targets testnet=True; run write calls against testnet only.

Place An Order

buy/sell take one positional argument, a discriminated union keyed by type (limit, market, stop_limit, ...):

from typed_deribit import Deribit

async with Deribit.new(testnet=True) as client:
  order = await client.http.trading.buy({
    'instrument_name': 'BTC-PERPETUAL',
    'amount': 10,
    'type': 'limit',
    'price': 32503.0,
  })
  print(order['order']['order_id'], order['order']['order_state'])

Inspect Open Orders

from typed_deribit import Deribit

async with Deribit.new(testnet=True) as client:
  orders = await client.http.trading.get_open_orders_by_instrument(
    instrument_name='BTC-PERPETUAL',
  )
  for order in orders:
    print(order['order_id'], order['direction'], order['price'])

Query An Order

from typed_deribit import Deribit

async with Deribit.new(testnet=True) as client:
  order = await client.http.trading.get_order_state(order_id='some-order-id')
  print(order['order_state'], order.get('filled_amount'))

Cancel An Order

from typed_deribit import Deribit

async with Deribit.new(testnet=True) as client:
  cancelled = await client.http.trading.cancel(order_id='some-order-id')
  print(cancelled['order_state'])

Cancel All Orders

from typed_deribit import Deribit

async with Deribit.new(testnet=True) as client:
  count = await client.http.trading.cancel_all()
  print(count)

cancel_all_by_instrument and cancel_all_by_currency narrow the same bulk cancel to one instrument or currency instead of every open order.