Added trigger price

This commit is contained in:
algizn97
2025-09-19 14:45:34 +05:00
parent 29bb6bd0a8
commit 49d4bb26bf
3 changed files with 36 additions and 5 deletions

View File

@@ -1,7 +1,6 @@
import asyncio
import logging.config
import time
import json
import app.services.Bybit.functions.balance as balance_g
import app.services.Bybit.functions.price_symbol as price_symbol
import app.telegram.database.requests as rq
@@ -224,7 +223,6 @@ async def handle_execution_message(message, msg):
"""
tg_id = message.from_user.id
data = msg.get("data", [{}])[0]
logger.info("исполнео:", json.dumps(msg, indent=4))
data_main_risk_stgs = await rq.get_user_risk_management_settings(tg_id)
commission_fee = data_main_risk_stgs.get("commission_fee", "ДА")
pnl = parse_pnl_from_msg(msg)
@@ -300,7 +298,7 @@ async def handle_order_message(message, msg: dict) -> None:
Обработчик сообщений об исполнении ордера.
Логирует событие и проверяет условия для мартингейла и TP.
"""
logger.info(f"Исполнен ордер:\n{json.dumps(msg, indent=4, ensure_ascii=False)}")
# logger.info(f"Исполнен ордер:\n{json.dumps(msg, indent=4, ensure_ascii=False)}")
trade_info = format_order_details_position(msg)
@@ -796,7 +794,6 @@ async def get_active_orders_by_symbol(tg_id, symbol, message):
order
for order in active_orders.get("result", {}).get("list", [])
]
logger.info(limit_orders)
if not limit_orders:
await message.answer(

View File

@@ -153,7 +153,8 @@ class User_Main_Settings(Base):
martingale_step = mapped_column(Integer(), default=1)
maximal_quantity = mapped_column(Integer(), default=10)
entry_order_type = mapped_column(String(10), default='Market')
limit_order_price = mapped_column(Numeric(18, 15), nullable=True)
limit_order_price = mapped_column(Numeric(18, 15), nullable=True, default=0)
trigger_price = mapped_column(Numeric(18, 15), nullable=True, default=0)
last_side = mapped_column(String(10), default='Buy')
trading_start_stop = mapped_column(Integer(), default=0)
@@ -306,3 +307,10 @@ async def async_main():
if not result.first():
logger.info("Заполение таблицы последнего направления")
await conn.execute(User_Main_Settings.__table__.insert().values(last_side=side))
order_type = ['Limit', 'Market']
for typ in order_type:
result = await conn.execute(select(User_Main_Settings).where(User_Main_Settings.entry_order_type == typ))
if not result.first():
logger.info("Заполение таблицы типов ордеров")
await conn.execute(User_Main_Settings.__table__.insert().values(entry_order_type=typ))

View File

@@ -318,6 +318,7 @@ async def get_user_main_settings(tg_id):
'maximal_quantity': user.maximal_quantity,
'entry_order_type': user.entry_order_type,
'limit_order_price': user.limit_order_price,
'trigger_price': user.trigger_price,
'martingale_step': user.martingale_step,
'last_side': user.last_side,
'trading_start_stop': user.trading_start_stop,
@@ -438,6 +439,31 @@ async def update_entry_order_type(tg_id, order_type):
await session.commit()
async def update_trigger_price(tg_id, price):
"""Обновить условную цену пользователя."""
async with async_session() as session:
await session.execute(
update(UMS)
.where(UMS.tg_id == tg_id)
.values(trigger_price=str(price))
)
await session.commit()
async def get_trigger_price(tg_id):
"""Получить условную цену пользователя как float, либо None."""
async with async_session() as session:
result = await session.execute(
select(UMS.trigger_price)
.where(UMS.tg_id == tg_id)
)
price = result.scalar_one_or_none()
if price:
try:
return float(price)
except ValueError:
return None
return None
async def get_limit_price(tg_id):
"""Получить лимитную цену пользователя как float, либо None."""
async with async_session() as session: