This commit is contained in:
algizn97
2025-10-04 09:33:18 +05:00
parent 8e73dcf81f
commit 086c7c8170
2 changed files with 30 additions and 15 deletions

View File

@@ -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

View File

@@ -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()
await state.clear()