LogoLogo
  • Getting Started
  • How to Connect
  • REST API
    • Order
    • PublicMarketData
    • Wallet
    • Trade
    • Models
  • Smart Contract ABI
    • OrderBook
    • Order Data (explanation)
  • Websocket API
    • Orderbook
    • Ticker
  • SDK Documentation
    • Getting Started
    • REST API Interaction
    • Smart Contract Interaction
      • Order Placement
      • Order Cancelation
Powered by GitBook

Privacy

  • Privacy Policy

All rights reserved. 21X AG

On this page
  • Steps to Cancel an Order
  • Initialize the REST API Client
  • Fetch Open Orders
  • Retrieve OrderBook Address
  • Initialize the OrderBook Class
  • Cancel the Order
Export as PDF
  1. SDK Documentation
  2. Smart Contract Interaction

Order Cancelation

This example demonstrates how to cancel an order on the 21X platform. It involves using the REST client to retrieve the user’s open orders, extracting the orderId, initializing the OrderBook class, and canceling the order.


Steps to Cancel an Order

Initialize the REST API Client

Use the REST client to fetch the open orders associated with your wallet.

from x21_sdk import Client

# Initialize the REST client with authentication
client = Client()

Fetch Open Orders

Retrieve the list of open orders for your wallet using getWalletOrders.

from x21_sdk.client.api.order import get_wallet_orders
from x21_sdk.client.models import OrderStatusEnum, OrderKindEnum

wallet_address = "0xYourWalletAddress"
wallet_orders = get_wallet_orders.sync(
    client=client,
    wallet_address=wallet_address,
    only_open=True,  # Ensure only open orders are retrieved
)

# Display open orders
for order in wallet_orders.items:
    print(order)

selected_order = next(
    order
    for order in wallet_orders.items
    if order.status == OrderStatusEnum.OPEN and order.order_kind == OrderKindEnum.BUY
)

# Select an order ID to cancel
trading_pair_id = selected_order.trading_pair_id
order_id_to_cancel = selected_order.external_order_id

Retrieve OrderBook Address

Use the getTradingPair endpoint to retrieve general information for the selected trading pair.

from x21_sdk.client.api.public_market_data import get_trading_pair

trading_pair = get_trading_pair.sync(
    client=client,
    id=trading_pair_id,
)

orderbook_address = trading_pair.smart_contract_order_book

Initialize the OrderBook Class

Use the orderbook_address (of the trading_pair) to initialize the OrderBook class for smart contract interaction.

from x21_sdk import OrderBook

# fetch orderbook_address via the trading_pair_id

# Initialize the OrderBook with Web3 provider and contract address
order_book = OrderBook(
  private_key="your_private_key",
  orderbook_addr=orderbook_address,
  rpc_url="https://polygon-mainnet.g.alchemy.com/v2/YOUR_API_KEY",
)

Cancel the Order

Use the cancel_buy_order or cancel_sell_order method, depending on the type of order you wish to cancel.

# Example: Cancel a buy order
order_book.cancel_buy_order(order_id=order_id_to_cancel)

print(f"Order canceled successfully!")

Summary of Workflow

  1. Use the REST API client to fetch open orders for your wallet via getWalletOrders.

  2. Extract the orderId and corresponding trading_pair_id from the response.

  3. Fetch the trading_pair information to get the corresponding orderbook_address.

  4. Initialize the OrderBook class with the retrieved address.

  5. Cancel the specified order using the appropriate OrderBook method.

PreviousOrder Placement

Last updated 1 month ago