Как закрыть take profit и stop loss в pybit?
Я открываю позицию в лонг
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 засовываем что отменяет, в данном случае все стопы и тейки
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос
Для закрытия 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')
В этом коде мы сначала импортируем библиотеку pybit и создаем экземпляр клиента, используя ваш API ключ и секрет. Затем мы указываем ID ордера, который нам нужно закрыть, и цены закрытия для take profit и stop loss. Наконец, мы вызываем метод close_order() с указанием типа закрытия (take_profit или stop_loss) и передаем цену закрытия.
Пожалуйста, убедитесь, что у вас есть доступ к API pybit и что вы используете правильные параметры для вашего ордера. Надеюсь, этот ответ поможет вам успешно закрыть take profit и stop loss в pybit.