設置止盈止損
該接口可以設置止盈、止損和追蹤止損
提示
在提交請求後,系統內部將會自動創建對應類型的條件單。若倉位被平,系統將會調整相關條件訂單數量或者取消這些條件單。
信息
新版止盈止損, 支持既持有全部止盈止損單, 也可以持有部分止盈止損單
- 全部倉位止盈止損單: 該接口可用於修改該類型的止盈止損單的參數
- 部分倉位止盈止損單: 該接口僅能新增部分倉位止盈止損單
備註
新版止盈止損下, 調用該接口對持倉上的已有的止盈止損進行單邊止盈或者止損修改時, 會導致成對的tp/sl訂單失去綁定關係, 這意味著當通過tp/sl訂單ID調用 取消接口時, 只會取消對應訂單ID的單邊止盈或止損.
HTTP 請求
POST /v5/position/trading-stop
請求參數
參數 | 是否必需 | 類型 | 說明 |
---|---|---|---|
category | true | string | 產品類型 |
symbol | true | string | 合約名稱 |
takeProfit | false | string | 止盈價格. 等於0表示取消止盈,若不修改,則不要傳遞該參數 |
stopLoss | false | string | 止損價格. 等於0表示取消止損,若不修改,則不要傳遞該參數 |
trailingStop | false | string | 追蹤止損, 僅支持按價差設置. 等於0表示取消追蹤止損,若不修改,則不要傳遞該參數 |
tpTriggerBy | false | string | 止盈價格類型 |
slTriggerBy | false | string | 止損價格類型 |
activePrice | false | string | 追蹤止損激活價格. 追蹤止損會在到達該價格時觸發 |
tpslMode | true | string | 止盈止損模式. Full : 全部倉位止盈止損, Partial : 部分倉位止盈止損 |
tpSize | false | string | 止盈倉位數量. 僅部分止盈止損時有效. 注意: tpSize和slSize的數值必須相等 |
slSize | false | string | 止損倉位數量. 僅部分止盈止損時有效. 注意: tpSize和slSize的數值必須相等 |
tpLimitPrice | false | string | 觸發止盈後轉換為限價單的價格 僅tpslMode=Partial且tpOrderType=Limit時有效 |
slLimitPrice | false | string | 觸發止損後轉換為限價單的價格 僅tpslMode=Partial且slOrderType=Limit時有效 |
tpOrderType | false | string | 止盈觸發後的訂單類型. Market (默認), Limit 對於tpslMode=Full時, 僅支持tpOrderType=Market |
slOrderType | false | string | 止損觸發後的訂單類型. Market (默認), Limit 對於tpslMode=Full時, 僅支持slOrderType=Market |
positionIdx | true | integer | 倉位標識,用戶識別倉位.
|
響應參數
無
請求示例
- HTTP
- Python
- Java
- Node.js
POST /v5/position/trading-stop HTTP/1.1
Host: api-testnet.bybit.com
X-BAPI-SIGN: XXXXX
X-BAPI-API-KEY: XXXXX
X-BAPI-TIMESTAMP: 1672283124270
X-BAPI-RECV-WINDOW: 5000
Content-Type: application/json
{
"category":"linear",
"symbol": "XRPUSDT",
"takeProfit": "0.6",
"stopLoss": "0.2",
"tpTriggerBy": "MarkPrice",
"slTriggerBy": "IndexPrice",
"tpslMode": "Partial",
"tpOrderType": "Limit",
"slOrderType": "Limit",
"tpSize": "50",
"tpLimitPrice": "0.57",
"slLimitPrice": "0.21",
"positionIdx": 0
}
from pybit.unified_trading import HTTP
session = HTTP(
testnet=True,
api_key="XXXXX",
api_secret="XXXXX",
)
print(session.set_trading_stop(
category="linear",
symbol="XRPUSDT",
takeProfit="0.6",
stopLoss="0.2",
tpTriggerBy="MarkPrice",
slTriggerB="IndexPrice",
tpslMode="Partial",
tpOrderType="Limit",
slOrderType="Limit",
tpSize="50",
slSize="50",
tpLimitPrice="0.57",
slLimitPrice="0.21",
positionIdx=0,
))
import com.bybit.api.client.domain.*;
import com.bybit.api.client.domain.position.*;
import com.bybit.api.client.domain.position.request.*;
import com.bybit.api.client.service.BybitApiClientFactory;
var client = BybitApiClientFactory.newInstance().newAsyncPositionRestClient();
var setTradingStopRequest = PositionDataRequest.builder().category(CategoryType.LINEAR).symbol("XRPUSDT").takeProfit("0.6").stopLoss("0.2").tpTriggerBy(TriggerBy.MARK_PRICE).slTriggerBy(TriggerBy.LAST_PRICE)
.tpslMode(TpslMode.PARTIAL).tpOrderType(TradeOrderType.LIMIT).slOrderType(TradeOrderType.LIMIT).tpSize("50").slSize("50").tpLimitPrice("0.57").slLimitPrice("0.21").build();
client.setTradingStop(setTradingStopRequest, System.out::println);
const { RestClientV5 } = require('bybit-api');
const client = new RestClientV5({
testnet: true,
key: 'apikey',
secret: 'apisecret',
});
client
.setTradingStop({
category: 'linear',
symbol: 'XRPUSDT',
takeProfit: '0.6',
stopLoss: '0.2',
tpTriggerBy: 'MarkPrice',
slTriggerBy: 'IndexPrice',
tpslMode: 'Partial',
tpOrderType: 'Limit',
slOrderType: 'Limit',
tpSize: '50',
slSize: '50',
tpLimitPrice: '0.57',
slLimitPrice: '0.21',
positionIdx: 0,
})
.then((response) => {
console.log(response);
})
.catch((error) => {
console.error(error);
});
響應示例
{
"retCode": 0,
"retMsg": "OK",
"result": {},
"retExtInfo": {},
"time": 1672283125359
}