New Order(TRADE)
API Description
Send in a new order.
HTTP Request
POST /fapi/v1/order
Request Weight
1 on 10s order rate limit(X-MBX-ORDER-COUNT-10S); 1 on 1min order rate limit(X-MBX-ORDER-COUNT-1M); 0 on IP rate limit(x-mbx-used-weight-1m)
Request Parameters
| Name | Type | Mandatory | Description |
|---|---|---|---|
| symbol | STRING | YES | |
| side | ENUM | YES | |
| positionSide | ENUM | NO | Default BOTH for One-way Mode ; LONG or SHORT for Hedge Mode. It must be sent in Hedge Mode. |
| type | ENUM | YES | |
| timeInForce | ENUM | NO | |
| quantity | DECIMAL | NO | Cannot be sent with closePosition=true(Close-All) |
| reduceOnly | STRING | NO | "true" or "false". default "false". Cannot be sent in Hedge Mode; cannot be sent with closePosition=true |
| price | DECIMAL | NO | |
| newClientOrderId | STRING | NO | A unique id among open orders. Automatically generated if not sent. Can only be string following the rule: ^[\.A-Z\:/a-z0-9_-]{1,36}$ |
| stopPrice | DECIMAL | NO | Used with STOP/STOP_MARKET or TAKE_PROFIT/TAKE_PROFIT_MARKET orders. |
| closePosition | STRING | NO | true, false;Close-All,used with STOP_MARKET or TAKE_PROFIT_MARKET. |
| activationPrice | DECIMAL | NO | Used with TRAILING_STOP_MARKET orders, default as the latest price(supporting different workingType) |
| callbackRate | DECIMAL | NO | Used with TRAILING_STOP_MARKET orders, min 0.1, max 10 where 1 for 1% |
| workingType | ENUM | NO | stopPrice triggered by: "MARK_PRICE", "CONTRACT_PRICE". Default "CONTRACT_PRICE" |
| priceProtect | STRING | NO | "TRUE" or "FALSE", default "FALSE". Used with STOP/STOP_MARKET or TAKE_PROFIT/TAKE_PROFIT_MARKET orders. |
| newOrderRespType | ENUM | NO | "ACK", "RESULT", default "ACK" |
| priceMatch | ENUM | NO | only avaliable for LIMIT/STOP/TAKE_PROFIT order; can be set to OPPONENT/ OPPONENT_5/ OPPONENT_10/ OPPONENT_20: /QUEUE/ QUEUE_5/ QUEUE_10/ QUEUE_20; Can't be passed together with price |
| selfTradePreventionMode | ENUM | NO | EXPIRE_TAKER:expire taker order when STP triggers/ EXPIRE_MAKER:expire taker order when STP triggers/ EXPIRE_BOTH:expire both orders when STP triggers; default NONE |
| goodTillDate | LONG | NO | order cancel time for timeInForce GTD, mandatory when timeInforce set to GTD; order the timestamp only retains second-level precision, ms part will be ignored; The goodTillDate timestamp must be greater than the current time plus 600 seconds and smaller than 253402300799000 |
| recvWindow | LONG | NO | |
| timestamp | LONG | YES |
Additional mandatory parameters based on type:
| Type | Additional mandatory parameters |
|---|---|
LIMIT | timeInForce, quantity, price |
MARKET | quantity |
STOP/TAKE_PROFIT | quantity, price, stopPrice |
STOP_MARKET/TAKE_PROFIT_MARKET | stopPrice |
TRAILING_STOP_MARKET | callbackRate |
Order with type
STOP, parametertimeInForcecan be sent ( defaultGTC).Order with type
TAKE_PROFIT, parametertimeInForcecan be sent ( defaultGTC).Condition orders will be triggered when:
- If parameter
priceProtectis sent as true:
- when price reaches the
stopPrice,the difference rate between "MARK_PRICE" and "CONTRACT_PRICE" cannot be larger than the "triggerProtect" of the symbol- "triggerProtect" of a symbol can be got from
GET /fapi/v1/exchangeInfoSTOP,STOP_MARKET:
- BUY: latest price ("MARK_PRICE" or "CONTRACT_PRICE") >=
stopPrice- SELL: latest price ("MARK_PRICE" or "CONTRACT_PRICE") <=
stopPriceTAKE_PROFIT,TAKE_PROFIT_MARKET:
- BUY: latest price ("MARK_PRICE" or "CONTRACT_PRICE") <=
stopPrice- SELL: latest price ("MARK_PRICE" or "CONTRACT_PRICE") >=
stopPriceTRAILING_STOP_MARKET:
- BUY: the lowest price after order placed
<=activationPrice, and the latest price >= the lowest price * (1 +callbackRate)- SELL: the highest price after order placed >=
activationPrice, and the latest price <= the highest price * (1 -callbackRate)For
TRAILING_STOP_MARKET, if you got such error code.
{"code": -2021, "msg": "Order would immediately trigger."}
means that the parameters you send do not meet the following requirements:
- BUY:
activationPriceshould be smaller than latest price.- SELL:
activationPriceshould be larger than latest price.If
newOrderRespTypeis sent asRESULT:
MARKETorder: the final FILLED result of the order will be return directly.LIMITorder with specialtimeInForce: the final status result of the order(FILLED or EXPIRED) will be returned directly.
STOP_MARKET,TAKE_PROFIT_MARKETwithclosePosition=true:
- Follow the same rules for condition orders.
- If triggered,close all current long position( if
SELL) or current short position( ifBUY).- Cannot be used with
quantityparemeter- Cannot be used with
reduceOnlyparameter- In Hedge Mode,cannot be used with
BUYorders inLONGposition side. and cannot be used withSELLorders inSHORTposition side
selfTradePreventionModeis only effective whentimeInForceset toIOCorGTCorGTD.In extreme market conditions, timeInForce
GTDorder auto cancel time might be delayed comparing togoodTillDate
Response Example
{
"clientOrderId": "testOrder",
"cumQty": "0",
"cumQuote": "0",
"executedQty": "0",
"orderId": 22542179,
"avgPrice": "0.00000",
"origQty": "10",
"price": "0",
"reduceOnly": false,
"side": "BUY",
"positionSide": "SHORT",
"status": "NEW",
"stopPrice": "9300", // please ignore when order type is TRAILING_STOP_MARKET
"closePosition": false, // if Close-All
"symbol": "BTCUSDT",
"timeInForce": "GTD",
"type": "TRAILING_STOP_MARKET",
"origType": "TRAILING_STOP_MARKET",
"activatePrice": "9020", // activation price, only return with TRAILING_STOP_MARKET order
"priceRate": "0.3", // callback rate, only return with TRAILING_STOP_MARKET order
"updateTime": 1566818724722,
"workingType": "CONTRACT_PRICE",
"priceProtect": false, // if conditional order trigger is protected
"priceMatch": "NONE", //price match mode
"selfTradePreventionMode": "NONE", //self trading preventation mode
"goodTillDate": 1693207680000 //order pre-set auot cancel time for TIF GTD order
}