etichete: doua defecte vechi la mdsrt, trei la mp2, si verdictul pe restul
La mdsrt_aplus eticheta spunea "primul low 94.60" pentru o bara al carei low era 94.50. Reparatia a mutat low-ul, nu eticheta: regula capitolului numara piciorul dupa low, iar specul spune tot 94.60 - doar umbra de 0.10 o contrazicea. Nicio cifra tiparita nu se schimba, iar nivelul isi ia acum eticheta din date, cu assert, ca sa nu mai poata minti. Cele trei de la mp2 aveau toate aceeasi cauza fizica: text colorat peste un corp de candela de aceeasi culoare. Acolo caracterele nu se incaleca, dispar - "intrare 577.00" se citea "intrare 577. 0", "crossing" se citea "crossi g". VERDICT pe restul de ~94: nu merita un lot. Din 20 de suprapuneri vazute efectiv pe ecran, doar 3 schimbau ce citesti, si toate trei din cauza aia. Celelalte 17 - text peste fitil, peste linie de nivel, peste chenar, peste coada de sageata - raman lizibile, fiindca fundalul e o linie subtire, nu o suprafata plina. Filtrul util nu e tiparul geometric, ci: eticheta cu cifra, peste un <rect> de aceeasi culoare. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01ThN7ixZrowca8aTGrK1MUJ
This commit is contained in:
@@ -25,6 +25,8 @@ from pathlib import Path
|
||||
|
||||
sys.path.insert(0, "/workspace/atm-curs-dl")
|
||||
from svg_candles import Candle, Chart, Level, Mark, from_closes # noqa: E402
|
||||
sys.path.insert(0, "/workspace/atm-curs-dl/gen")
|
||||
from eticheta_libera import eticheta_libera # noqa: E402
|
||||
|
||||
OUT = Path(__file__).resolve().parent / "mp2_aplus.svg"
|
||||
|
||||
@@ -133,13 +135,19 @@ ch_a = Chart(
|
||||
candles=cds_a,
|
||||
levels=[Level(SUP_A, f"suport quarterly {SUP_A:.2f}", GRAY, label_at="left"),
|
||||
Level(SL_A, f"SL {SL_A:.2f} (peste suport)", RED, label_at="right"),
|
||||
Level(entry_a, f"intrare {entry_a:.2f}", GREEN, label_at="left"),
|
||||
# label_dy: intrarea 577.00 și neckline-ul 578.00 sunt la 1.00
|
||||
# (7.5 px) una de alta, iar linia portocalie trecea exact prin
|
||||
# zecimala etichetei verzi; eticheta coboară sub linia ei
|
||||
Level(entry_a, f"intrare {entry_a:.2f}", GREEN, label_at="left",
|
||||
label_dy=18),
|
||||
Level(NECK_A, f"neckline {NECK_A:.2f}", ORANGE, label_at="right"),
|
||||
Level(TP1_A, f"TP1 {TP1_A:.2f} = 1:1", BLUE, label_at="right")],
|
||||
marks=[Mark(LS_A, f"umăr stâng {ls_a:.0f}", GRAY, "above", dy=-4),
|
||||
Mark(HEAD_A, f"head {head_a:.0f} / double bottom", RED, "below", dy=8),
|
||||
Mark(RS_A, f"umăr drept {rs_a:.0f}", GRAY, "above", dy=-4),
|
||||
Mark(ENTRY_A, "crossing", GREEN, "above", dy=-6)],
|
||||
# dx: pe candela ei, eticheta cădea peste corpul verde de
|
||||
# alături și se citea „crossi g" (verde pe verde, 02.10.2026)
|
||||
Mark(ENTRY_A, "crossing", GREEN, "above", dy=-6, dx=-32)],
|
||||
scale=7.5, gap=15, body_w=9, left=44, width=PW, vol_h=64,
|
||||
vol_label="volum", title="A+ — crossing la confluență (SPY, aprilie)",
|
||||
trend="down",
|
||||
@@ -152,7 +160,9 @@ ch_m = Chart(
|
||||
Level(SL_M, f"SL {SL_M:.2f}", RED, label_at="right"),
|
||||
Level(entry_m, f"intrare {entry_m:.2f}", GREEN, label_at="right"),
|
||||
Level(TP1_M, f"TP1 {TP1_M:.2f}", BLUE, label_at="right")],
|
||||
marks=[Mark(ENTRY_M, "crossing (mijloc)", GREEN, "above", dy=-4)],
|
||||
# idem: „(mijloc)" intra sub corpul verde următor; mai sus nu e loc,
|
||||
# candelele urcă, deci eticheta pleacă lateral
|
||||
marks=[Mark(ENTRY_M, "crossing (mijloc)", GREEN, "above", dy=-4, dx=-50)],
|
||||
scale=34.0, gap=15, body_w=9, left=44, width=PW, vol_h=64,
|
||||
vol_label="volum", title="Mediocru — crossing în mijlocul range-ului (construit)",
|
||||
caption="exemplu construit, nu date reale — SL nu stă pe niciun pivot",
|
||||
@@ -268,6 +278,11 @@ for cheie in ("suport quarterly 554.00", f"SL {SL_A:.2f} (peste suport)", "intra
|
||||
"crossing (mijloc)", "exemplu construit, nu date reale"):
|
||||
assert cheie in wrapper, f"lipsește din desen: {cheie!r}"
|
||||
|
||||
# cele două etichete mutate pe 02.10.2026: verificarea rămâne pornită ca
|
||||
# o mutare viitoare să nu le bage înapoi sub corpurile verzi
|
||||
eticheta_libera(wrapper, "aplus-crossing", {"crossing", "crossing (mijloc)"},
|
||||
rects=True)
|
||||
|
||||
OUT.write_text(wrapper, encoding="utf-8")
|
||||
print(f"scris {OUT.name}: {TOTAL_W}x{TOTAL_H:.0f}, "
|
||||
f"{len(all_txt)} etichete, verificare OK")
|
||||
|
||||
Reference in New Issue
Block a user