From cf08e5dc8d23c2f640cb66b799d82b5c97dc55f2 Mon Sep 17 00:00:00 2001 From: Marc Blatter Date: Sat, 4 Jul 2026 13:12:06 +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 17804 -> 19817 bytes src/web_dashboard.py | 346 ++++++++++-------- 2 files changed, 201 insertions(+), 145 deletions(-) diff --git a/src/__pycache__/web_dashboard.cpython-310.pyc b/src/__pycache__/web_dashboard.cpython-310.pyc index 422ce88010b28ba40ba3f44898a88f8aac7f2da1..8940cd35f9e8970db5ea2bbf2cedc3278b04dfde 100644 GIT binary patch delta 3182 zcma)8&2QX96mLi+LP$cB-H^0N$+Vl04ZC*jHM?v!mx?Na2q8qvhmg3;+GFof+hf_@ zd{9*@ByJ!fx)mytr z+2a3dN~_<|kg6zKJ4JIkvzgyRHKM?$xR)l_QoQ5hmP1`>K&Ukcdtmi&kZnJVzH2N+ zUsaZ)A1WKs@0IoF+eT$U9uRC0UtsuTeKXoxuFPtw<>>M1iq`UuQNV0!pjt=oXl5z* zBp|8J!jL&V1aU=QH?F@WtPj*lxCiu8!Vk-B;$&e0o+A0Yujt0|>U3gvK@LJ34g(SO z!L{uX+)IJ!@_5xw8Jv8HYKo$F+uB6GM*|v?;!dCW93=?~It=0jiwACvnRJvu-)FW_ z+#hep2`ln0aR8n<+44E04`P;ne|01J?W(q;DLl(2QcZuS#0d*~dDk3~mCH~luoeAV zxgrAw`6PX-kL#^=yNR+timWDPBUD`*#STOuY)rzfT;mwD=&x!cnpwWV`>HAkOvmX- zhu9vHGdiQ(7w2$H#Fp0#Ajvc&!9l$edkuzt!MUHSXc@99MBe572*+QRJr>ZA9+pEC zeqtQsqb{-V8AnZ1GZY1mz90ughpLMh@+^KwY)T;w?Wg%Y2YWRW6cCN)c=kyp9W?95>UHT_4B({ z=}soKO-!!!ubwT?aRcn9`jtWg#fO!4G{jnL_5wE&<=V|fXw`2|}N_R*4S+w78Waw2>SfVNc?d$tj(^0C&oQn3emK zwwJ^|r31iplfzWZ|5Tz7>Z$kR^*{)@HxiS)DdDDvGv-!a79q8)9IX5 z({k7j_AUO%3|a9l^3!@P`eS`hXlyv5_(Wp2-9br$B21Yry+lP zD|_hS_#Gs&33&r%+bZ9V{%fr7%V15SWpmi24xc~pmPp*C&k24w%P;ov>*v=WZBN1@aX8s0k(ea z-FdZhZ+GnR_`!-nt?_TgOW^egXs;%WT|YE|c5Q?{oS3F~VtV_Hcq_gv>}*N9EoiT~ zF>Zy9V&eeECYaM4eqHMTX3xcAhMFDJz#&l@u;~X|CQx7$1xQJ@5`vl)a3k=;wH0Wu ziu>)`Y-Q&=X}b1Q;NF|gBHil!v2+z?#xUAV>!#4ZrP+i4OURE~~t;uC+pA1wpf_L82jL5N&9AOtPd?5dp$AvZUB-{i047ASJwI?j&uQ(tSeOvpG(m_% zl$SC#J+AkE1U1;2F>=vr6Oq`r6BbRMpFT&2&fhxf!iY79keNGmq5nKc2qdjUv7qA$ z$G$jKp6sZ@g4;D<{x2R*UC%wH>zM*vq`rkIUzfyD1-=sW`egr(>6!j*fGEZdpX{qq z>{{?btzH3!R;w_g)e6v5eeq(~16fT6*|W_RZzo(&o*-X&vf?D8%4Yi#JFcz`JZONa zRnaf4$bm$*c1Ev$L>fLrsp9m<+}uPu`4xg$ebb`SmH9bJ=8IrJ@2jX85&rK Trading Bot Dashboard + * { + margin: 0; + padding: 0; + box-sizing: border-box; + } + + body { + font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif; + background: linear-gradient(135deg, #2ecc71c29 0%, #302b63 100%); + color: #e0e0e0; + padding: 20px; + min-height: 100vh; + } + + .container { + max-width: 1400px; + margin: 0 auto; + } + + .header { + text-align: center; + margin-bottom: 30px; + border-bottom: 2px solid #6c63ff; + padding-bottom: 20px; + } + + .header h1 { + font-size: 2.5em; + color: #6c63ff; + margin-bottom: 10px; + } + + .status { + display: inline-block; + padding: 8px 16px; + background: #00c853; + color: white; + border-radius: 20px; + font-weight: bold; + font-size: 0.9em; + } + + .grid { + display: grid; + grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); + gap: 20px; + margin-bottom: 30px; + } + + .card { + background: rgba(255, 255, 255, 0.1); + border: 1px solid #6c63ff; + border-radius: 10px; + padding: 20px; + backdrop-filter: blur(10px); + transition: all 0.3s ease; + } + + .card:hover { + background: rgba(255, 255, 255, 0.15); + border-color: #00c853; + transform: translateY(-5px); + } + + .card-title { + color: #6c63ff; + font-size: 0.9em; + text-transform: uppercase; + letter-spacing: 1px; + margin-bottom: 10px; + } + + .card-value { + font-size: 2em; + font-weight: bold; + color: #e0e0e0; + margin-bottom: 5px; + } + + .card-sub { + color: #a0a0a0; + font-size: 0.85em; + } + + .positive { + color: #00c853; + } + + .negative { + color: #ff3d00; + } + + .section { + margin-bottom: 30px; + } + + .section-title { + color: #6c63ff; + font-size: 1.5em; + margin-bottom: 15px; + border-bottom: 1px solid #6c63ff; + padding-bottom: 10px; + } + + .trades-list { + display: grid; + grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); + gap: 15px; + } + + .trade-card { + background: rgba(255, 255, 255, 0.08); + border-left: 4px solid #6c63ff; + border-radius: 5px; + padding: 15px; + font-size: 0.9em; + } + + .trade-card.open { + border-left-color: #6c63ff; + } + + .trade-card.closed { + border-left-color: #00c853; + } + + .trade-pair { + font-weight: bold; + color: #6c63ff; + margin-bottom: 8px; + } + + .trade-info { + display: grid; + grid-template-columns: 1fr 1fr; + gap: 10px; + font-size: 0.85em; + color: #a0a0a0; + } + + .trade-info strong { + color: #e0e0e0; + } + + .swap-item { + background: rgba(255, 255, 255, 0.05); + padding: 10px; + border-radius: 5px; + margin-bottom: 8px; + font-size: 0.85em; + } + + .performance-grid { + display: grid; + grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); + gap: 15px; + } + + .stat-card { + background: rgba(108, 99, 255, 0.2); + border: 1px solid #6c63ff; + border-radius: 8px; + padding: 15px; + text-align: center; + } + + .stat-label { + color: #a0a0a0; + font-size: 0.8em; + text-transform: uppercase; + margin-bottom: 8px; + } + + .stat-value { + font-size: 1.8em; + font-weight: bold; + color: #00c853; + } + + .stat-value.loss { + color: #ff3d00; + } + + .update-time { + text-align: right; + color: #666; + font-size: 0.8em; + margin-top: 20px; + padding-top: 20px; + border-top: 1px solid #333; + } + + @keyframes fadeIn { + from { opacity: 0; } + to { opacity: 1; } + } + + .fade-in { + animation: fadeIn 0.3s ease-in; + } +