Skip to main content

Create Strategy Order

Create a strategy order. Supported strategy types: chaseOrder, twap, iceberg.

Strategy Types

TWAP (Time-Weighted Average Price)

Splits a large order into equal-sized sub-orders executed at fixed time intervals, minimizing market impact and achieving a price close to the time-weighted average.

Execution logic: Number of sub-orders = Running Time (seconds) ÷ Frequency. Sub-orders that fail to fill are retried once; if unsuccessful, they are canceled and the strategy continues.

Please refer to Introduction to TWAP Strategy to get more details.

ParameterConstraint
Total quantity (size)Must be ≥ Max(MinNotional × subOrders ÷ LastPrice × 1.1, MinSize × subOrders)
Running time (duration)5 minutes – 24 hours
Sub-order interval (interval)5 – 120 seconds
Sub-order quantity≤ 50% of the exchange's maximum single order size (Perpetual/Futures)
Random quantity variance±20% if isRandom is enabled

Chase Order (Chase Limit Order)

Continuously places and adjusts a limit order at the best bid/ask price to track market movements until the order is fully filled, canceled, or reaches the maximum chase distance.

Execution logic: The order price updates every second. All Chase Limit Orders are Post Only by default (maker execution). If the order is rejected by the Post Only condition 5 consecutive times, the strategy is canceled.

Please refer to Chase Limit Order to get more details.


Iceberg Order

Splits a large order into multiple smaller sub-orders that are placed sequentially, revealing only a small portion of the total order size to the market at any one time.

Execution logic: Each sub-order enters the order book → upon fill, the next sub-order is automatically placed → repeats until the full quantity is executed.

Please refer to Iceberg Order to get more details.

Order preferences:

PreferenceExecution behavior
Chase Limit (Taker)Buy at Ask1 / Sell at Bid1; prioritizes speed
Chase LimitBuy at Bid1 / Sell at Ask1; maker execution
Chase Limit (offset)Fixed distance from Ask1/Bid1; balances speed and cost
Fixed PricesAll sub-orders placed at a single fixed price

HTTP Request

POST/v5/strategy/create

Request Parameters

ParameterRequiredTypeComments
categorytruestringProduct type. UTA_USDT(USDT Perpetual), UTA_USDC(USDC Perpetual), UTA_SPOT(Spot), UTA_INVERSE(Inverse Perpetual), UTA_INVERSE_FUTURE(Inverse Futures), UTA_USDT_FUTURE(USDT Futures)
symboltruestringSymbol name, e.g. BTCUSDT
sidetruestringBuy, Sell
sizefalsestringTotal order quantity (coin). Either "size" or "positionValue" is needed
positionValuefalsestringTotal order quantity (value). Either "size" or "positionValue" is needed
strategyTypetruestringStrategy type. twap
durationtrueintegerTotal execution duration in seconds. Range: [300, 86400]. Must be divisible by interval
reduceOnlyfalsebooleanReduce-only order, must set true when reducing the position. true, false
positionIdxfalseintegerPosition index. 0: one-way mode, 1: buy side of hedge mode, 2: sell side of hedge mode. Required for hedge mode
leverageTypefalseintegerSpot leverage type. 0: normal, 1: borrow to trade (UTA_SPOT only)
intervalfalseintegerSub-order placement interval in seconds. 5, 10, 15, 30(default), 60, 120
isRandomfalsebooleanWhether to randomize each sub-order quantity by ±20%
triggerPricefalsestringAdvanced settings (Trigger price): Strategy activates when the market price reaches this value
maxChasePricefalsestringAdvanced settings (Stop Price): Strategy terminates when the last traded price reaches this value
chaseDistancefalsestringAdvanced settings - ordertype=Limit (default: market): Price distance from best bid/ask (absolute value), e.g. "0.5". Mutually exclusive with chasePercentE4; chaseDistance takes priority if both are set
chasePercentE4falseintegerAdvanced settings - ordertype=Limit (default: market): Price offset from best bid/ask in basis points (1/10000), e.g. 100 = 1%. Mutually exclusive with chaseDistance

Response Parameters

ParameterTypeComments
strategyIdstringStrategy ID (UUID format)
resultstringExecution result. null if creation succeeded

Request Example

POST /v5/strategy/create HTTP/1.1
Host: api-testnet.bybit.com
X-BAPI-SIGN: XXXXX
X-BAPI-API-KEY: xxxxxxxxxxxxxxxxxx
X-BAPI-TIMESTAMP: 1773711467000
X-BAPI-RECV-WINDOW: 5000
Content-Type: application/json

{
"side": "Buy",
"symbol": "BTCUSDT",
"reduceOnly": false,
"category": "UTA_USDT",
"size": "0.1",
"positionIdx": 1,
"strategyType": "chaseOrder",
"chasePrice": "75967.7",
"maxChasePrice": "83564.5",
"triggerPrice": "75000.0"
}

Response Example

{
"retCode": 0,
"retMsg": "success",
"result": {
"strategyId": "119b6211-2611-461b-be5e-5ac557099e82",
"result": null
},
"retExtInfo": {},
"time": 1773711467052
}