Place Multi Order — Execute Multiple Orders in One Request¶
The Multi Order API lets you submit multiple independent orders using a single API request.
This reduces the number of outbound API calls you need to make, especially for basket trades or multi-leg strategies.
⚠️ Important:
Multi Order does not merge execution.
Each order is still routed, evaluated, and filled independently at the exchange.
Single Order vs Multi Order (Basket)¶
Single Orders
Orders are placed individually.
Each request is its own API call with separate
routing and acknowledgement.
- One API request per order
- Each order is routed independently
- Good for occasional trades
- More network overhead for multi-leg strategies
Multi Order (Basket)
Multi Order lets you send multiple full order objects
inside a single API request.
This groups the submission — but each order is still
executed independently by the exchange.
- All orders submitted in one API request
- Simplifies basket or multi-leg submission
- Reduces outbound requests (not exchange latency)
- Each order behaves like a normal standalone order
How Multi Order Works¶
- You pass an array of independent order objects
- Nubra sends them in one API request
- The exchange still evaluates each order separately
- The response returns one result per order, plus basket metadata
This is submission-level grouping — not execution grouping.
Multi Order — Example¶
from nubra_python_sdk.start_sdk import InitNubraSdk, NubraEnv
from nubra_python_sdk.marketdata.market_data import MarketData
from nubra_python_sdk.trading.trading_data import NubraTrader
# 1. Initialize Nubra SDK
nubra = InitNubraSdk(NubraEnv.UAT)
# 2. Fetch Market Quote (used for both orders)
md = MarketData(nubra)
REF_ID = 1842210 # Common instrument for both legs
quote = md.quote(ref_id=REF_ID, levels=5)
ltp = quote.orderBook.last_traded_price
print(f"LTP: {ltp}")
# 3. Create Multi Order (Basket)
trade = NubraTrader(nubra, version="V2")
TOTAL_QTY = 1000 # Iceberg total quantity
LEG_SIZE = 100 # Visible quantity per iceberg leg
STOPLOSS_QTY = 50 # Stop-loss order quantity
result = trade.multi_order([
{
"ref_id": REF_ID,
"order_type": "ORDER_TYPE_STOPLOSS",
"order_qty": STOPLOSS_QTY,
"order_side": "ORDER_SIDE_BUY",
"order_delivery_type": "ORDER_DELIVERY_TYPE_IDAY",
"validity_type": "DAY",
"price_type": "LIMIT",
"order_price": ltp + 50,
"exchange": "NSE",
"tag": "stoploss_leg",
"algo_params": {
"trigger_price": ltp + 30
}
},
{
"ref_id": REF_ID,
"order_type": "ORDER_TYPE_ICEBERG",
"order_qty": TOTAL_QTY,
"order_side": "ORDER_SIDE_BUY",
"order_delivery_type": "ORDER_DELIVERY_TYPE_CNC",
"validity_type": "DAY",
"price_type": "LIMIT",
"order_price": ltp + 10,
"exchange": "NSE",
"tag": "iceberg_leg",
"algo_params": {
"leg_size": LEG_SIZE
}
}
])
print("Multi Order Response:")
print(result)