forked from kodorvan/stcs
Updated
This commit is contained in:
@@ -123,7 +123,7 @@ async def start_trading_cycle(
|
||||
"Order does not meet minimum order value",
|
||||
"position idx not match position mode",
|
||||
"Qty invalid",
|
||||
"The number of contracts exceeds maximum limit allowed"
|
||||
"The number of contracts exceeds maximum limit allowed",
|
||||
}
|
||||
else None
|
||||
)
|
||||
@@ -241,7 +241,7 @@ async def trading_cycle(
|
||||
"Risk is too high for this trade",
|
||||
"ab not enough for new order",
|
||||
"InvalidRequestError",
|
||||
"The number of contracts exceeds maximum limit allowed"
|
||||
"The number of contracts exceeds maximum limit allowed",
|
||||
}
|
||||
else None
|
||||
)
|
||||
|
@@ -163,9 +163,7 @@ class TelegramMessageHandler:
|
||||
auto_trading = (
|
||||
user_auto_trading.auto_trading if user_auto_trading else False
|
||||
)
|
||||
user_symbols = (
|
||||
user_auto_trading.symbol if user_auto_trading else None
|
||||
)
|
||||
user_symbols = user_auto_trading.symbol if user_auto_trading else None
|
||||
|
||||
if (
|
||||
auto_trading
|
||||
@@ -181,10 +179,16 @@ class TelegramMessageHandler:
|
||||
r_side = "Sell"
|
||||
else:
|
||||
r_side = "Buy"
|
||||
await rq.set_auto_trading(tg_id=tg_id, symbol=symbol, auto_trading=False, side=r_side)
|
||||
user_deals_data = await rq.get_user_deal_by_symbol(tg_id=tg_id, symbol=symbol)
|
||||
await rq.set_auto_trading(
|
||||
tg_id=tg_id, symbol=symbol, auto_trading=False, side=r_side
|
||||
)
|
||||
user_deals_data = await rq.get_user_deal_by_symbol(
|
||||
tg_id=tg_id, symbol=symbol
|
||||
)
|
||||
if user_deals_data and user_deals_data.switch_side_mode:
|
||||
await rq.set_auto_trading(tg_id=tg_id, symbol=symbol, auto_trading=False, side=side)
|
||||
await rq.set_auto_trading(
|
||||
tg_id=tg_id, symbol=symbol, auto_trading=False, side=side
|
||||
)
|
||||
else:
|
||||
open_order_text = "\n❗️ Сделка закрылась в минус, открываю новую сделку с увеличенной ставкой.\n"
|
||||
await self.telegram_bot.send_message(
|
||||
@@ -214,10 +218,15 @@ class TelegramMessageHandler:
|
||||
await rq.set_auto_trading(
|
||||
tg_id=tg_id, symbol=symbol, auto_trading=False, side=r_side
|
||||
)
|
||||
user_deals_data = await rq.get_user_deal_by_symbol(tg_id=tg_id, symbol=symbol)
|
||||
user_deals_data = await rq.get_user_deal_by_symbol(
|
||||
tg_id=tg_id, symbol=symbol
|
||||
)
|
||||
if user_deals_data and user_deals_data.switch_side_mode:
|
||||
await rq.set_auto_trading(
|
||||
tg_id=tg_id, symbol=symbol, auto_trading=False, side=side
|
||||
tg_id=tg_id,
|
||||
symbol=symbol,
|
||||
auto_trading=False,
|
||||
side=side,
|
||||
)
|
||||
await self.telegram_bot.send_message(
|
||||
chat_id=tg_id,
|
||||
|
@@ -146,7 +146,6 @@ async def get_liquidation_price(
|
||||
risk_level = risk_list[0] if risk_list else {}
|
||||
maintenance_margin_rate = safe_float(risk_level.get("maintenanceMargin"))
|
||||
|
||||
|
||||
liq_price_long = entry_price * (1 - 1 / leverage + maintenance_margin_rate)
|
||||
liq_price_short = entry_price * (1 + 1 / leverage - maintenance_margin_rate)
|
||||
|
||||
|
@@ -186,7 +186,9 @@ async def settings_for_margin_type(
|
||||
try:
|
||||
await state.clear()
|
||||
await callback_query.message.edit_text(
|
||||
text="Выберите тип маржи:", reply_markup=kbi.margin_type
|
||||
text="Выберите тип маржи:\n\n"
|
||||
"Примечание: Если у вас есть открытые позиции, то маржа примениться ко всем позициям",
|
||||
reply_markup=kbi.margin_type
|
||||
)
|
||||
logger.debug(
|
||||
"Command margin_type processed successfully for user: %s",
|
||||
|
@@ -5,13 +5,17 @@ from aiogram import F, Router
|
||||
from aiogram.fsm.context import FSMContext
|
||||
from aiogram.types import CallbackQuery
|
||||
|
||||
from app.telegram.tasks.tasks import add_start_task_merged, cancel_start_task_merged, add_start_task_switch, \
|
||||
cancel_start_task_switch
|
||||
import app.telegram.keyboards.inline as kbi
|
||||
import database.request as rq
|
||||
from app.bybit.get_functions.get_positions import get_active_positions_by_symbol
|
||||
from app.bybit.open_positions import start_trading_cycle
|
||||
from app.helper_functions import safe_float
|
||||
from app.telegram.tasks.tasks import (
|
||||
add_start_task_merged,
|
||||
add_start_task_switch,
|
||||
cancel_start_task_merged,
|
||||
cancel_start_task_switch,
|
||||
)
|
||||
from logger_helper.logger_helper import LOGGING_CONFIG
|
||||
|
||||
logging.config.dictConfig(LOGGING_CONFIG)
|
||||
@@ -144,7 +148,10 @@ async def start_trading_long(callback_query: CallbackQuery, state: FSMContext) -
|
||||
await asyncio.sleep(timer_start * 60)
|
||||
|
||||
await rq.set_auto_trading(
|
||||
tg_id=callback_query.from_user.id, symbol=symbol, auto_trading=True, side=side
|
||||
tg_id=callback_query.from_user.id,
|
||||
symbol=symbol,
|
||||
auto_trading=True,
|
||||
side=side,
|
||||
)
|
||||
res = await start_trading_cycle(
|
||||
tg_id=callback_query.from_user.id,
|
||||
@@ -170,10 +177,15 @@ async def start_trading_long(callback_query: CallbackQuery, state: FSMContext) -
|
||||
await state.clear()
|
||||
else:
|
||||
await rq.set_auto_trading(
|
||||
tg_id=callback_query.from_user.id, symbol=symbol, auto_trading=False, side=side
|
||||
tg_id=callback_query.from_user.id,
|
||||
symbol=symbol,
|
||||
auto_trading=False,
|
||||
side=side,
|
||||
)
|
||||
text = error_messages.get(res, "Произошла ошибка при запуске торговли")
|
||||
await callback_query.message.edit_text(text=text, reply_markup=kbi.profile_bybit)
|
||||
await callback_query.message.edit_text(
|
||||
text=text, reply_markup=kbi.profile_bybit
|
||||
)
|
||||
|
||||
await callback_query.message.edit_text("Запуск торговли...")
|
||||
task = asyncio.create_task(delay_start())
|
||||
@@ -298,13 +310,21 @@ async def start_switch(callback_query: CallbackQuery, state: FSMContext) -> None
|
||||
)
|
||||
await asyncio.sleep(timer_start * 60)
|
||||
await rq.set_auto_trading(
|
||||
tg_id=callback_query.from_user.id, symbol=symbol, auto_trading=True, side=side
|
||||
tg_id=callback_query.from_user.id,
|
||||
symbol=symbol,
|
||||
auto_trading=True,
|
||||
side=side,
|
||||
)
|
||||
if side == "Buy":
|
||||
r_side = "Sell"
|
||||
else:
|
||||
r_side = "Buy"
|
||||
await rq.set_auto_trading(tg_id=callback_query.from_user.id, symbol=symbol, auto_trading=True, side=r_side)
|
||||
await rq.set_auto_trading(
|
||||
tg_id=callback_query.from_user.id,
|
||||
symbol=symbol,
|
||||
auto_trading=True,
|
||||
side=r_side,
|
||||
)
|
||||
res = await start_trading_cycle(
|
||||
tg_id=callback_query.from_user.id,
|
||||
side=side,
|
||||
@@ -329,16 +349,25 @@ async def start_switch(callback_query: CallbackQuery, state: FSMContext) -> None
|
||||
await state.clear()
|
||||
else:
|
||||
await rq.set_auto_trading(
|
||||
tg_id=callback_query.from_user.id, symbol=symbol, auto_trading=False, side=side
|
||||
tg_id=callback_query.from_user.id,
|
||||
symbol=symbol,
|
||||
auto_trading=False,
|
||||
side=side,
|
||||
)
|
||||
if side == "Buy":
|
||||
r_side = "Sell"
|
||||
else:
|
||||
r_side = "Buy"
|
||||
await rq.set_auto_trading(tg_id=callback_query.from_user.id, symbol=symbol, auto_trading=False,
|
||||
side=r_side)
|
||||
await rq.set_auto_trading(
|
||||
tg_id=callback_query.from_user.id,
|
||||
symbol=symbol,
|
||||
auto_trading=False,
|
||||
side=r_side,
|
||||
)
|
||||
text = error_messages.get(res, "Произошла ошибка при запуске торговли")
|
||||
await callback_query.message.edit_text(text=text, reply_markup=kbi.profile_bybit)
|
||||
await callback_query.message.edit_text(
|
||||
text=text, reply_markup=kbi.profile_bybit
|
||||
)
|
||||
|
||||
await callback_query.message.edit_text("Запуск торговли...")
|
||||
task = asyncio.create_task(delay_start())
|
||||
@@ -354,7 +383,9 @@ async def start_switch(callback_query: CallbackQuery, state: FSMContext) -> None
|
||||
)
|
||||
|
||||
|
||||
@router_start_trading.callback_query(lambda c: c.data == "cancel_timer_merged" or c.data == "cancel_timer_switch")
|
||||
@router_start_trading.callback_query(
|
||||
lambda c: c.data == "cancel_timer_merged" or c.data == "cancel_timer_switch"
|
||||
)
|
||||
async def cancel_start_trading(
|
||||
callback_query: CallbackQuery, state: FSMContext
|
||||
) -> None:
|
||||
@@ -371,7 +402,9 @@ async def cancel_start_trading(
|
||||
cancel_start_task_merged(user_id=callback_query.from_user.id)
|
||||
elif callback_query.data == "cancel_timer_switch":
|
||||
cancel_start_task_switch(user_id=callback_query.from_user.id)
|
||||
await callback_query.message.edit_text(text="Запуск торговли отменен", reply_markup=kbi.profile_bybit)
|
||||
await callback_query.message.edit_text(
|
||||
text="Запуск торговли отменен", reply_markup=kbi.profile_bybit
|
||||
)
|
||||
except Exception as e:
|
||||
await callback_query.answer("Произошла ошибка при отмене запуска торговли")
|
||||
logger.error(
|
||||
|
Reference in New Issue
Block a user