2
0
forked from kodorvan/stcs

TP AND SL have been converted to float. Switch control has been moved to the main settings, Removed unnecessary parameters

This commit is contained in:
algizn97
2025-10-10 13:55:42 +05:00
parent 42c4660fe3
commit 4663888190
2 changed files with 91 additions and 60 deletions

View File

@@ -12,7 +12,9 @@ logger = logging.getLogger("database")
async_engine = create_async_engine(DATABASE_URL, echo=False) async_engine = create_async_engine(DATABASE_URL, echo=False)
async_session = async_sessionmaker(async_engine, class_=AsyncSession, expire_on_commit=False) async_session = async_sessionmaker(
async_engine, class_=AsyncSession, expire_on_commit=False
)
async def init_db(): async def init_db():

View File

@@ -1,6 +1,15 @@
from sqlalchemy.ext.declarative import declarative_base from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.ext.asyncio import AsyncAttrs from sqlalchemy.ext.asyncio import AsyncAttrs
from sqlalchemy import Column, ForeignKey, Integer, String, BigInteger, Float, Boolean, UniqueConstraint from sqlalchemy import (
Column,
ForeignKey,
Integer,
String,
BigInteger,
Float,
Boolean,
UniqueConstraint,
)
from sqlalchemy.orm import relationship from sqlalchemy.orm import relationship
Base = declarative_base(cls=AsyncAttrs) Base = declarative_base(cls=AsyncAttrs)
@@ -8,61 +17,77 @@ Base = declarative_base(cls=AsyncAttrs)
class User(Base): class User(Base):
"""User model.""" """User model."""
__tablename__ = "users" __tablename__ = "users"
id = Column(Integer, primary_key=True, autoincrement=True) id = Column(Integer, primary_key=True, autoincrement=True)
tg_id = Column(BigInteger, nullable=False, unique=True) tg_id = Column(BigInteger, nullable=False, unique=True)
username = Column(String, nullable=False) username = Column(String, nullable=False)
user_api = relationship("UserApi", user_api = relationship(
back_populates="user", "UserApi",
cascade="all, delete-orphan", back_populates="user",
passive_deletes=True, cascade="all, delete-orphan",
uselist=False) passive_deletes=True,
uselist=False,
)
user_symbol = relationship("UserSymbol", user_symbol = relationship(
back_populates="user", "UserSymbol",
cascade="all, delete-orphan", back_populates="user",
passive_deletes=True, cascade="all, delete-orphan",
uselist=False) passive_deletes=True,
uselist=False,
)
user_additional_settings = relationship("UserAdditionalSettings", user_additional_settings = relationship(
back_populates="user", "UserAdditionalSettings",
cascade="all, delete-orphan", back_populates="user",
passive_deletes=True, cascade="all, delete-orphan",
uselist=False) passive_deletes=True,
uselist=False,
)
user_risk_management = relationship("UserRiskManagement", user_risk_management = relationship(
back_populates="user", "UserRiskManagement",
cascade="all, delete-orphan", back_populates="user",
passive_deletes=True, cascade="all, delete-orphan",
uselist=False) passive_deletes=True,
uselist=False,
)
user_conditional_settings = relationship("UserConditionalSettings", user_conditional_settings = relationship(
back_populates="user", "UserConditionalSettings",
cascade="all, delete-orphan", back_populates="user",
passive_deletes=True, cascade="all, delete-orphan",
uselist=False) passive_deletes=True,
uselist=False,
)
user_deals = relationship("UserDeals", user_deals = relationship(
back_populates="user", "UserDeals",
cascade="all, delete-orphan", back_populates="user",
passive_deletes=True) cascade="all, delete-orphan",
passive_deletes=True,
)
user_auto_trading = relationship("UserAutoTrading", user_auto_trading = relationship(
back_populates="user", "UserAutoTrading",
cascade="all, delete-orphan", back_populates="user",
passive_deletes=True) cascade="all, delete-orphan",
passive_deletes=True,
)
class UserApi(Base): class UserApi(Base):
"""User API model.""" """User API model."""
__tablename__ = "user_api" __tablename__ = "user_api"
id = Column(Integer, primary_key=True, autoincrement=True) id = Column(Integer, primary_key=True, autoincrement=True)
user_id = Column(Integer, user_id = Column(
ForeignKey("users.id", ondelete="CASCADE"), Integer, ForeignKey("users.id", ondelete="CASCADE"), nullable=False, unique=True
nullable=False, unique=True) )
api_key = Column(String, nullable=False) api_key = Column(String, nullable=False)
api_secret = Column(String, nullable=False) api_secret = Column(String, nullable=False)
@@ -71,12 +96,13 @@ class UserApi(Base):
class UserSymbol(Base): class UserSymbol(Base):
"""User symbol model.""" """User symbol model."""
__tablename__ = "user_symbol" __tablename__ = "user_symbol"
id = Column(Integer, primary_key=True, autoincrement=True) id = Column(Integer, primary_key=True, autoincrement=True)
user_id = Column(Integer, user_id = Column(
ForeignKey("users.id", ondelete="CASCADE"), Integer, ForeignKey("users.id", ondelete="CASCADE"), nullable=False, unique=True
nullable=False, unique=True) )
symbol = Column(String, nullable=False, default="BTCUSDT") symbol = Column(String, nullable=False, default="BTCUSDT")
user = relationship("User", back_populates="user_symbol") user = relationship("User", back_populates="user_symbol")
@@ -84,12 +110,13 @@ class UserSymbol(Base):
class UserAdditionalSettings(Base): class UserAdditionalSettings(Base):
"""User additional settings model.""" """User additional settings model."""
__tablename__ = "user_additional_settings" __tablename__ = "user_additional_settings"
id = Column(Integer, primary_key=True, autoincrement=True) id = Column(Integer, primary_key=True, autoincrement=True)
user_id = Column(Integer, user_id = Column(
ForeignKey("users.id", ondelete="CASCADE"), Integer, ForeignKey("users.id", ondelete="CASCADE"), nullable=False, unique=True
nullable=False, unique=True) )
trade_mode = Column(String, nullable=False, default="Merged_Single") trade_mode = Column(String, nullable=False, default="Merged_Single")
switch_side = Column(String, nullable=False, default="По направлению") switch_side = Column(String, nullable=False, default="По направлению")
trigger_price = Column(Float, nullable=False, default=0.0) trigger_price = Column(Float, nullable=False, default=0.0)
@@ -104,12 +131,13 @@ class UserAdditionalSettings(Base):
class UserRiskManagement(Base): class UserRiskManagement(Base):
"""User risk management model.""" """User risk management model."""
__tablename__ = "user_risk_management" __tablename__ = "user_risk_management"
id = Column(Integer, primary_key=True, autoincrement=True) id = Column(Integer, primary_key=True, autoincrement=True)
user_id = Column(Integer, user_id = Column(
ForeignKey("users.id", ondelete="CASCADE"), Integer, ForeignKey("users.id", ondelete="CASCADE"), nullable=False, unique=True
nullable=False, unique=True) )
take_profit_percent = Column(Float, nullable=False, default=1) take_profit_percent = Column(Float, nullable=False, default=1)
stop_loss_percent = Column(Float, nullable=False, default=1) stop_loss_percent = Column(Float, nullable=False, default=1)
commission_fee = Column(String, nullable=False, default="Yes_commission_fee") commission_fee = Column(String, nullable=False, default="Yes_commission_fee")
@@ -119,12 +147,13 @@ class UserRiskManagement(Base):
class UserConditionalSettings(Base): class UserConditionalSettings(Base):
"""User conditional settings model.""" """User conditional settings model."""
__tablename__ = "user_conditional_settings" __tablename__ = "user_conditional_settings"
id = Column(Integer, primary_key=True, autoincrement=True) id = Column(Integer, primary_key=True, autoincrement=True)
user_id = Column(Integer, user_id = Column(
ForeignKey("users.id", ondelete="CASCADE"), Integer, ForeignKey("users.id", ondelete="CASCADE"), nullable=False, unique=True
nullable=False, unique=True) )
timer_start = Column(Integer, nullable=False, default=0) timer_start = Column(Integer, nullable=False, default=0)
timer_end = Column(Integer, nullable=False, default=0) timer_end = Column(Integer, nullable=False, default=0)
@@ -134,12 +163,13 @@ class UserConditionalSettings(Base):
class UserDeals(Base): class UserDeals(Base):
"""User deals model.""" """User deals model."""
__tablename__ = "user_deals" __tablename__ = "user_deals"
id = Column(Integer, primary_key=True, autoincrement=True) id = Column(Integer, primary_key=True, autoincrement=True)
user_id = Column(Integer, user_id = Column(
ForeignKey("users.id", ondelete="CASCADE"), Integer, ForeignKey("users.id", ondelete="CASCADE"), nullable=False
nullable=False) )
current_step = Column(Integer, nullable=True) current_step = Column(Integer, nullable=True)
symbol = Column(String, nullable=True) symbol = Column(String, nullable=True)
trade_mode = Column(String, nullable=True) trade_mode = Column(String, nullable=True)
@@ -157,19 +187,18 @@ class UserDeals(Base):
user = relationship("User", back_populates="user_deals") user = relationship("User", back_populates="user_deals")
__table_args__ = ( __table_args__ = (UniqueConstraint("user_id", "symbol", name="uq_user_symbol"),)
UniqueConstraint('user_id', 'symbol', name='uq_user_symbol'),
)
class UserAutoTrading(Base): class UserAutoTrading(Base):
"""User auto trading model.""" """User auto trading model."""
__tablename__ = "user_auto_trading" __tablename__ = "user_auto_trading"
id = Column(Integer, primary_key=True, autoincrement=True) id = Column(Integer, primary_key=True, autoincrement=True)
user_id = Column(Integer, user_id = Column(
ForeignKey("users.id", ondelete="CASCADE"), Integer, ForeignKey("users.id", ondelete="CASCADE"), nullable=False
nullable=False) )
symbol = Column(String, nullable=True) symbol = Column(String, nullable=True)
auto_trading = Column(Boolean, nullable=True) auto_trading = Column(Boolean, nullable=True)
fee = Column(Float, nullable=True) fee = Column(Float, nullable=True)