Placing Orders

Learn how to trade on PercolatePerps

PercolatePerps supports various order types for flexible trading strategies.

// Example: Place a limit order
const capability = await client.createCapability(wallet, {
  expiry: Date.now() + 120_000, // 2 minutes
});

const order = await client.placeOrder({
  slab: SOL_PERP_SLAB,
  side: 'buy',
  orderType: 'limit',
  price: 187.52,
  size: 10,
  capability,
  postOnly: true, // Optional: ensure maker order
});

console.log('Order placed:', order.orderId);

Order Types

Market Orders

Execute immediately at the best available price. Ideal for entering or exiting positions quickly.

Limit Orders

Set a specific price for your order. Only executes when the market reaches your target price.

Stop Orders

Trigger a market order when a specific price is reached. Perfect for stop-loss and take-profit strategies.

Two-Phase Execution

All orders go through a two-phase reserve-commit process to prevent MEV attacks:

// Phase 1: Reserve resources
const reservation = await slab.reserve_order({
  user_escrow: user.escrow,
  order_params: { price, size, side },
});

// Phase 2: Commit transaction (atomic)
const result = await slab.commit_order({
  reservation_id: reservation.id,
  signature: user.sign(reservation),
});
1
Reserve Phase
Resources are reserved and locked for the transaction
2
Commit Phase
Transaction is executed atomically with reserved resources

Advanced Features

Explore portfolio margin and MEV protection