diff --git a/app/telegram/handlers/changing_the_symbol.py b/app/telegram/handlers/changing_the_symbol.py index f13d9cb..16e5568 100644 --- a/app/telegram/handlers/changing_the_symbol.py +++ b/app/telegram/handlers/changing_the_symbol.py @@ -7,13 +7,12 @@ from aiogram.types import CallbackQuery, Message import app.telegram.keyboards.inline as kbi import database.request as rq from app.bybit.get_functions.get_tickers import get_tickers +from app.bybit.get_functions.get_instruments_info import get_instruments_info from app.bybit.profile_bybit import user_profile_bybit -from app.bybit.set_functions.set_leverage import ( - set_leverage, - set_leverage_to_buy_and_sell, -) +from app.bybit.set_functions.set_leverage import set_leverage + from app.bybit.set_functions.set_margin_mode import set_margin_mode -from app.bybit.set_functions.set_switch_position_mode import set_switch_position_mode +from app.helper_functions import safe_float from app.telegram.states.states import ChangingTheSymbolState from logger_helper.logger_helper import LOGGING_CONFIG @@ -91,12 +90,7 @@ async def set_symbol(message: Message, state: FSMContext) -> None: await rq.create_user_additional_settings(tg_id=message.from_user.id) return - trade_mode = additional_settings.trade_mode or "Merged_Single" - mode = 0 if trade_mode == "Merged_Single" else 3 margin_type = additional_settings.margin_type or "ISOLATED_MARGIN" - leverage = "10" - leverage_to_buy = "10" - leverage_to_sell = "10" ticker = await get_tickers(tg_id=message.from_user.id, symbol=symbol) if ticker is None: @@ -105,6 +99,8 @@ async def set_symbol(message: Message, state: FSMContext) -> None: ) return + instruments_info = await get_instruments_info(tg_id=message.from_user.id, symbol=symbol) + max_leverage = instruments_info.get("leverageFilter").get("maxLeverage") req = await rq.set_user_symbol(tg_id=message.from_user.id, symbol=symbol) if not req: @@ -118,45 +114,18 @@ async def set_symbol(message: Message, state: FSMContext) -> None: tg_id=message.from_user.id, message=message, state=state ) - res = await set_switch_position_mode( - tg_id=message.from_user.id, symbol=symbol, mode=mode - ) - if res == "You have an existing position, so position mode cannot be switched": - if mode == 0: - mode = 3 - else: - mode = 0 - await set_switch_position_mode( - tg_id=message.from_user.id, symbol=symbol, mode=mode - ) - if trade_mode == "Merged_Single": - trade_mode = "Both_Sides" - else: - trade_mode = "Merged_Single" - await rq.set_trade_mode(tg_id=message.from_user.id, trade_mode=trade_mode) - await set_margin_mode(tg_id=message.from_user.id, margin_mode=margin_type) - if margin_type == "ISOLATED_MARGIN": - await set_leverage_to_buy_and_sell( - tg_id=message.from_user.id, - symbol=symbol, - leverage_to_buy=str(leverage_to_buy), - leverage_to_sell=str(leverage_to_sell), - ) - else: - await set_leverage( - tg_id=message.from_user.id, symbol=symbol, leverage=str(leverage) - ) - - await rq.set_leverage(tg_id=message.from_user.id, leverage=str(leverage)) - await rq.set_leverage_to_buy_and_sell( - tg_id=message.from_user.id, - leverage_to_buy=str(leverage_to_buy), - leverage_to_sell=str(leverage_to_sell), + await set_leverage( + tg_id=message.from_user.id, symbol=symbol, leverage=str(max_leverage) ) - await rq.set_limit_price(tg_id=message.from_user.id, limit_price=0) + + await rq.set_leverage(tg_id=message.from_user.id, leverage=str(max_leverage)) + risk_percent = 100 / safe_float(max_leverage) + await rq.set_stop_loss_percent( + tg_id=message.from_user.id, stop_loss_percent=risk_percent) await rq.set_trigger_price(tg_id=message.from_user.id, trigger_price=0) + await rq.set_order_quantity(tg_id=message.from_user.id, order_quantity=1.0) await state.clear() except Exception as e: