analista: testata mostra trading_giorno (non l'equity grezza) e 'nel giorno', non 'oggi' (#35 C8)
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
+14
-1
@@ -206,9 +206,22 @@ def testata(voce: dict) -> str:
|
|||||||
p, lb = voce.get("pnl") or {}, voce.get("libro") or {}
|
p, lb = voce.get("pnl") or {}, voce.get("libro") or {}
|
||||||
dq, cum = p.get("delta_equity"), p.get("cumulato_da_arming")
|
dq, cum = p.get("delta_equity"), p.get("cumulato_da_arming")
|
||||||
eq = p.get("equity_fine")
|
eq = p.get("equity_fine")
|
||||||
|
# (#35 C8) il cron gira alle 00:30 sul giorno CHIUSO: "oggi" e' ieri -> "nel giorno". E se
|
||||||
|
# ci sono movimenti di capitale CERTI (mov_giorno; bool() come journal.scorporo: assente o
|
||||||
|
# 0 -> nessun movimento) la cifra da mostrare e' trading_giorno (al netto), non l'equity
|
||||||
|
# grezza: altrimenti un versamento si legge come P&L (successo il 25/08, +$1.399 letti come
|
||||||
|
# profitto). Se trading_giorno non e' calcolabile si resta su delta_equity, ma con l'etichetta
|
||||||
|
# nuova: non e' "oggi", e non e' comunque il trading al netto.
|
||||||
|
dq_t = p.get("trading_giorno")
|
||||||
|
if p.get("mov_giorno") and dq_t is not None:
|
||||||
|
nota_dq = f" ({dq_t:+.2f} nel giorno, di cui {p['mov_giorno']:+.2f} movimenti)"
|
||||||
|
elif dq is not None:
|
||||||
|
nota_dq = f" ({dq:+.2f} nel giorno)"
|
||||||
|
else:
|
||||||
|
nota_dq = ""
|
||||||
r = [f"<b>📓 Giornale — {_b(voce['giorno'])}</b>"]
|
r = [f"<b>📓 Giornale — {_b(voce['giorno'])}</b>"]
|
||||||
r.append(" equity " + (f"<b>${eq:,.2f}</b>" if eq is not None else "n/d")
|
r.append(" equity " + (f"<b>${eq:,.2f}</b>" if eq is not None else "n/d")
|
||||||
+ ("" if dq is None else f" ({dq:+.2f} oggi)")
|
+ nota_dq
|
||||||
+ ("" if cum is None else f" · dall'arming {cum:+.2f}"
|
+ ("" if cum is None else f" · dall'arming {cum:+.2f}"
|
||||||
+ (f" (di cui {p['mov_arming']:+.2f} versati -> trading "
|
+ (f" (di cui {p['mov_arming']:+.2f} versati -> trading "
|
||||||
f"{p['trading_da_arming']:+.2f})"
|
f"{p['trading_da_arming']:+.2f})"
|
||||||
|
|||||||
@@ -285,6 +285,39 @@ def test_la_testata_porta_i_numeri_che_si_leggono_dalla_notifica():
|
|||||||
t = A.testata(_voce_piena())
|
t = A.testata(_voce_piena())
|
||||||
assert "$637.36" in t and "+2.36" in t and "+39.30" in t
|
assert "$637.36" in t and "+2.36" in t and "+39.30" in t
|
||||||
assert "BTC $+116" in t and "leva 0.41x" in t and "1 fill" in t
|
assert "BTC $+116" in t and "leva 0.41x" in t and "1 fill" in t
|
||||||
|
# (#35 C8) il cron gira alle 00:30 sul giorno CHIUSO: non e' "oggi", e' "nel giorno".
|
||||||
|
assert "nel giorno" in t and "oggi" not in t
|
||||||
|
|
||||||
|
|
||||||
|
def test_testata_con_movimento_mostra_trading_giorno_non_il_grezzo():
|
||||||
|
"""(#35 C8) Un versamento di $1.399 non deve leggersi come P&L: con mov_giorno != 0 e
|
||||||
|
trading_giorno calcolabile, la cifra mostrata e' trading_giorno, non delta_equity."""
|
||||||
|
voce = _voce_piena()
|
||||||
|
voce["pnl"] = dict(voce["pnl"], delta_equity=1401.36, mov_giorno=1399.0, trading_giorno=2.36)
|
||||||
|
t = A.testata(voce)
|
||||||
|
assert "+2.36 nel giorno" in t
|
||||||
|
assert "di cui +1399.00 movimenti" in t
|
||||||
|
assert "+1401.36" not in t # il grezzo non compare piu' in testata
|
||||||
|
|
||||||
|
|
||||||
|
def test_testata_con_movimento_ma_trading_giorno_none_resta_sul_grezzo():
|
||||||
|
"""(#35 C8) Se trading_giorno non e' calcolabile (None) si resta su delta_equity, ma con
|
||||||
|
l'etichetta nuova, non "oggi"."""
|
||||||
|
voce = _voce_piena()
|
||||||
|
voce["pnl"] = dict(voce["pnl"], delta_equity=1401.36, mov_giorno=1399.0, trading_giorno=None)
|
||||||
|
t = A.testata(voce)
|
||||||
|
assert "+1401.36 nel giorno" in t
|
||||||
|
assert "di cui" not in t
|
||||||
|
|
||||||
|
|
||||||
|
def test_testata_senza_movimento_mostra_il_grezzo_con_etichetta_nuova():
|
||||||
|
"""(#35 C8) mov_giorno assente o 0: nessun movimento da scorporare, stesso trattamento di
|
||||||
|
journal.scorporo (bool())."""
|
||||||
|
voce = _voce_piena()
|
||||||
|
voce["pnl"] = dict(voce["pnl"], mov_giorno=0.0, trading_giorno=2.36)
|
||||||
|
t = A.testata(voce)
|
||||||
|
assert "+2.36 nel giorno" in t
|
||||||
|
assert "di cui" not in t
|
||||||
|
|
||||||
|
|
||||||
def test_il_messaggio_sfugge_l_HTML_e_converte_il_grassetto():
|
def test_il_messaggio_sfugge_l_HTML_e_converte_il_grassetto():
|
||||||
|
|||||||
Reference in New Issue
Block a user