The stop trading button has been added, and the switch mode has been fixed
This commit is contained in:
@@ -7,25 +7,25 @@ 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
|
||||
async def close_position_by_symbol(
|
||||
tg_id: int, symbol: str
|
||||
) -> bool:
|
||||
"""
|
||||
Closes all positions
|
||||
:param tg_id: Telegram user ID
|
||||
:param symbol: symbol
|
||||
:param side: side
|
||||
:param position_idx: position index
|
||||
:param qty: quantity
|
||||
:return: bool
|
||||
"""
|
||||
try:
|
||||
client = await get_bybit_client(tg_id)
|
||||
|
||||
if side == "Buy":
|
||||
r_side = "Sell"
|
||||
else:
|
||||
r_side = "Buy"
|
||||
response = client.get_positions(
|
||||
category="linear", symbol=symbol
|
||||
)
|
||||
positions = response.get("result", {}).get("list", [])
|
||||
r_side = "Sell" if positions[0].get("side") == "Buy" else "Buy"
|
||||
qty = positions[0].get("size")
|
||||
position_idx = positions[0].get("positionIdx")
|
||||
|
||||
response = client.place_order(
|
||||
category="linear",
|
||||
@@ -37,16 +37,16 @@ async def close_position(
|
||||
positionIdx=position_idx,
|
||||
)
|
||||
if response["retCode"] == 0:
|
||||
logger.info("All positions closed for %s for user %s", symbol, tg_id)
|
||||
logger.info("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
|
||||
"Error closing position 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
|
||||
"Error closing positions for %s for user %s: %s", symbol, tg_id, e
|
||||
)
|
||||
return False
|
||||
|
||||
|
||||
@@ -90,7 +90,6 @@ async def start_trading_cycle(
|
||||
await rq.set_user_deal(
|
||||
tg_id=tg_id,
|
||||
symbol=symbol,
|
||||
last_side=side,
|
||||
current_step=1,
|
||||
trade_mode=trade_mode,
|
||||
side_mode=switch_side,
|
||||
@@ -179,7 +178,6 @@ async def trading_cycle_profit(
|
||||
await rq.set_user_deal(
|
||||
tg_id=tg_id,
|
||||
symbol=symbol,
|
||||
last_side=side,
|
||||
current_step=1,
|
||||
trade_mode=trade_mode,
|
||||
side_mode=side_mode,
|
||||
@@ -246,10 +244,18 @@ async def trading_cycle(
|
||||
leverage=leverage,
|
||||
)
|
||||
|
||||
if trade_mode == "Switch":
|
||||
if side == "Buy":
|
||||
r_side = "Sell"
|
||||
else:
|
||||
r_side = "Buy"
|
||||
else:
|
||||
r_side = side
|
||||
|
||||
res = await open_positions(
|
||||
tg_id=tg_id,
|
||||
symbol=symbol,
|
||||
side=side,
|
||||
side=r_side,
|
||||
order_quantity=next_quantity,
|
||||
trigger_price=trigger_price,
|
||||
margin_type=margin_type,
|
||||
@@ -263,7 +269,6 @@ async def trading_cycle(
|
||||
await rq.set_user_deal(
|
||||
tg_id=tg_id,
|
||||
symbol=symbol,
|
||||
last_side=side,
|
||||
current_step=current_step,
|
||||
trade_mode=trade_mode,
|
||||
side_mode=side_mode,
|
||||
|
||||
@@ -141,8 +141,6 @@ class TelegramMessageHandler:
|
||||
tg_id=tg_id, symbol=symbol, total_fee=total_fee
|
||||
)
|
||||
text += f"Текущая ставка: {user_deals_data.order_quantity} USDT\n"
|
||||
else:
|
||||
text += f"Количество: {exec_qty}\n"
|
||||
|
||||
text += (
|
||||
f"Цена исполнения: {exec_price}\n"
|
||||
|
||||
Reference in New Issue
Block a user