2
0
forked from kodorvan/stcs

The timer start function has been updated

This commit is contained in:
algizn97
2025-09-11 12:02:47 +05:00
parent f42940f847
commit babbcbd1fc
5 changed files with 56 additions and 48 deletions

View File

@@ -367,6 +367,10 @@ async def open_position(
balance = await balance_g.get_balance(tg_id, message)
if safe_float(balance) < total_budget:
logger.error(
f"Недостаточно средств для серии из {max_martingale_steps} шагов с текущими параметрами. "
f"Требуемый бюджет: {total_budget:.2f} USDT, доступно: {balance} USDT."
)
await message.answer(
f"Недостаточно средств для серии из {max_martingale_steps} шагов с текущими параметрами. "
f"Требуемый бюджет: {total_budget:.2f} USDT, доступно: {balance} USDT.",
@@ -431,6 +435,11 @@ async def open_position(
order_value = float(quantity) * price_for_calc
if order_value < min_order_value:
logger.error(
f"Сумма ордера слишком мала: {order_value:.2f} USDT. "
f"Минимум для торговли — {min_order_value} USDT. "
f"Пожалуйста, увеличьте количество позиций."
)
await message.answer(
f"Сумма ордера слишком мала: {order_value:.2f} USDT. "
f"Минимум для торговли — {min_order_value} USDT. "
@@ -581,6 +590,7 @@ async def open_position(
await message.answer("Недостаточно средств для нового ордера",
reply_markup=inline_markup.back_to_main)
else:
logger.error("Ошибка при совершении сделки: %s", e)
await message.answer(
"Недостаточно средств для размещения нового ордера с заданным количеством и плечом.",
reply_markup=inline_markup.back_to_main,
@@ -593,37 +603,6 @@ async def open_position(
)
async def trading_cycle(tg_id, message, side, margin_mode, symbol, starting_quantity):
"""
Цикл торговой логики с учётом таймера пользователя.
"""
try:
timer_data = await rq.get_user_timer(tg_id)
timer_min = 0
if isinstance(timer_data, dict):
timer_min = timer_data.get("timer_minutes") or timer_data.get("timer") or 0
else:
timer_min = timer_data or 0
timer_sec = timer_min * 60
if timer_sec > 0:
await asyncio.sleep(timer_sec)
await open_position(
tg_id,
message,
side=side,
margin_mode=margin_mode,
symbol=symbol,
quantity=starting_quantity,
)
except asyncio.CancelledError:
logger.info(
f"Торговый цикл для пользователя {tg_id} был отменён.", exc_info=True
)
async def set_take_profit_stop_loss(
tg_id: int,
message,
@@ -643,7 +622,7 @@ async def set_take_profit_stop_loss(
client.set_tp_sl_mode(symbol=symbol, category="linear", tpSlMode=tpsl_mode)
except exceptions.InvalidRequestError as e:
if "same tp sl mode" in str(e).lower():
logger.info(f"Режим TP/SL уже установлен для {symbol}")
logger.info("Режим TP/SL уже установлен для %s - пропускаем", symbol)
else:
raise