diff --git a/app/bybit/close_positions.py b/app/bybit/close_positions.py index 3750bef..47a9687 100644 --- a/app/bybit/close_positions.py +++ b/app/bybit/close_positions.py @@ -7,7 +7,9 @@ logging.config.dictConfig(LOGGING_CONFIG) logger = logging.getLogger("close_positions") -async def close_position(tg_id: int, symbol: str, side: str, position_idx: int, qty: float) -> bool: +async def close_position( + tg_id: int, symbol: str, side: str, position_idx: int, qty: float +) -> bool: """ Closes all positions :param tg_id: Telegram user ID @@ -38,12 +40,17 @@ async def close_position(tg_id: int, symbol: str, side: str, position_idx: int, logger.info("All positions closed for %s for user %s", symbol, tg_id) return True else: - logger.error("Error closing all positions for %s for user %s", symbol, tg_id) + logger.error( + "Error closing all positions for %s for user %s", symbol, tg_id + ) return False except Exception as e: - logger.error("Error closing all positions for %s for user %s: %s", symbol, tg_id, e) + logger.error( + "Error closing all positions for %s for user %s: %s", symbol, tg_id, e + ) return False + async def cancel_order(tg_id: int, symbol: str, order_id: str) -> bool: """ Cancel order by order id diff --git a/app/telegram/handlers/close_orders.py b/app/telegram/handlers/close_orders.py index 0b99461..887ecdc 100644 --- a/app/telegram/handlers/close_orders.py +++ b/app/telegram/handlers/close_orders.py @@ -4,12 +4,11 @@ from aiogram import Router from aiogram.fsm.context import FSMContext from aiogram.types import CallbackQuery +import database.request as rq from app.bybit.close_positions import cancel_order, close_position from app.helper_functions import safe_float from logger_helper.logger_helper import LOGGING_CONFIG -import database.request as rq - logging.config.dictConfig(LOGGING_CONFIG) logger = logging.getLogger("close_orders") @@ -20,7 +19,7 @@ router_close_orders = Router(name="close_orders") lambda c: c.data and c.data.startswith("close_position_") ) async def close_position_handler( - callback_query: CallbackQuery, state: FSMContext + callback_query: CallbackQuery, state: FSMContext ) -> None: """ Close a position. @@ -35,17 +34,24 @@ async def close_position_handler( side = parts[3] position_idx = int(parts[4]) qty = safe_float(parts[5]) - res = await close_position(tg_id=callback_query.from_user.id, - symbol=symbol, - side=side, - position_idx=position_idx, - qty=qty) + await rq.set_auto_trading( + tg_id=callback_query.from_user.id, + symbol=symbol, + auto_trading=False, + side=side, + ) + res = await close_position( + tg_id=callback_query.from_user.id, + symbol=symbol, + side=side, + position_idx=position_idx, + qty=qty, + ) if not res: await callback_query.answer(text="Произошла ошибка при закрытии позиции.") return - await rq.set_auto_trading(tg_id=callback_query.from_user.id, symbol=symbol, auto_trading=False, side=side) await callback_query.answer(text="Позиция успешно закрыта.") logger.debug( "Command close_position processed successfully for user: %s", @@ -66,7 +72,7 @@ async def close_position_handler( lambda c: c.data and c.data.startswith("close_order_") ) async def cancel_order_handler( - callback_query: CallbackQuery, state: FSMContext + callback_query: CallbackQuery, state: FSMContext ) -> None: """ Cancel an order. @@ -79,7 +85,9 @@ async def cancel_order_handler( parts = data.split("_") symbol = parts[2] order_id = parts[3] - res = await cancel_order(tg_id=callback_query.from_user.id, symbol=symbol, order_id=order_id) + res = await cancel_order( + tg_id=callback_query.from_user.id, symbol=symbol, order_id=order_id + ) if not res: await callback_query.answer(text="Произошла ошибка при закрытии ордера.") @@ -98,4 +106,4 @@ async def cancel_order_handler( e, ) finally: - await state.clear() \ No newline at end of file + await state.clear()