Я пишу бота для торговли, можешь ли ты мне как то помочь его улучшить, потому что мне кажется он неправильно работает

Создайте торгового бота, который моделирует торговлю используя открытые данные какой-либо криптобиржи (bybit, binance, …) на основе выбранной стратегии:

Функциональность:
- **Выбор актива:** предоставьте список из 10+ активов для выбора.
- **Отображение текущей цены:** бот показывает текущую цену выбранного актива (например, в паре с USD).

Стратегия торговли:
- Начальный капитал: **100 долларов**.
- **Сеточная стратегия:** капитал делится на 10 частей по 10 долларов.
- **Условия покупки:** покупка происходит, когда цена падает на X%.
- **Условия продажи:** продажа происходит, когда цена растет на X% от цены покупки.

Отображение результатов:
- Состояние счета после каждой операции.
- Обновление данных в реальном времени или по запросу.

Требования:
- Возможность взаимодействия через консоль, Телеграм или веб-приложение (на ваш выбор).
- Минимальное использование внешних библиотек.
- Код должен быть оптимизирован и легко читаем.

import requests

assets = ['BTC', 'ETH', 'BNB', 'XRP', 'ADA', 'DOGE', 'SOL', 'DOT', 'MATIC', 'LTC']

class TradingBot:
    def __init__(self):
        self.balance = 100.0
        self.asset_balance = 0.0
        self.asset = None
        self.initial_price = None
        self.grid_funds = [10] * 10  # 10 частей по 10 долларов
        self.grid_positions = []
        self.X = None  # Процент изменения цены для покупки/продажи

    def select_asset(self):
        print("Выберите актив из списка:")
        for idx, asset in enumerate(assets):
            print(f"{idx + 1}. {asset}/USDT")
        choice = int(input("Введите номер актива: ")) - 1
        if 0 <= choice < len(assets):
            self.asset = assets[choice] + 'USDT'
            print(f"Вы выбрали: {self.asset}")
            self.initial_price = self.get_current_price()
            print(f"Текущая цена {self.asset}: {self.initial_price} USDT")
        else:
            print("Неверный выбор. Попробуйте снова.")
            self.select_asset()

    def get_current_price(self):
        url = f"https://api.binance.com/api/v3/ticker/price?symbol={self.asset}"
        response = requests.get(url)
        data = response.json()
        return float(data['price'])

    def set_strategy_parameters(self):
        self.X = float(input("Введите процент изменения цены для покупок/продаж (X%): "))

    def start_trading(self):
        print("Начинаем торговлю по сеточной стратегии...")
        while True:
            current_price = self.get_current_price()
            print(f"\nТекущая цена {self.asset}: {current_price} USDT")
            # Проверяем условия покупки
            for i in range(len(self.grid_funds)):
                if self.grid_funds[i] > 0:
                    target_buy_price = self.initial_price * (1 - self.X/100 * (i+1))
                    if current_price <= target_buy_price:
                        # Покупаем
                        amount = self.grid_funds[i] / current_price
                        self.asset_balance += amount
                        self.balance -= self.grid_funds[i]
                        self.grid_positions.append({'amount': amount, 'buy_price': current_price})
                        self.grid_funds[i] = 0  # Обнуляем эту часть средств
                        print(f"Куплено {amount:.6f} {self.asset[:-4]} по цене {current_price} USDT")
            # Проверяем условия продажи
            for position in self.grid_positions[:]:
                target_sell_price = position['buy_price'] * (1 + self.X/100)
                if current_price >= target_sell_price:
                    # Продаем
                    sell_amount = position['amount']
                    sell_value = sell_amount * current_price
                    self.asset_balance -= sell_amount
                    self.balance += sell_value
                    self.grid_positions.remove(position)
                    print(f"Продано {sell_amount:.6f} {self.asset[:-4]} по цене {current_price} USDT")

            self.print_account_status()

            user_input = input("Введите 'q' для выхода или Enter для продолжения: ")
            if user_input.lower() == 'q':
                break

    def print_account_status(self):
        print(f"\nСостояние счета:")
        print(f"Баланс USD: {self.balance:.2f} USDT")
        print(f"Баланс {self.asset[:-4]}: {self.asset_balance:.6f}")
        total_value = self.balance + self.asset_balance * self.get_current_price()
        print(f"Общая стоимость портфеля: {total_value:.2f} USDT")

if __name__ == "__main__":
    bot = TradingBot()
    bot.select_asset()
    bot.set_strategy_parameters()
    bot.start_trading()