Привет!
Есть функция:

SYMBOL = "BTCUSDT"

    def get_filters(self):
 
        r = self.cl.get_instruments_info(symbol=self.symbol, category=self.category)
        c = r.get('result', {}).get('list', [])[0]
        print(c)

		


	 
Так же print(c) выдало:

{'symbol': 'BTCUSDT', 'contractType': 'LinearPerpetual', 'status': 'Trading', 'baseCoin': 'BTC', 'quoteCoin': 'USDT', 'launchTime': '1584230400000', 'deliveryTime': '0', 'deliveryFeeRate': '', 'priceScale': '2', 'leverageFilter': {'minLeverage': '1', 'maxLeverage': '100.00', 'leverageStep': '0.01'}, 'priceFilter': {'minPrice': '0.10', 'maxPrice': '1999999.80', 'tickSize': '0.10'}, 'lotSizeFilter': {'maxOrderQty': '1190.000', 'minOrderQty': '0.001', 'qtyStep': '0.001', 'postOnlyMaxOrderQty': '1190.000', 'maxMktOrderQty': '119.000', 'minNotionalValue': '5'}, 'unifiedMarginTrade': True, 'fundingInterval': 480, 'settleCoin': 'USDT', 'copyTrading': 'both', 'upperFundingRate': '0.005', 'lowerFundingRate': '-0.005', 'isPreListing': False, 'preListingInfo': None, 'riskParameters': {'priceLimitRatioX': '0.01', 'priceLimitRatioY': '0.02'}, 'displayName': ''}

Это просто тебе для понимания, как находить требования к лоту при открытии позиции.

ПРИМЕР Размещение рыночного ордера:
/////
class FuturesOrders:
    def __init__(self):
        """
        Конструктор класса и инициализация
        - клиента pybit
        - получение параметров и фильтров Инструмента
        """
        self.cl = HTTP(api_key=API_KEY, api_secret=SECRET_KEY)
        self.category = "linear"
        self.symbol = SYMBOL
        self.price_decimals, self.qty_decimals, self.min_qty = self.get_filters()


    def place_market_order_by_base(self, qty : float = 0.00001, side : str = "Sell"):
        """
        Размещение рыночного ордера с указанием размера ордера в Базовой Валюте (BTC, XRP, etc)
        :param qty:
        :param side:
        :return:
        """
        args = dict(
            category=self.category,
            symbol=self.symbol,
            side=side.capitalize(),
            orderType="Market",
            qty=self.floor_qty(qty),
            orderLinkId=f"AzzraelCode_{self.symbol}_{time.time()}"
        )
        self.log("args", args)

        r = self.cl.place_order(**args)
        self.log("result", r)

        return r

/////
	
И есть недописанная фунция открытия позиции:

def open_position(instrument, enter_price, reason):
    data = active_instruments[instrument]
    data['enter'] = True
    data['enter_price'] = enter_price
    data['hour_of_entry'] = data['hours_passed']
	balance = data['balance']
    print(f"✅ {get_current_datetime_formatted()} Вход в позицию {instrument}, {reason} Цена входа: {enter_price}")

	
Что мне нужно:

Переделать весь код, в котором базовая функция будет def open_position, т.к. я её пишу, остальной представленный тебе код это примеры из других источников.
Я хочу открыть позицию на сумму 70% от баланса кошелька (balance) в USDT.
Но т.к. это фьючерсы, то позиция открывается только при указании базовой валюты, т.е. в монетах а не USDT, поэтому надо рассчитать их количество.
Цена монеты на момент входа это enter_price
Код не должен содержать классов!
В случае недостаточного баланса (несоответствие требования к минимального лота) вывести сообщение.
'minNotionalValue': '5' это тоже можно включить. Т.е. это минимальная сумма лота в USDT.
Недостаточность баланса необходимо считать, учитывая плечо (leverage) 5x, оно всегда статично.