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")
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,