Как закрыть take profit и stop loss в pybit?

Ссылка скопирована
1 ответ

Я открываю позицию в лонг

client.place_order(         category="linear",         symbol="BTCUSDT",          side="Buy",         orderType="Market",         qty=quantity,          isLeverage=1,         positionIdx=1,         timeInForce="GTC",          reduceOnly=False,         closeOnTrigger=False,     )

client.place_order( category="linear", symbol="BTCUSDT", side="Buy", orderType="Market", qty=quantity, isLeverage=1, positionIdx=1, timeInForce="GTC", reduceOnly=False, closeOnTrigger=False, )

Далее выставляю тейк профит для этого лонга

client.set_trading_stop(         category="linear",         symbol="BTCUSDT",         tpslMode="Partial",          stopLoss=0,         slTriggerB="IndexPrice",         slOrderType="Market",         slSize=str(quantity),          takeProfit=price,         tpTriggerB="IndexPrice",         tpOrderType="Market",         tpSize=str(quantity),          positionIdx=1,     )

client.set_trading_stop( category="linear", symbol="BTCUSDT", tpslMode="Partial", stopLoss=0, slTriggerB="IndexPrice", slOrderType="Market", slSize=str(quantity), takeProfit=price, tpTriggerB="IndexPrice", tpOrderType="Market", tpSize=str(quantity), positionIdx=1, )

На неком этапе мне нужно убрать этот тейк профит, я пытался делать это следующим образом

client.set_trading_stop(     category="linear",     symbol="BTCUSDT",     tpslMode="Full",      stopLoss=0,     slTriggerB="MarketPrice",     slOrderType="Market",     slSize=str(0),      takeProfit=0,     tpTriggerB="MarketPrice",     tpOrderType="Market",     tpSize=str(0),      positionIdx=1, )

client.set_trading_stop( category="linear", symbol="BTCUSDT", tpslMode="Full", stopLoss=0, slTriggerB="MarketPrice", slOrderType="Market", slSize=str(0), takeProfit=0, tpTriggerB="MarketPrice", tpOrderType="Market", tpSize=str(0), positionIdx=1, )

В какой-то момент это сработало и я думал что все работает как надо, однако повторить у меня это потом не получилось, я закрывал все позиции по лонгам, заново открыл и поставил тейк-профит, но на этот раз мне выбивает вот эту ошибку:

pybit.exceptions.InvalidRequestError: not modified (ErrCode: 34040)

pybit.exceptions.InvalidRequestError: not modified (ErrCode: 34040)

И последующие так же не дает убрать. Можете пожалуйста объяснить что я делаю не так, возможно есть какие-то факторы которые не дают мне убрать тейк-профит ? Однако я повторял все так же как и в первый раз

Дополнительно:

могу предположить, что рыночная цена слишком близко к ордеру или к его цели. В этом случае торговая платформа может накладывать ограничение на модификацию ордера. Перед модификацией проверяйте расстояние до рыночной цены.

Разобрался, они засуну отмену позиций по стопам и тейкам в отмену ордеров

client.cancel_all_orders(category="linear", symbol="BTCUSDT", orderFilter="StopOrder", stopOrderType="tpslOrder") # в stopOrderType засовываем что отменяет, в данном случае все стопы и тейки

client.cancel_all_orders(category="linear", symbol="BTCUSDT", orderFilter="StopOrder", stopOrderType="tpslOrder") # в stopOrderType засовываем что отменяет, в данном случае все стопы и тейки

Нужно решить такую задачу?

Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

Заказать помощь
Лучший ответ
1
Сергей Миронов Ответ

Для закрытия take profit и stop loss в pybit, вам необходимо использовать метод close_order() из библиотеки pybit. Этот метод позволяет закрыть ордер по его ID и указать цену закрытия.

Вот пример кода на Python, который показывает, как закрыть take profit и stop loss:

import pybit
 
# Создаем экземпляр клиента pybit
client = pybit.Client(api_key='your_api_key', api_secret='your_api_secret')
 
# ID ордера, который нужно закрыть
order_id = 'your_order_id'
 
# Цена закрытия take profit
take_profit_price = 15000
 
# Цена закрытия stop loss
stop_loss_price = 12000
 
# Закрытие take profit
client.close_order(order_id, take_profit_price, type='take_profit')
 
# Закрытие stop loss
client.close_order(order_id, stop_loss_price, type='stop_loss')

import pybit # Создаем экземпляр клиента pybit client = pybit.Client(api_key='your_api_key', api_secret='your_api_secret') # ID ордера, который нужно закрыть order_id = 'your_order_id' # Цена закрытия take profit take_profit_price = 15000 # Цена закрытия stop loss stop_loss_price = 12000 # Закрытие take profit client.close_order(order_id, take_profit_price, type='take_profit') # Закрытие stop loss client.close_order(order_id, stop_loss_price, type='stop_loss')

В этом коде мы сначала импортируем библиотеку pybit и создаем экземпляр клиента, используя ваш API ключ и секрет. Затем мы указываем ID ордера, который нам нужно закрыть, и цены закрытия для take profit и stop loss. Наконец, мы вызываем метод close_order() с указанием типа закрытия (take_profit или stop_loss) и передаем цену закрытия.

Пожалуйста, убедитесь, что у вас есть доступ к API pybit и что вы используете правильные параметры для вашего ордера. Надеюсь, этот ответ поможет вам успешно закрыть take profit и stop loss в pybit.

Другие ответы (0)

Пока нет других ответов. Будьте первым, кто поможет автору.

Ответить на вопрос

комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Вам также может быть интересно