Files
atm-curs-dl/triaj/ETICHETE_VECHI.md
Claude Agent d82e1d5ce5 eticheta_libera: filtru orb pentru cifrele care dispar sub candele
cifre_ascunse() ruleaza pe tot repo-ul, nu pe etichete numite, si raporteaza
doar cazul care chiar costa: eticheta cu cifra peste un <rect> plin, fie de
aceeasi culoare (distanta RGB sub 60, cu transparenta amestecata peste alb),
fie desenat dupa ea si deci acoperind-o indiferent de culoare. Al doilea caz
a fost adaugat pentru ca m2d_directie avea text gri sub corp verde - aceeasi
paguba, dar filtrul pe culoare singur il rata.

Calibrare care conta: CW=6.2 e potrivit pentru bold si prea larg pentru rest,
iar coada goala prindea candela de alaturi. CW=5.4 pentru nebold a eliminat
primele doua rezultate, verificate pe ecran ca false pozitive. Ancora inversa:
pe versiunile dinainte de reparatiile de azi filtrul prinde exact cele doua
defecte confirmate vizual.

Scanarea: 17 etichete in 13 diagrame, din care 9 cu gaura pe cifra. Noua din
cele 17 sunt in summaries/06_MODUL_5, unde nu s-a facut niciodata o trecere de
etichete; in gen/strategii, dupa trei treceri, au ramas cinci.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01ThN7ixZrowca8aTGrK1MUJ
2026-10-02 06:07:34 +00:00

231 lines
12 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Etichete peste desen în capitolele vechi — inventar, nu reparație
Scanare din 02.10.2026, cerută după ce `gen/eticheta_libera.py` a scos 9
suprapuneri din `mbp_ansamblu` (dintre care două invizibile fără unealtă).
Întrebarea: cât de răspândită e clasa asta în capitolele 01-05 și anexe.
**Nu s-a reparat nimic.** Niciun fișier din `gen/` sau `summaries/` nu a fost
atins pentru raportul ăsta.
## Cum s-a scanat
`eticheta_libera` e opt-in, pe etichete numite — pentru o scanare oarbă am
rulat aceeași geometrie peste **toate** etichetele, pe fiecare sub-panou
(`<svg>` imbricat) separat, ca să nu compar coordonate din panouri diferite.
Marjă 4 px. Au fost scoase din numărătoare trei clase de fals pozitiv:
- **A — eticheta stă pe linia ei.** Convenția diferă de la un generator la
altul (unele pun textul deasupra liniei, altele dedesubt), așa că „a ei" se
decide prin cea mai apropiată etichetă de linia respectivă, nu printr-un
offset fix.
- **B — capătul propriei săgeți sau linii de legătură.** Prin construcție
coada săgeții pornește din text.
- Dreptunghiuri mai late de 60 px sau mai înalte de 220 px: fundaluri de
panou, nu corpuri de candelă.
Ce rămâne — bucata „C" — e ce raportez mai jos.
| Capitol | Atingeri | A: linia proprie | B: coada săgeții | **Rămase (C)** |
|---|---|---|---|---|
| `01_buy_doji` | 149 | 59 | 60 | **30** |
| `02_mp2` | 93 | 52 | 20 | **21** |
| `03_m2d` | 67 | 18 | 27 | **22** |
| `04_selectia` | 30 | 12 | 14 | **4** |
| `05_atmi` | 45 | 16 | 11 | **18** |
| `A1_risc` | 0 | 0 | 0 | **0** |
| `A2_contradictii` | 0 | 0 | 0 | **0** |
| `A3_intrarea` | 23 | 18 | 3 | **2** |
`A1` și `A2` n-au diagrame de tip grafic — zero, nu „curat prin verificare".
`audit_diagrams.py` trece curat pe toate opt: clasa asta e invizibilă pentru
el, exact ca la `mbp_ansamblu`. Auditul prinde text peste text; aici e text
peste linie, peste polilinie sau peste corp de candelă.
## Verificate vizual (screenshot citit)
12 diagrame: `01`/`stop`, `perechi_tf`, `directie`, `trend`, `transe`;
`02`/`crossing`, `pivoti`, `trigger`, `exemplu`; `03`/`directie`, `stop`;
`05`/`orizont`; `A3`/`doua_variante`. Restul e clasificat **doar din
geometrie** și e marcat ca atare.
---
## MINCINOASE — schimbă ce înțelege cititorul
Trei, toate din aceeași familie: **cifra e tăiată sau acoperită**, nu mutată.
### 1. `03_m2d` — `gen/strategii/m2d_directie.py`, ambele panouri
`minimul din care a pornit mișcarea 99.80` intră cu ultimele caractere sub
corpul unei candele verzi. Pe ecran se citește **„…mișcarea 99.8"** — zecimala
dispare. Nivelul ăsta e condiția care decide dacă setup-ul mai e valid
(„close 99.30, sub 99.80: direcția mare s-a răsucit"), deci e fix cifra pe
care cititorul o caută. Apare de două ori, o dată în fiecare panou.
### 2. `05_atmi` — `gen/strategii/atmi_orizont.py`
Eticheta `2 săptămâni` a barei portocalii e acoperită de marginea din stânga a
casetei de citat de lângă ea; se vede **„2 săptămân"**. E singura cifră care
dă contrastul diagramei (luni/ani față de două săptămâni), iar diagrama există
tocmai ca să arate contradicția.
### 3. `01_buy_doji` — `gen/strategii/buy_doji_stop.py`, panoul de jos
`stop pus la ochi: 49.70` și `stopul din regulă: 49.20` stau la 12 px unul sub
altul, fiecare cu linia lui întreruptă, iar linia portocalie a lui 49.70 trece
prin caseta etichetei lui 49.20. Cifrele sunt scrise, deci nu citești un preț
greșit — dar nu poți atribui corect cele două linii, iar toată diagrama e
despre diferența dintre ele. **La limită**: o pun aici pentru că obiectul
diagramei e chiar distincția asta.
---
## DOAR URÂTE — cosmetice, pot aștepta
Restul de ~94. Se grupează în patru tipare; niciunul nu face să citești un
preț la înălțimea altuia.
**(a) Etichetă descriptivă peste un corp de candelă** — cel mai des. Textul
începe fix pe marginea unei candele, cu una-două litere peste ea; rămâne
lizibil pentru că fundalul candelei e la capătul rândului, nu sub el.
`01`: `ansamblu` (2), `directie`, `trend` (3), `fereastra` (2), `stop`,
`iesire`, `aplus`, `perechi_tf` · `02`: `perechi_tf`, `crossing`, `trigger`,
`aplus` (3), `exemplu` (2), `pivoti_excel` (3) · `03`: `directie`, `trigger`
(2), `iesire` (2), `exemplu` · `05`: `ansamblu`, `trigger` (3), `risc`,
`exemplu` · `A3`: `cazul_lui`.
**(b) Două niveluri prea apropiate, fiecare cu linia lui** — eticheta de jos
atinge linia de sus. `01`/`perechi_tf` (`weekly 105.20`, `retest: high doji`),
`02`/`crossing` (`crossing: 61.70 → 62.20`, `pivot weekly (cel MARE) 62.00`),
`02`/`perechi_tf`, `02`/`bottom`, `03`/`stop` (`512.87` față de `512.02`, la
9 px), `03`/`directie` (`close-ul candelei de semnal 100.60`),
`04`/`exemplu`, `A3`/`doua_variante` (`B: 1/3 = 101.55` / `B: 1/2 = 101.25`).
Verificate: toate rămân lizibile, pentru că prețul e scris în etichetă.
**(c) Linie de legătură lungă care traversează un alt text** — săgeți ce
pleacă din subsolul diagramei spre o bară din mijloc. `01`/`stop` (4),
`01`/`transe` (5), `01`/`directie` (2), `02`/`stop`, `03`/`directie` (4),
`03`/`secventa`, `03`/`iesire` (4), `04`/`ansamblu`, `05`/`perechi_tf` (2),
`05`/`trigger`.
**(d) Text peste linii de structură ale unei diagrame care nu e grafic de
preț** — coloane, axe de timp, chenare. `05`/`orizont` (9 din cele 18 ale
capitolului, în afară de „2 săptămâni"), `04`/`univers` (2),
`02`/`pivoti_excel`.
---
## Verdict
**Merită un lot, dar mic — cele trei mincinoase, nu cele 94.**
Clasa asta e răspândită (97 de atingeri reale în 6 capitole), dar aproape tot
e zgomot vizual pe care cititorul îl traversează fără să piardă informație.
Ce costă e doar cifra tăiată: la `03_m2d`/`directie` și `05_atmi`/`orizont`
numărul nu se poate citi întreg, iar la `01_buy_doji`/`stop` cele două stopuri
nu se pot atribui liniilor lor. Trei generatoare, trei mutări de etichetă —
o sesiune scurtă, nu un lot.
Pentru restul, lucrul util nu e repararea, ci **importul lui
`eticheta_libera` în generatoarele atinse data viitoare oricum**, pe
etichetele care poartă cifre. Așa clasa nu mai crește, fără să plătim acum
pentru 94 de suprapuneri inofensive.
Nota de scanare: `08_mbp` (comis) mai are două atingeri din tiparul (b), în
`mbp_stop` (`banda inferioară 623.90` la 9 px sub linia intrării) și
`mbp_exemplu` (`intrare short 660.00` la 2 px de `bandă superioară`). Ambele
lizibile; le las aici ca să nu se piardă.
---
## Adaugat pe 02.10, de la corectorul lui 07_mdsrt
Doua defecte vechi, vazute dar neatinse (nu erau pe lista lui):
- `mdsrt_short.svg` — titlul „Oglinda pe short (serie construita prin
rasturnarea exemplului long)" e traversat de coada sagetii „piciorul 1".
- `mdsrt_aplus`, panoul NU — `cds_n[18].l` e 94.50, dar nivelul se cheama
„primul low 94.60". E close-ul, nu low-ul.
---
## Filtrul orb: cifră peste un corp plin (scanare 02.10.2026)
Cerut după trierea vizuală a capitolelor 02 / 04 / A3, care a dat o singură
cauză fizică pentru suprapunerile care chiar schimbă ce citești: textul stă
peste un `<rect>` **plin**, iar caracterele nu se încalecă — dispar. Peste o
linie subțire (nivel, fitil, coadă de săgeată, chenar) textul rămâne lizibil,
oricât de urât arată. De aceea tiparele (a)-(d) de mai sus nu merită un lot,
dar clasa asta merită o listă.
`gen/eticheta_libera.py` are acum `cifre_ascunse(svg)`, care nu e opt-in pe
etichete numite — fiind îngustă, rulează oarbă:
.venv/bin/python gen/eticheta_libera.py gen/strategii/*.svg \
summaries/06_MODUL_5/*.md
Ce raportează: o etichetă **care conține o cifră**, peste un dreptunghi plin,
în unul din două cazuri — (1) **aceeași culoare** (verde pe verde: caracterul
dispare oricare ar fi ordinea de desenare), sau (2) **desenat peste** text
(corpul e pictat după etichetă, deci o acoperă indiferent de culoare — cazul
`m2d_directie` din lista „mincinoase"). Pragurile: distanță RGB sub 60,
suprapunere de cel puțin 4 px pe orizontală și 4 px pe verticală, opacitatea
dreptunghiului cel puțin 0.5 (zonele palide nu acoperă nimic). Transparența se
amestecă peste alb înainte de comparație, deci barele de volum la 0.55 nu se
aprind. Bucata „dispare ~" e aproximativă (lățime uniformă pe caracter), dar
spune dacă gaura cade pe cifră sau pe o literă.
Calibrare: lățimea din `_bbox` (CW = 6.2) e potrivită pentru bold și prea
largă pentru restul; la o etichetă lungă nebold coada goală de ~30 px prindea
candela de alături (`buy_doji_labu`, `mp2_aplus` — ambele verificate pe ecran,
false pozitive). Filtrul folosește CW = 5.4 pentru textul nebold. Pe versiunea
de dinaintea reparațiilor de azi, `mp2_exemplu` („intrare 577.00", 0 păstrat de
corpul verde) și `m2d_directie` (ambele panouri) sunt prinse — cele două
defecte reale confirmate vizual, deci filtrul nu e doar strâmt, e și calibrat.
### Rezultat: 17 etichete, în 13 diagrame
**Gaura cade pe cifră (9):**
```
m2d_iesire.svg: 'intrare 99.60' — dispare ~'60' (12 px, desenat peste)
mdsrt_exemplu.svg: 'TP1 624.70 = 1:1 (construit)' — dispare ~'1 (' (9 px, desenat peste)
mp2_short.svg: '128.97: crossing bear' — dispare ~'8.' (9 px, desenat peste)
02_patternuri_complexe_partea_a_treia.md #3: 'SL 29.40' — dispare ~'9.4' (9 px, aceeași culoare)
02_patternuri_complexe_partea_a_treia.md #4: 'target 62.00 = 65.00 − 3.00' — dispare ~'62.' (9 px, desenat peste)
02_patternuri_complexe_partea_a_treia.md #5: 'target 60.50 = 65.00 − 4.50' — dispare ~'0.5' (9 px, desenat peste)
02_patternuri_complexe_partea_a_treia.md #8: 'intrare short 89.00' — dispare ~' 8' (9 px, desenat peste)
02_patternuri_complexe_partea_a_treia.md #8: 'target 60.00 = 90.00 − 30.00' — dispare ~' 90' (9 px, desenat peste)
04_strategia_7_micis.md #6: 'intri cu 1/3 și rămâi cu 1/3' — dispare ~'1/3' (10 px, aceeași culoare)
```
**Gaura cade pe o literă (8) — eticheta are cifre, dar ce dispare e text:**
```
hammer_mbt10_bh_stop.svg: 'intrare 63.35 (close-ul confirmării)' — dispare ~'irm' (13 px, desenat peste)
hammer_mbt10_mbt_close.svg: 'la 55.30, în timpul zilei, semnalul' — dispare ~'sem' (13 px, aceeași culoare)
mdsrt_exemplu.svg: 'hammer închide 622.60, înapoi peste pivot' — dispare ~'oi' (9 px, aceeași culoare)
mdsrt_exemplu.svg: 'intri aici: close peste high-ul hammer-ului (622.70)' — dispare ~'r-' (9 px, aceeași culoare)
02_patternuri_complexe_partea_a_treia.md #5: 'suport (neckline) 65.00' — dispare ~'in' (9 px, desenat peste)
02_patternuri_complexe_partea_a_treia.md #7: 'limita de 50% 100.00' — dispare ~'ta ' (9 px, desenat peste)
03_patternuri_complexe_partea_a_patra.md #8: 'TP2 42.40 = batul steagului = 6.2R' — dispare ~' = ' (9 px, desenat peste)
05_strategia_8_dhrt.md #10: 'vârful consolidării 53.70 = locul crimei' — dispare ~'ons' (12 px, desenat peste)
```
Verificate pe ecran, cu zoom 4x: 6 din 17, luate din ambele categorii
(`m2d_iesire` „99.6|", `mdsrt_exemplu` „= 1:_ (construit)", `mp2_short` cu
„128" sub corpul roșu, `hammer_mbt10_bh_stop` „confirm_rii",
`02_patternuri…` „neckl_ne", `05_strategia_8_dhrt` „c_nsolidării"). Toate
șase, reale. Nu am reparat nimic și n-am atins capitolele 06, 09, 10, care
sunt în lucru la alt agent.
Două observații pentru cine ia lista:
- Jumătate din cazuri înghit o literă, nu o cifră: filtrul cere ca eticheta să
**conțină** o cifră, nu ca gaura să cadă pe ea. Dacă lotul trebuie scurtat,
primele 9 sunt cele care costă.
- Nouă din cele 17 sunt în `summaries/06_MODUL_5/` — adică în
diagramele de modul, nu în cele de strategie. Acolo nu s-a făcut niciodată
o trecere de etichete.