forked from kodorvan/stcs
Added trigger price
This commit is contained in:
@@ -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(
|
||||
|
@@ -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))
|
||||
|
@@ -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:
|
||||
|
Reference in New Issue
Block a user