Show realized trade PnL in Android app
This commit is contained in:
@@ -242,6 +242,34 @@ class Storage:
|
||||
).fetchall()
|
||||
return [dict(row) for row in rows]
|
||||
|
||||
def closed_trade_summary(self) -> dict[str, Any]:
|
||||
with self.connect() as conn:
|
||||
row = conn.execute(
|
||||
"""
|
||||
SELECT
|
||||
COUNT(*) AS trades,
|
||||
COALESCE(SUM(net_pnl), 0) AS net_pnl,
|
||||
COALESCE(SUM(gross_pnl), 0) AS gross_pnl,
|
||||
COALESCE(SUM(fee_usdt), 0) AS fee_usdt,
|
||||
COALESCE(SUM(CASE WHEN net_pnl > 0 THEN 1 ELSE 0 END), 0) AS wins,
|
||||
COALESCE(SUM(CASE WHEN net_pnl < 0 THEN 1 ELSE 0 END), 0) AS losses
|
||||
FROM trades
|
||||
WHERE side='SELL' AND closed_at IS NOT NULL
|
||||
"""
|
||||
).fetchone()
|
||||
trades = int(row["trades"] if row else 0)
|
||||
wins = int(row["wins"] if row else 0)
|
||||
losses = int(row["losses"] if row else 0)
|
||||
return {
|
||||
"trades": trades,
|
||||
"net_pnl": round(float(row["net_pnl"] if row else 0.0), 6),
|
||||
"gross_pnl": round(float(row["gross_pnl"] if row else 0.0), 6),
|
||||
"fee_usdt": round(float(row["fee_usdt"] if row else 0.0), 6),
|
||||
"wins": wins,
|
||||
"losses": losses,
|
||||
"win_rate": round(wins / trades, 4) if trades else 0.0,
|
||||
}
|
||||
|
||||
def insert_signal(self, signal: Signal) -> None:
|
||||
with self.connect() as conn:
|
||||
conn.execute(
|
||||
|
||||
Reference in New Issue
Block a user