diff --git a/ft-app/app/models.py b/ft-app/app/models.py index 0f00fb3..683e7e4 100644 --- a/ft-app/app/models.py +++ b/ft-app/app/models.py @@ -143,6 +143,7 @@ class Trade(Base): return None mul = 20 # glass futures point value if self.direction == "long": - return (self.close_price - self.open_price) * mul - (self.open_fee or 0) - (self.close_fee or 0) + result = (self.close_price - self.open_price) * mul - (self.open_fee or 0) - (self.close_fee or 0) else: - return (self.open_price - self.close_price) * mul - (self.open_fee or 0) - (self.close_fee or 0) \ No newline at end of file + result = (self.open_price - self.close_price) * mul - (self.open_fee or 0) - (self.close_fee or 0) + return round(result, 2) \ No newline at end of file diff --git a/ft-app/app/routers/trades.py b/ft-app/app/routers/trades.py index a175937..3113c05 100644 --- a/ft-app/app/routers/trades.py +++ b/ft-app/app/routers/trades.py @@ -3,7 +3,7 @@ from fastapi import APIRouter, Depends, Form, Request from fastapi.responses import HTMLResponse, RedirectResponse from sqlalchemy.orm import Session from app.database import get_db -from app.models import Trade, Product, Contract +from app.models import Trade, Contract, Product router = APIRouter(prefix="/trades", tags=["trades"]) @@ -20,11 +20,6 @@ def get_active_contracts(db: Session) -> list[str]: return [c[0] for c in contracts] -def get_products(db: Session) -> list[str]: - products = db.query(Product.code).order_by(Product.code).all() - return [p[0] for p in products] - - def today_str() -> str: return date.today().isoformat() @@ -46,7 +41,6 @@ def trades_page(request: Request, db: Session = Depends(get_db)): request=request, active_nav="trades", contracts=get_active_contracts(db), - products=get_products(db), directions=DIRECTIONS, open_trades=open_trades, closed_trades=closed_trades, @@ -58,7 +52,6 @@ def trades_page(request: Request, db: Session = Depends(get_db)): @router.post("/open") def open_trade( request: Request, - product_code: str = Form(...), contract_code: str = Form(...), direction: str = Form(...), open_date: str = Form(...), @@ -66,9 +59,13 @@ def open_trade( open_fee: float = Form(0.0), db: Session = Depends(get_db), ): + code = contract_code.upper() + contract = db.query(Contract).filter(Contract.code == code).first() + product_code = contract.product.code if contract else code[:2] + t = Trade( - product_code=product_code.upper(), - contract_code=contract_code.upper(), + product_code=product_code, + contract_code=code, direction=direction, open_date=date.fromisoformat(open_date), open_price=open_price, diff --git a/ft-app/app/templates/trades.html b/ft-app/app/templates/trades.html index 7164a9f..e91c91b 100644 --- a/ft-app/app/templates/trades.html +++ b/ft-app/app/templates/trades.html @@ -10,16 +10,7 @@