from aiogram.types import InlineKeyboardButton, InlineKeyboardMarkup from aiogram.utils.keyboard import InlineKeyboardBuilder connect_the_platform = InlineKeyboardMarkup( inline_keyboard=[ [ InlineKeyboardButton( text="Подключить платформу", callback_data="connect_platform" ) ] ] ) add_bybit_api = InlineKeyboardMarkup( inline_keyboard=[ [InlineKeyboardButton(text="Добавить API", callback_data="add_bybit_api")] ] ) profile_bybit = InlineKeyboardMarkup( inline_keyboard=[ [InlineKeyboardButton(text="На главную", callback_data="profile_bybit")] ] ) cancel = InlineKeyboardMarkup( inline_keyboard=[[InlineKeyboardButton(text="Отменить", callback_data="cancel")]] ) main_menu = InlineKeyboardMarkup( inline_keyboard=[ [InlineKeyboardButton(text="Настройки", callback_data="main_settings")], [ InlineKeyboardButton( text="Сменить торговую пару", callback_data="change_symbol" ) ], [InlineKeyboardButton(text="Начать торговлю", callback_data="start_trading")], ] ) # MAIN SETTINGS main_settings = InlineKeyboardMarkup( inline_keyboard=[ [ InlineKeyboardButton( text="Основные настройки", callback_data="additional_settings" ), InlineKeyboardButton( text="Риск-менеджмент", callback_data="risk_management" ), ], [ InlineKeyboardButton( text="Условия запуска", callback_data="conditional_settings" ) ], [InlineKeyboardButton(text="Назад", callback_data="profile_bybit")], ] ) # additional_settings def get_additional_settings_keyboard(mode: str ) -> InlineKeyboardMarkup: """ Create keyboard for additional settings :param mode: Trade mode :return: InlineKeyboardMarkup """ buttons = [ [ InlineKeyboardButton(text="Режим торговли", callback_data="trade_mode"), InlineKeyboardButton(text="Тип маржи", callback_data="margin_type"), ], [ InlineKeyboardButton( text="Размер кредитного плеча", callback_data="leverage" ), InlineKeyboardButton( text="Базовая ставка", callback_data="order_quantity"), ], [ InlineKeyboardButton( text="Коэффициент мартингейла", callback_data="martingale_factor" ), InlineKeyboardButton(text="Триггер цена", callback_data="trigger_price" ), ], ] if mode == "Switch": buttons.append( [InlineKeyboardButton(text="Направление первой сделки", callback_data="switch_side_start")] ) buttons.append( [ InlineKeyboardButton( text="Максимальное кол-во ставок в серии", callback_data="max_bets_in_series", ) ] ) buttons.append( [ InlineKeyboardButton(text="Назад", callback_data="main_settings"), InlineKeyboardButton(text="На главную", callback_data="profile_bybit"), ] ) return InlineKeyboardMarkup(inline_keyboard=buttons) trade_mode = InlineKeyboardMarkup( inline_keyboard=[ [ InlineKeyboardButton( text="Лонг", callback_data="Long" ), InlineKeyboardButton(text="Шорт", callback_data="Short"), InlineKeyboardButton(text="Свитч", callback_data="Switch"), ], [ InlineKeyboardButton(text="Назад", callback_data="additional_settings"), InlineKeyboardButton(text="На главную", callback_data="profile_bybit"), ], ] ) switch_side = InlineKeyboardMarkup( inline_keyboard=[ [ InlineKeyboardButton( text="По направлению", callback_data="switch_direction" ), InlineKeyboardButton( text="Противоположно", callback_data="switch_opposite" ), ], [ InlineKeyboardButton(text="Назад", callback_data="additional_settings"), InlineKeyboardButton(text="На главную", callback_data="profile_bybit"), ], ] ) margin_type = InlineKeyboardMarkup( inline_keyboard=[ [ InlineKeyboardButton(text="Изолированная", callback_data="ISOLATED_MARGIN"), InlineKeyboardButton(text="Кросс", callback_data="REGULAR_MARGIN"), ], [ InlineKeyboardButton(text="Назад", callback_data="additional_settings"), InlineKeyboardButton(text="На главную", callback_data="profile_bybit"), ], ] ) back_to_additional_settings = InlineKeyboardMarkup( inline_keyboard=[ [ InlineKeyboardButton(text="Назад", callback_data="additional_settings"), InlineKeyboardButton(text="На главную", callback_data="profile_bybit"), ], ] ) back_to_change_limit_price = InlineKeyboardMarkup( inline_keyboard=[ [ InlineKeyboardButton(text="Назад", callback_data="limit_price"), InlineKeyboardButton( text="Основные настройки", callback_data="additional_settings" ), ], [InlineKeyboardButton(text="На главную", callback_data="profile_bybit")], ] ) # risk_management risk_management = InlineKeyboardMarkup( inline_keyboard=[ [ InlineKeyboardButton( text="Тейк-профит", callback_data="take_profit_percent" ), InlineKeyboardButton( text="Стоп-лосс", callback_data="stop_loss_percent" ), ], [InlineKeyboardButton(text="Комиссия биржи", callback_data="commission_fee")], [ InlineKeyboardButton(text="Назад", callback_data="main_settings"), InlineKeyboardButton(text="На главную", callback_data="profile_bybit"), ], ] ) back_to_risk_management = InlineKeyboardMarkup( inline_keyboard=[ [ InlineKeyboardButton(text="Назад", callback_data="risk_management"), InlineKeyboardButton(text="На главную", callback_data="profile_bybit"), ], ] ) commission_fee = InlineKeyboardMarkup( inline_keyboard=[ [ InlineKeyboardButton(text="Да", callback_data="Yes_commission_fee"), InlineKeyboardButton(text="Нет", callback_data="No_commission_fee"), ], [ InlineKeyboardButton(text="Назад", callback_data="risk_management"), InlineKeyboardButton(text="На главную", callback_data="profile_bybit"), ], ] ) # conditions conditions = InlineKeyboardMarkup( inline_keyboard=[ [ InlineKeyboardButton(text="Таймер для старта", callback_data="start_timer"), InlineKeyboardButton( text="Таймер для остановки", callback_data="stop_timer" ), ], [ InlineKeyboardButton(text="Назад", callback_data="main_settings"), InlineKeyboardButton(text="На главную", callback_data="profile_bybit"), ], ] ) back_to_conditions = InlineKeyboardMarkup( inline_keyboard=[ [ InlineKeyboardButton(text="Назад", callback_data="conditional_settings"), InlineKeyboardButton(text="На главную", callback_data="profile_bybit"), ], ] ) # SYMBOL symbol = InlineKeyboardMarkup( inline_keyboard=[ [ InlineKeyboardButton(text="Назад", callback_data="profile_bybit"), ], ] ) # POSITION change_position = InlineKeyboardMarkup( inline_keyboard=[ [ InlineKeyboardButton(text="Позиции", callback_data="change_position"), InlineKeyboardButton(text="Открытые ордера", callback_data="open_orders"), ], [InlineKeyboardButton(text="Назад", callback_data="profile_bybit")], ] ) def create_active_positions_keyboard(symbols: list): builder = InlineKeyboardBuilder() for sym, side in symbols: builder.button(text=f"{sym}:{side}", callback_data=f"get_position_{sym}_{side}") builder.button(text="Назад", callback_data="my_deals") builder.button(text="На главную", callback_data="profile_bybit") builder.adjust(2) return builder.as_markup() def make_close_position_keyboard( symbol_pos: str, side: str, position_idx: int, qty: int ): return InlineKeyboardMarkup( inline_keyboard=[ [ InlineKeyboardButton( text="Закрыть позицию", callback_data=f"close_position_{symbol_pos}_{side}_{position_idx}_{qty}", ) ], [ InlineKeyboardButton( text="Установить TP/SL", callback_data=f"pos_tp_sl_{symbol_pos}_{position_idx}", ) ], [ InlineKeyboardButton(text="Назад", callback_data="change_position"), InlineKeyboardButton(text="На главную", callback_data="profile_bybit"), ], ] ) def create_active_orders_keyboard(orders: list): builder = InlineKeyboardBuilder() for order, side in orders: builder.button(text=f"{order}", callback_data=f"get_order_{order}_{side}") builder.button(text="Назад", callback_data="my_deals") builder.button(text="На главную", callback_data="profile_bybit") builder.adjust(2) return builder.as_markup() def make_close_orders_keyboard(symbol_order: str, order_id: str): return InlineKeyboardMarkup( inline_keyboard=[ [ InlineKeyboardButton( text="Закрыть ордер", callback_data=f"close_order_{symbol_order}_{order_id}", ) ], [ InlineKeyboardButton(text="Назад", callback_data="open_orders"), InlineKeyboardButton(text="На главную", callback_data="profile_bybit"), ], ] ) # START TRADING back_to_start_trading = InlineKeyboardMarkup( inline_keyboard=[ [ InlineKeyboardButton(text="Назад", callback_data="start_trading"), InlineKeyboardButton(text="На главную", callback_data="profile_bybit"), ], ] ) cancel_timer_merged = InlineKeyboardMarkup( inline_keyboard=[ [ InlineKeyboardButton( text="Отменить таймер", callback_data="cancel_timer_merged" ) ], [ InlineKeyboardButton(text="На главную", callback_data="profile_bybit"), ], ] ) cancel_timer_switch = InlineKeyboardMarkup( inline_keyboard=[ [ InlineKeyboardButton( text="Отменить таймер", callback_data="cancel_timer_switch" ) ], [ InlineKeyboardButton(text="На главную", callback_data="profile_bybit"), ], ] ) # STOP TRADING cancel_timer_stop = InlineKeyboardMarkup( inline_keyboard=[ [ InlineKeyboardButton( text="Отменить таймер", callback_data="cancel_timer_stop" ) ], [ InlineKeyboardButton(text="На главную", callback_data="profile_bybit"), ], ] )