2
0
forked from kodorvan/stcs

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.

This commit is contained in:
algizn97
2025-10-10 13:59:24 +05:00
parent 9f9a79bf81
commit 1a1a5a727f

View File

@@ -21,7 +21,7 @@ router_additional_settings = Router(name="additional_settings")
@router_additional_settings.callback_query(F.data == "trade_mode") @router_additional_settings.callback_query(F.data == "trade_mode")
async def settings_for_trade_mode( async def settings_for_trade_mode(
callback_query: CallbackQuery, state: FSMContext callback_query: CallbackQuery, state: FSMContext
) -> None: ) -> None:
""" """
Handles the 'trade_mode' callback query. Handles the 'trade_mode' callback query.
@@ -40,9 +40,9 @@ async def settings_for_trade_mode(
await state.clear() await state.clear()
await callback_query.message.edit_text( await callback_query.message.edit_text(
text="Выберите режим торговли:\n\n" text="Выберите режим торговли:\n\n"
"Лонг - все сделки серии открываются на покупку.\n" "Лонг - все сделки серии открываются на покупку.\n"
"Шорт - все сделки серии открываются на продажу.\n" "Шорт - все сделки серии открываются на продажу.\n"
"Свитч - направление каждой сделки серии меняется по переменно.\n", "Свитч - направление каждой сделки серии меняется по переменно.\n",
reply_markup=kbi.trade_mode, reply_markup=kbi.trade_mode,
) )
logger.debug( logger.debug(
@@ -123,8 +123,8 @@ async def switch_side_start(callback_query: CallbackQuery, state: FSMContext) ->
await state.clear() await state.clear()
await callback_query.message.edit_text( await callback_query.message.edit_text(
text="Выберите направление первой сделки серии:\n\n" text="Выберите направление первой сделки серии:\n\n"
"По направлению - сделка открывается в направлении последней сделки предыдущей серии.\n" "По направлению - сделка открывается в направлении последней сделки предыдущей серии.\n"
"Противоположно - сделка открывается в противоположном направлении последней сделки предыдущей серии.\n", "Противоположно - сделка открывается в противоположном направлении последней сделки предыдущей серии.\n",
reply_markup=kbi.switch_side, reply_markup=kbi.switch_side,
) )
logger.debug( 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: async def switch_side_handler(callback_query: CallbackQuery, state: FSMContext) -> None:
""" """
Handles callback queries related to switch side selection. 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") @router_additional_settings.callback_query(F.data == "margin_type")
async def settings_for_margin_type( async def settings_for_margin_type(
callback_query: CallbackQuery, state: FSMContext callback_query: CallbackQuery, state: FSMContext
) -> None: ) -> None:
""" """
Handles the 'margin_type' callback query. Handles the 'margin_type' callback query.
@@ -213,8 +215,8 @@ async def settings_for_margin_type(
await state.clear() await state.clear()
await callback_query.message.edit_text( await callback_query.message.edit_text(
text="Выберите тип маржи:\n\n" text="Выберите тип маржи:\n\n"
"Примечание: Если у вас есть открытые позиции, то маржа примениться ко всем позициям", "Примечание: Если у вас есть открытые позиции, то маржа примениться ко всем позициям",
reply_markup=kbi.margin_type reply_markup=kbi.margin_type,
) )
logger.debug( logger.debug(
"Command margin_type processed successfully for user: %s", "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: if instruments_info is not None:
min_leverage = ( min_leverage = (
safe_float(instruments_info.get("leverageFilter").get("minLeverage")) safe_float(instruments_info.get("leverageFilter").get("minLeverage"))
or 1 or 1
) )
max_leverage = ( max_leverage = (
safe_float(instruments_info.get("leverageFilter").get("maxLeverage")) safe_float(instruments_info.get("leverageFilter").get("maxLeverage"))
or 100 or 100
) )
if leverage_float > max_leverage or leverage_float < min_leverage: 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) risk_percent = 100 / safe_float(leverage_float)
await rq.set_stop_loss_percent( 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( logger.info(
"User %s set leverage: %s", message.from_user.id, leverage_float "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) martingale_factor_value_float = safe_float(martingale_factor_value)
if martingale_factor_value_float < 0.1 or martingale_factor_value_float > 10: if martingale_factor_value_float < 0.1 or martingale_factor_value_float > 10:
await message.answer(text="Ошибка: коэффициент мартингейла должен быть в диапазоне от 0.1 до 10") await message.answer(
logger.debug("User %s input invalid (not in range 0.1 to 10): %s", message.from_user.id, text="Ошибка: коэффициент мартингейла должен быть в диапазоне от 0.1 до 10"
martingale_factor_value_float) )
logger.debug(
"User %s input invalid (not in range 0.1 to 10): %s",
message.from_user.id,
martingale_factor_value_float,
)
return return
req = await rq.set_martingale_factor( req = await rq.set_martingale_factor(
@@ -878,7 +886,10 @@ async def set_max_bets_in_series(message: Message, state: FSMContext) -> None:
) )
return 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( await message.answer(
"Ошибка: число должно быть в диапазоне от 1 до 100.", "Ошибка: число должно быть в диапазоне от 1 до 100.",
reply_markup=kbi.back_to_additional_settings, reply_markup=kbi.back_to_additional_settings,