From d6863872c718ef09bdb6e5523c0879dcadfb539e Mon Sep 17 00:00:00 2001 From: Marc Blatter Date: Tue, 7 Jul 2026 09:05:01 +0200 Subject: [PATCH] Bot auto-update: src/__pycache__/web_dashboard.cpython-310.pyc,src/web_dashboard.py --- src/__pycache__/web_dashboard.cpython-310.pyc | Bin 14046 -> 14288 bytes src/web_dashboard.py | 11 +++++++++++ 2 files changed, 11 insertions(+) diff --git a/src/__pycache__/web_dashboard.cpython-310.pyc b/src/__pycache__/web_dashboard.cpython-310.pyc index 90cf9251bb8b490826186031ece308897b80a86d..9c90a93b0b9fe5bb8733125858d2dd34b9f84ca2 100644 GIT binary patch delta 1088 zcmZvaO-vI(6vt=UrMtAi{lm}&RPv# zJZUnXj0S2vs0S0p#FOFR(U^ELrUw(f7(IE=tNPxG#29xozxluSpU=1Ze)3JxDC)YO z!1Lw);Mva96XS~#i$SPEdkO9Q8%oGkI`c~EHP6cdM;DsVwO?X96 z;cXyHfmQ=+R>~sGR%|6s_}mSQ3+kNfU+G{)?X|aiWyWgzSKb&cdbKcl90RL<8}WQ-pzi zIhtPTFVG95tx-<+in&i8W}=S|Y|rfd%%F0)OAvgRxz_zX0MXaExqB@~Muz+PkNq(g zzt_6Pt!FKR!|AjeeZ2jsW#33|YGBlt$!1Ns8v#MHV$>y1Ytojl(ClVM<%~U9;1QgB2xAqdWhYF=S7EAOuIp%~Q?j?? zH62-qY<^4k@OCs3h?R&qVk@Epu^E9!Zd0pzw!}Gnr?Kfwp=9y_$jX6as;L{q;kJ5S zhhz65Rv^NNlzf+M8ic_XF_PaW~A4d%$qRWVpAndN@OnVIf9(lBLm>!pv&bu@vySw56x6&gx{J0$N W%Eh|slEG;~?5XlxW zTs)dQPl|zh^q?U%@uU|oUQ9fhSP~Pt=?M=;4@P~{VBE?3&3|SmlbzZ3KKE%}%c-h| z@F%W}-~QFVt9=z3s(FaHH~cK!07CA~Y)!96yM%GF$r_8)j_GYpfE0f|Ar4}+)%4B`P zNOLzYo$%FAyg)RFID)7}gxI5Cb1uwf*=ZVC>cZq%L=WN|qL;&`(etQrjr2024^bJm z0~Jn8ClLQv)5gPul3OscNxll*Sfc${Fu)eWb+VW?tR!E4oDGJeFv(cxF@%^u+@w^N cJ%*K&EFMlbbbElTqe+YWZ=aE%9)#b20g`XOkN^Mx diff --git a/src/web_dashboard.py b/src/web_dashboard.py index 2ebe962..163e94a 100644 --- a/src/web_dashboard.py +++ b/src/web_dashboard.py @@ -76,6 +76,13 @@ async def get_state(): portfolio_value += data['total'] * price usdt_free = balance.get('USDT', {}).get('free', 0) + + # P&L CALCULATION + initial_capital = 137.79 + pnl_usdt = portfolio_value - initial_capital + pnl_pct = (pnl_usdt / initial_capital * 100) if initial_capital > 0 else 0 + pnl_status = "🟢 PROFIT" if pnl_usdt > 0.01 else ("🔴 LOSS" if pnl_usdt < -0.01 else "⚪ BREAK") + pnl_color = "accent" if pnl_usdt > 0.01 else ("negative" if pnl_usdt < -0.01 else "neutral") # Count active positions = locked coins (NOT trades.json) active_positions = 0 @@ -91,6 +98,10 @@ async def get_state(): 'usdt_free': round(usdt_free, 2), 'active_positions': active_positions, # ← NEW: Real count! 'current_trades': trades.get('current', {}), + 'pnl_usdt': round(pnl_usdt, 2), + 'pnl_pct': round(pnl_pct, 2), + 'pnl_status': pnl_status, + 'pnl_color': pnl_color, 'completed_trades': trades.get('completed', []), 'prices': prices, 'timestamp': datetime.now().isoformat()