From 1a1a5a727f661cce7b78f5760b0eb70679dbe0ec Mon Sep 17 00:00:00 2001 From: algizn97 Date: Fri, 10 Oct 2025 13:59:24 +0500 Subject: [PATCH] When adjusting the leverage, the SL changes according to the criteria. In place of the position mode, there is now a trading mode. All unnecessary functions are also removed. --- .../main_settings/additional_settings.py | 49 ++++++++++++------- 1 file changed, 30 insertions(+), 19 deletions(-) diff --git a/app/telegram/handlers/main_settings/additional_settings.py b/app/telegram/handlers/main_settings/additional_settings.py index df2d1d9..b1231a9 100644 --- a/app/telegram/handlers/main_settings/additional_settings.py +++ b/app/telegram/handlers/main_settings/additional_settings.py @@ -21,7 +21,7 @@ router_additional_settings = Router(name="additional_settings") @router_additional_settings.callback_query(F.data == "trade_mode") async def settings_for_trade_mode( - callback_query: CallbackQuery, state: FSMContext + callback_query: CallbackQuery, state: FSMContext ) -> None: """ Handles the 'trade_mode' callback query. @@ -40,9 +40,9 @@ async def settings_for_trade_mode( await state.clear() await callback_query.message.edit_text( text="Выберите режим торговли:\n\n" - "Лонг - все сделки серии открываются на покупку.\n" - "Шорт - все сделки серии открываются на продажу.\n" - "Свитч - направление каждой сделки серии меняется по переменно.\n", + "Лонг - все сделки серии открываются на покупку.\n" + "Шорт - все сделки серии открываются на продажу.\n" + "Свитч - направление каждой сделки серии меняется по переменно.\n", reply_markup=kbi.trade_mode, ) logger.debug( @@ -123,8 +123,8 @@ async def switch_side_start(callback_query: CallbackQuery, state: FSMContext) -> await state.clear() await callback_query.message.edit_text( text="Выберите направление первой сделки серии:\n\n" - "По направлению - сделка открывается в направлении последней сделки предыдущей серии.\n" - "Противоположно - сделка открывается в противоположном направлении последней сделки предыдущей серии.\n", + "По направлению - сделка открывается в направлении последней сделки предыдущей серии.\n" + "Противоположно - сделка открывается в противоположном направлении последней сделки предыдущей серии.\n", reply_markup=kbi.switch_side, ) logger.debug( @@ -142,7 +142,9 @@ async def switch_side_start(callback_query: CallbackQuery, state: FSMContext) -> ) -@router_additional_settings.callback_query(lambda c: c.data == "switch_direction" or c.data == "switch_opposite") +@router_additional_settings.callback_query( + lambda c: c.data == "switch_direction" or c.data == "switch_opposite" +) async def switch_side_handler(callback_query: CallbackQuery, state: FSMContext) -> None: """ Handles callback queries related to switch side selection. @@ -194,7 +196,7 @@ async def switch_side_handler(callback_query: CallbackQuery, state: FSMContext) @router_additional_settings.callback_query(F.data == "margin_type") async def settings_for_margin_type( - callback_query: CallbackQuery, state: FSMContext + callback_query: CallbackQuery, state: FSMContext ) -> None: """ Handles the 'margin_type' callback query. @@ -213,8 +215,8 @@ async def settings_for_margin_type( await state.clear() await callback_query.message.edit_text( text="Выберите тип маржи:\n\n" - "Примечание: Если у вас есть открытые позиции, то маржа примениться ко всем позициям", - reply_markup=kbi.margin_type + "Примечание: Если у вас есть открытые позиции, то маржа примениться ко всем позициям", + reply_markup=kbi.margin_type, ) logger.debug( "Command margin_type processed successfully for user: %s", @@ -503,12 +505,12 @@ async def set_leverage_handler(message: Message, state: FSMContext) -> None: if instruments_info is not None: min_leverage = ( - safe_float(instruments_info.get("leverageFilter").get("minLeverage")) - or 1 + safe_float(instruments_info.get("leverageFilter").get("minLeverage")) + or 1 ) max_leverage = ( - safe_float(instruments_info.get("leverageFilter").get("maxLeverage")) - or 100 + safe_float(instruments_info.get("leverageFilter").get("maxLeverage")) + or 100 ) if leverage_float > max_leverage or leverage_float < min_leverage: @@ -553,7 +555,8 @@ async def set_leverage_handler(message: Message, state: FSMContext) -> None: ) risk_percent = 100 / safe_float(leverage_float) await rq.set_stop_loss_percent( - tg_id=message.from_user.id, stop_loss_percent=risk_percent) + tg_id=message.from_user.id, stop_loss_percent=risk_percent + ) logger.info( "User %s set leverage: %s", message.from_user.id, leverage_float ) @@ -767,9 +770,14 @@ async def set_martingale_factor(message: Message, state: FSMContext) -> None: martingale_factor_value_float = safe_float(martingale_factor_value) if martingale_factor_value_float < 0.1 or martingale_factor_value_float > 10: - await message.answer(text="Ошибка: коэффициент мартингейла должен быть в диапазоне от 0.1 до 10") - logger.debug("User %s input invalid (not in range 0.1 to 10): %s", message.from_user.id, - martingale_factor_value_float) + await message.answer( + text="Ошибка: коэффициент мартингейла должен быть в диапазоне от 0.1 до 10" + ) + logger.debug( + "User %s input invalid (not in range 0.1 to 10): %s", + message.from_user.id, + martingale_factor_value_float, + ) return req = await rq.set_martingale_factor( @@ -878,7 +886,10 @@ async def set_max_bets_in_series(message: Message, state: FSMContext) -> None: ) return - if safe_float(max_bets_in_series_value) < 1 or safe_float(max_bets_in_series_value) > 100: + if ( + safe_float(max_bets_in_series_value) < 1 + or safe_float(max_bets_in_series_value) > 100 + ): await message.answer( "Ошибка: число должно быть в диапазоне от 1 до 100.", reply_markup=kbi.back_to_additional_settings,