How to create a futures limit order together with take profit and stop loss?

I am trying to create a limit order together with take profit and stop loss on binance, but this does not always work. Occasionally this code does everything right, but most often I get the error “API Error(code=-2021): Order would immediately trigger.” Sometimes applications can be created, but after a couple of seconds they just disappear. What is the mistake?

from binance.client import Client
from binance.helpers import round_step_size

api_key = ''
api_secret = ''
client = Client(api_key, api_secret)
symbol = 'KNCUSDT'


def get_account_balance():
    balance = client.futures_account_balance()[6]['balance']
    return float(balance)


def get_min_quant(symbol):
    info = client.futures_exchange_info()
    for item in info['symbols']:
        if item['symbol'] == symbol:
            for f in item['filters']:
                if f['filterType'] == 'PRICE_FILTER':
                    return f['tickSize']



bet = 13  # the percentage of the balance I am willing to buy with
balance = get_account_balance() * bet / 100

tick_size = float(get_min_quant(symbol))
print(tick_size)

symbol_info = client.get_ticker(symbol=symbol)
symbol_price = float(symbol_info['lastPrice'])
quantity = int(balance / symbol_price)

enter_long_coeff = 0.4
take_profit_percent = 0.2
stop_loss_percent = 0.2

price_long_enter = symbol_price * (1 - enter_long_coeff / 100)  # entry price for a limit order
price_long_enter = round_step_size(price_long_enter, tick_size)

take_profit_price = price_long_enter * (1 + take_profit_percent / 100)
take_profit_price = round_step_size(take_profit_price, tick_size)

stop_loss_price = price_long_enter * (1 + take_profit_percent / 100)
stop_loss_price = round_step_size(stop_loss_price, tick_size)

print(price_long_enter)
print(stop_loss_price)
print(take_profit_price)
print('=======')

limit_order_long = client.futures_create_order(
    symbol=symbol,
    side='BUY',
    positionSide='LONG',
    type='LIMIT',
    quantity=quantity,
    timeInForce='GTC',
    price=price_long_enter
)

sell_gain_market_long = client.futures_create_order(
    symbol=symbol,
    side='SELL',
    type='TAKE_PROFIT_MARKET',
    positionSide='LONG',
    quantity=quantity,
    stopPrice=take_profit_price
)

sell_stop_market_short = client.futures_create_order(
    symbol=symbol,
    side='SELL',
    type='STOP_MARKET',
    positionSide='LONG',
    quantity=quantity,
    stopPrice=stop_loss_price
)

Occasionally this code does everything right, but most often I get the error “API Error(code=-2021): Order would immediately trigger.”

This error implies that the order’s stopPrice does not abide to the order type’s rules.

TAKE PROFIT SELL and STOP LOSS BUY Orders, stopPrice >= market price
TAKE PROFIT BUY and STOP LOSS SELL Orders, stopPrice <= market price