Files
atm-curs-dl/STYLE.md
Claude Agent 63c01b5ee9 STYLE: sablonul aprobat e 01_buy_doji; sursele mutate in fise/
Userul a aprobat formatul si a cerut ca celelalte capitole de strategie
sa fie reconstruite dupa el. STYLE.md primeste contractul:
corespondenta de preturi intre timeframe-uri (descompunere reala, casetu
de lupa, ghidaje, conector pentru nivelul comun), fiecare termen tehnic
explicat SI exemplificat, definitiile ancorate de un nivel, si blocul
"Surse" scos din capitol in fise/<capitol>_surse.md.

Plus lectiile de assert din verificare: cel tautologic nu poate pica,
preturile din etichete trebuie sa fie niveluri desenate, exceptia de
nivel comun are nevoie de assert propriu, liniile nu cad pe cadru, si
aceeasi regula numerica in tot capitolul.

Sursele lui 01_buy_doji sunt recuperate in fise/01_buy_doji_surse.md,
cu link din capitol.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01ThN7ixZrowca8aTGrK1MUJ
2026-09-20 12:26:20 +00:00

436 lines
26 KiB
Markdown

# Stil pentru sumarizări (summaries/) — cerințe confirmate cu userul
Referință obligatorie înainte de a scrie/genera orice fișier nou în
`summaries/`. Exemplul de referință: `summaries/05_MODUL_4/01_patternuri_complexe_partea_a_doua.md`.
## ȘABLONUL: `17_STRATEGII/01_buy_doji.md` (aprobat de user, 20.09.2026)
**Capitolul ăla e contractul. Citește-l înainte să scrii altul** — regulile
de mai jos sunt extrase din el, dar textul lui e arbitrul când ceva nu e
acoperit aici. Ce urmează bate orice regulă de mai jos care o contrazice.
### Ce s-a adăugat pe 20.09.2026, după a doua citire a userului
**1. Diagramele cu două timeframe-uri trebuie să aibă corespondență de
prețuri.** Cererea lui, cuvânt cu cuvânt: „să îmi dau seama care bucată din
graficul weekly este reprezentată de graficul daily — adică care candelă
weekly e reprezentată de candelele din graficul daily, cu aceleași linii de
preț". Concret, cum e rezolvat în `buy_doji_perechi_tf` și
`buy_doji_directie`:
- Graficul TF-ului mic e **descompunerea reală** a candelelor mari, nu o
serie care vine după ele: o candelă mare = `k` candele mici, cu open,
close, `max(high)` și `min(low)` care coincid — verificat bară cu bară
prin assert. `k` = 5 zile pe săptămână, 4 săptămâni pe lună, 7 bare de
60 de minute pe zi (ședința e de 6,5 ore, ultima bară e de jumătate de
oră — spune asta pe desen).
- Sursa de adevăr e **seria fină**; candelele mari se calculează din ea prin
agregare. Invers, corespondența rămâne în urmă la prima modificare.
- Pe desen: **casetă punctată** peste exact candelele mărite, **ghidaje**
de la colțurile ei la colțurile cadrului mic, și nivelul-cheie desenat pe
**ambele panouri, cu același număr de ambele părți**.
- Nivelul comun **nu se poate alinia** la aceeași înălțime — ghidajele
fixează deja două prețuri, iar scările au pante diferite. E o lupă, nu o
eroare. Leagă-l cu un **conector** subțire între cele două capete, cu
numărul scris o singură dată, în cot.
- Dacă o etichetă numește un nivel de referință, **nivelul trebuie să se
vadă undeva**. Dacă nu încape pe panoul mic fără să strici scara,
marcheaz-l pe panoul mare și trimite acolo din etichetă („bifa din
stânga"). Nivelul trăiește pe TF-ul mare, declanșatorul pe cel mic.
**2. Fiecare termen tehnic, explicat ȘI exemplificat.** Userul a reclamat
„ai folosit «bull reversal» fără să îl explici sau să îl exemplifici".
Definiție în mini-glosar + explicație inline la prima folosire + un exemplu
concret, de preferință unul care se vede pe o diagramă din capitol.
**3. Definițiile se ancorează de un nivel, nu se lasă absolute.** „Pullback
= nu mai face minim nou" e fals: orice pullback care coboară face minime
tot mai joase. Corect: „nu rupe minimul din care a pornit mișcarea". O
definiție neancorată e neverificabilă pentru un începător, deci greșită.
**4. Blocul „Surse" NU stă în capitol.** Userul l-a respins. Trimiterile
merg în `fise/<NN>_<nume>_surse.md`, cu un link de o linie în paragraful
„Cum citești capitolul", de sub etichete. În corpul capitolului rămân doar
linkuri markdown către alte capitole din `summaries/`.
### Regulile de la v2, care rămân în picioare
### Structura: trei niveluri, de sus în jos
1. **Nivelul 1 — din avion.** O pagină. Ce e strategia, o diagramă mare cu
tot trade-ul adnotat, fraza de decizie, mini-glosarul termenilor. Cine
citește doar atât trebuie să știe deja ce caută pe ecran.
2. **Nivelul 2 — procedura mecanică.** Pașii, în ordinea în care îi faci.
Fiecare pas: o propoziție de acțiune, **o diagramă**, maximum ~300 de
cuvinte, și „Treci mai departe doar dacă…". Aici omul nu alege nimic — dă
din mână, mecanic.
3. **Nivelul 3 — rafinări.** Confirmările care fac un setup A+, perechile de
TF, tranșele, exemplul real, transferul pe prop/BVB, contradicțiile.
Începe cu o linie: „asta citești după 20 de trade-uri făcute mecanic".
### Limbaj
- **Explică fiecare termen tehnic la prima folosire, inline, într-o
propoziție.** „ieșire pe trail", „retest", „1R", „tranșe", „doji" — nimic
nu se presupune știut. Dacă termenul are formă pe grafic, desenează-l.
- Propoziții normale, nu telegrafice. Fără stil abrupt de notiță.
- Cifrele se plimbă cu o diagramă. Un pas care e doar text cu numere e un pas
prost scris.
### Referințe
- **Zero trimiteri `fișier:linie` în corpul textului.** Ele îngreunează
cititul. Merg toate în `fise/<capitol>_surse.md`, grupate pe pas (vezi
punctul 4 de mai sus — blocul „Surse" din capitol a fost respins). În
text, cel mult un link markdown către un alt capitol din `summaries/`.
### Diagrame — „ca la proști"
- Fiecare diagramă de preț arată **săgeți cu text**: „aici intri", „aici pui
stopul — sub el ideea e moartă", „aici prima țintă".
- **Zonă dreptunghiulară de evidențiere** peste regiunea despre care e
vorba (userului i-a plăcut explicit cea de la pasul 7). Folosește-o.
- Fiecare săgeată spune și **de ce**, nu doar ce.
- **Tranzacția în oglindă (short) are diagrama ei completă**, nu o
propoziție „e invers". Userul e vizual.
### Volum
- Mai puține tabele. Un tabel doar dacă compari 3+ lucruri pe aceleași
criterii. Altfel: listă sau paragraf.
- Mai scurt. Userul: „te lungesti foarte mult", „daca imi dai extrem de
multe informatii nu stiu care sunt relevante". Ce nu intră în procedura
mecanică merge la nivelul 3 sau se taie.
- Exemplele concrete și setup-urile rămân — alea îi plac. Abstracțiile pleacă.
## FORMAT TUTORIAL pentru capitolele de strategie (cerut de user, 19.09.2026)
Userul a citit `17_STRATEGII/A3_intrarea.md` și a spus: conținutul îi place,
dar e **greoi și greu de urmărit**. Cererea, cuvânt cu cuvânt: „trebuie să
aibă o abordare 1-2-3 de sus în jos explicat ca și cum ar fi un tutorial".
Se aplică tuturor capitolelor din `17_STRATEGII/`.
**Ce se schimbă față de formatul Nivel 0/1/2:**
1. **Pașii numerotați sunt coloana vertebrală, nu nivelurile.** Documentul
curge „Pasul 1 → Pasul 2 → Pasul 3", în ordinea în care le faci tu la
ecran: ce cauți, cum confirmi, unde intri, unde e stopul, unde ieși.
Nivelurile 0/1/2 rămân ca adâncime **în interiorul** unui pas („dacă vrei
nuanța"), nu ca structură a documentului.
2. **Fiecare pas începe cu o propoziție de acțiune**, la persoana a doua:
„Deschizi graficul weekly și cauți…". Nu „Se identifică…".
3. **Fiecare pas are diagrama lui.** Nu o diagramă la trei pași. Dacă un pas
n-are ce să arate vizual, probabil nu e un pas separat.
4. **Diagrama stă lângă textul ei**, nu într-o galerie la final.
5. **La finalul fiecărui pas: o linie „Treci mai departe doar dacă…"** —
condiția care te lasă la pasul următor. Asta e ce face din listă o
procedură.
6. **Tabelele: maximum 4 coloane, și niciodată un tabel de 2 coloane care ar
fi putut fi o listă.** Userul a semnalat explicit tabelele de 2 coloane ca
fiind greu de citit. Un tabel e pentru comparat 3+ lucruri pe aceleași
criterii; altfel scrie listă sau paragraf.
7. **Blocul de deschidere e scurt:** ce face strategia, pe ce TF, cât de des
dă semnal, și un link către pasul 1. Lista de surse se mută la **finalul**
documentului — acum e un zid de linkuri chiar sub titlu, înainte de orice
conținut.
**Ce NU se schimbă:** citatele exacte cu `[sic]`, trimiterile la
`fișier:linie`, marcarea deducțiilor, contradicțiile lăsate nerezolvate cu
ambele variante scrise.
**Completările proprii** (decizie a userului, 19.09.2026): unde materialul
nu spune, **completezi** prin corelație cu restul cursului, dar într-un bloc
marcat vizibil — începe cu „**Completare proprie:**" și spune pe ce te
sprijini. Userul preferă un document utilizabil cap-coadă cu completări
marcate, în locul unuia cu găuri în mijlocul procedurii. Ce e al lui rămâne
al lui; ce e al tău se vede de la distanță.
## Structură și ton
- Grupat pe module (`summaries/<NN>_<MODUL>/<NN>_<titlu>.md`), în română,
dar termenii de trading rămân în engleză (relative strength, trend line,
doji, neckline, short covering etc.) — nu se traduc.
- Fără emoji, oriunde.
- Concis, nu verbos. Fără liste lungi de "concepte cheie" (nu e un rezumat
de citit cursul, e un material de referință rapidă).
- Focus pe utilitate practică: exemple concrete, psihologia din spatele
mișcărilor de preț, când/de ce intri într-un trade, la ce folosește
fiecare indicator/pattern — nu doar cum arată sau cum se numește.
## Aplicabilitate practică obligatorie — nu te opri la mecanism
Găsit ca gaură reală: `06_divergente.md` explica mecanismul (de ce apare
divergența) foarte bine, dar userul tot nu înțelegea de ce îl interesează,
ce trebuie să facă, când să intre, la ce TP/SL — fișierul spunea "ai nevoie
de trigger și de un plan, subiecte separate" și se oprea acolo. Nu e
suficient.
Pentru orice concept care poate deveni parte dintr-un trade (pattern,
indicator, set-up, divergență, catalizator economic) — pe lângă mecanism —
răspunde explicit, cu diagramă și cifre, la:
1. **De ce urmărești asta** — ce decizie te ajută să iei, concret (nu
"e important să știi", ci "te ajută să X, ca să nu Y").
2. **Ce faci când îl vezi** — pasul practic imediat următor (aștepți
confirmare? cauți context? verifici altceva?).
3. **Ce înseamnă confirmare/trigger valid, cu DA/NU** — dacă conceptul e
un set-up (nu un semnal direct de intrare), arată explicit un trigger
valid și unul invalid/prea devreme, cu cifre.
4. **Un exemplu complet, de la identificare la ieșire din trade** — nu doar
"am văzut X", ci intrare (preț exact), stop-loss (preț exact, motivat —
ce nivel invalidează ideea), take-profit (preț exact, motivat — de unde
vine ținta), cu diagramă care arată tot trade-ul, nu doar set-up-ul
izolat. Dacă transcrierea nu dă exact aceste cifre, construiește un
exemplu plauzibil pe scara reală deja stabilită în fișier (ex: continuă
graficul unui exemplu real deja folosit), marcat explicit ca fiind
completarea ta.
Nu amâna asta la "altă lecție" dacă tu (Claude) poți completa cu propria
cunoaștere de trading — exact genul de completare pe care userul l-a cerut
de la început ("nu mă interesează doar mecanic, vreau și de ce și cum").
## Direcție: long și short
- Acolo unde patternul/conceptul are ambele variante (ex: Head & Shoulders
normal = reversal bearish/short, Inverted = reversal bullish/long; orice
indicator sau strategie simetrică), include diagramă + exemplu pentru
**amândouă direcțiile**, nu doar varianta discutată explicit în lecție.
Nu presupune că mecanismul opus e "evident prin simetrie" — arată-l.
## Gotchas practice / sfaturi de mentor
- O secțiune scurtă, doar cele **2-4 cele mai importante** capcane sau
sfaturi practice legate direct de exemplul/lecția respectivă — nu o listă
exhaustivă de "best practices" generice. Genul de lucru pe care un mentor
îl spune o dată, pe scurt, pentru că a văzut pe cineva pierdut bani exact
așa ("nu intra pe pattern neconfirmat", "volumul mic la breakout = fals
breakout", "nu muta stop-loss-ul mai aproape după ce ai intrat").
Marchează-le tot ca și completare a mea, dacă nu vin explicit din curs.
## Termeni noi — definește-i, nu doar folosește-i
- Orice termen tehnic folosit într-o afirmație (ex: "retest-ul neckline-ului",
"breakout confirmat cu volum", "fals breakout") trebuie definit prima dată
când apare — pe scurt, nu verbos — **și** ilustrat cu propria lui
mini-diagramă cu cifre (nivel de preț concret), nu doar explicat în cuvinte.
Nu presupune că un termen anterior introdus într-un context (ex: "breakout"
în diagrama principală) acoperă automat un termen nou înrudit (ex: "retest"
al aceluiași nivel) — dacă e un concept diferit, are nevoie de diagrama lui.
- Regulă practică: dacă o propoziție folosește un cuvânt de jargon fără să-l
fi explicat deja în acel fișier, oprește-te și adaugă (a) o definiție de-o
linie, (b) o diagramă mică cu niveluri de preț reale care arată exact ce
înseamnă.
## Explicațiile suplimentare (dincolo de ce spune transcrierea)
- Trebuie să fie **mecanisme concrete**, nu afirmații reformulate/metaforice.
Testul: dacă cineva întreabă "de ce?" despre propria propoziție, răspunsul
nu trebuie să fie o repetare a aceleiași afirmații cu alte cuvinte
("vânzătorii domină → preț mai jos" NU e o explicație dacă nu spui de ce
mecanic mai multă vânzare mută prețul).
Exemplul bun din fișierul de referință: mecanismul de bid/ask (cine
trebuie să accepte ce preț ca să se execute o tranzacție ACUM) explicat
ÎNAINTE de a-l aplica pe fiecare fază a patternului, cu o diagramă proprie.
- Notă explicită la finalul fiecărui fișier ce anume e completare a mea
(dincolo de transcriere) vs. ce vine strict din curs.
- **Nu titra o secțiune "de ce X înseamnă Y"** ca și cum X=Y ar fi fost deja
afirmat mai devreme, dacă nu a fost. Dacă mecanismul e prima dată când
apare ideea, spune asta explicit ("mai jos folosesc ideea X de mai multe
ori — o explic o singură dată, aici, înainte de a o aplica"), nu sări
direct la "de ce X" ca și cum ar fi un follow-up la ceva spus anterior.
## Diagrame de candele: generează-le, nu le desena
`svg_candles.py` construiește diagramele de candele din prețuri (OHLC +
niveluri), cu o singură scară px/unitate pe tot desenul. **Folosește-l pentru
orice diagramă cu candele sau cu entry/SL/TP** — nu scrie SVG de mână.
Motivul, găsit ca bug real în `01_MODUL_1/05_patternuri_candele.md`
(semnalat de user, 2026-09-12): o țintă de 2R desenată la 41 px/unitate în
sus și un stop la 75 px/unitate în jos — adică 2R arăta ca 1R. Trei
diagrame de trade aveau aceeași problemă, una de 8 ori. Plus o etichetă de
`open` pusă deasupra celei de `close` la un marubozu bull, deci axa de preț
inversată. Ochiul nu prinde asta; calculul da.
Generatoarele stau în `gen/` (ex. `gen/patternuri_candele.py`) și rescriu
fișierul `.md` întreg. Ca să corectezi un preț, schimbi cifra în generator
și rulezi din nou — nu edita SVG-ul rezultat.
Verificare automată de pus în orice pagină cu trade-uri: pentru fiecare
diagramă cu trei niveluri (SL / intrare / TP), raportul dintre distanțele în
preț trebuie să fie identic cu raportul dintre distanțele în pixeli.
## Cum trebuie să arate un grafic de preț (cerut de user, 2026-09-13)
Userul citește diagramele ca să vadă **trendul** și să facă analogie cu un
grafic real din TradingView. Candelele izolate, cu spații mari între ele, nu
arată ca un grafic și nu-i spun nimic despre trend. Deci:
**Orice diagramă care arată preț sau volum se desenează ca serie continuă:**
- **25-45 de candele**, lipite (`gap=15-18`, `body_w=9-10`), nu 3-6 candele
izolate. Pattern-ul trebuie să aibă context în stânga și în dreapta lui.
- **Open-ul fiecărei bare = close-ul barei anterioare.** Folosește
`from_closes(...)` (definești close-urile, deci controlezi exact structura)
sau `walk(...)`. Fără goluri artificiale între bare.
- **Panou de volum dedesubt** (`vol_h=70`), cu bare colorate pe direcția
candelei, de fiecare dată când textul vorbește despre volum.
- **Medie mobilă** (`mas=[MA(20, ...)]`) când textul vorbește despre trend
sau despre SMA — se calculează singură din close-uri.
- **Etichetele se ancorează pe candele** cu `marks=[Mark(i, ...)]`, nu cu
`tag` per candelă: la 30 de bare, etichetele per candelă se suprapun.
- `title="SIMBOL — timeframe"` sus, ca pe un chart real.
Stilul vechi (3-6 candele, `gap=92`) rămâne valabil **doar** pentru
definiții de pattern-uri de o candelă (ce e un marubozu, ce e un doji),
unde contează forma barei, nu trendul.
**Verificare obligatorie în generator:** după ce construiești seria, extrage
din ea nivelurile pe care le afirmi în text (`min(c.l for c in cds[a:b])`) și
pune `assert` că se potrivesc — ex. că al doilea picior chiar e mai jos decât
primul, că intrarea e egală cu close-ul ultimei bare, că R-ul din etichetă e
cel calculat. Ochiul nu prinde o structură care contrazice eticheta; calculul
da. (Găsit ca bug real de agenții de verificare, 13.09.2026: o intrare short
descrisă „sub low-ul barei de retest", desenată deasupra lui.)
**Assert-uri care chiar prind ceva** (lecții din verificarea lui
`01_buy_doji`, 20.09.2026):
1. **Un assert care compară un calcul cu el însuși nu poate pica și dă falsă
siguranță.** `zoom = aggregate(fine, k, n)`, apoi `assert zoom ==
aggregate(fine, k, n)` — inutil. Assert-ul util afirmă o **proprietate pe
care textul o pretinde**: peste câte candele mari se întinde pullback-ul,
în a câta cade doji-ul. Exact acolo se rupsese textul capitolului.
2. **Nicio etichetă nu poate numi un `\d+\.\d\d` care nu e un nivel desenat.**
Cel mai general tipar; jumătate din problemele găsite la verificare erau
un preț scris de mână care rămăsese în urmă când s-a schimbat seria.
3. **O etichetă de pe un panou nu poate conține prețul celuilalt panou** —
cu o excepție **explicită** pentru nivelurile comune, care trebuie să aibă
assert propriu că apar identic pe ambele. O scutire fără assert lasă
nivelul să dispară sau să apară cu alt număr.
4. **Numărul din textul unei zone == numărul de bare pe care le acoperă.**
5. **Liniile nu cad pe marginea cadrului.** Dacă stopul e `min(low)`, linia
lui se citește ca bordură, iar fitilul pare tăiat. Lasă aer (6 %) și pune
assert pe distanța în px.
6. **Aceeași regulă numerică în tot capitolul.** `directie` punea stopul cu
marja de 5 cenți, `perechi_tf` fix pe low — două reguli de stop în același
capitol, amândouă etichetate corect local. Compară între diagrame, nu doar
în interiorul uneia.
**Etichetele se leagă de liniile lor.** Când două niveluri sunt la câțiva px,
stivuirea etichetelor le rupe de linii și nu se mai vede care e care:
desenează leader lines.
## Diagrame (obligatorii, nu opționale — userul e vizual learner)
- **Orice paragraf "Exemplu real" cu cifre concrete are nevoie de propria
diagramă chiar acolo, lipită de text** — nu doar undeva mai jos în fișier,
sub alt heading, chiar dacă diagrama aia conține exact aceleași cifre.
Găsit ca bug real: `06_divergente.md` cita cifre reale (Tesla, -435.330 /
+4.620.702) într-un paragraf "Exemplu real", dar diagrama cu acele cifre
era plasată câteva secțiuni mai jos, sub un heading separat ("Histograma")
— cititorul nu avea ce să se uite exact unde citea cifrele. Regulă: mută
diagrama lângă text, nu invers (nu muta textul lângă diagramă dacă rupe
fluxul logic al secțiunii).
- Fiecare secțiune de explicație și fiecare exemplu concret are nevoie de
o diagramă vizuală, nu doar text.
- **Corelare 1-la-1, nu o diagramă la început + mult text după.** Dacă
textul descrie cum se schimbă ceva prin mai multe etape/momente (ex: "la
umărul stâng bara roșie e mare, la head e maximă, la umărul drept e mică"),
fiecare etapă are nevoie de **propria ei mini-diagramă**, lipită direct de
paragraful ei — nu o singură diagramă generică la început, urmată de
paragrafe lungi care doar descriu verbal schimbări pe care cititorul nu
le mai vede. Regula practică: dacă un paragraf zice "acum bara X e mai
mare/mică decât înainte", trebuie să existe o imagine chiar acolo care
arată exact asta, nu doar la începutul secțiunii.
- **Text: numește entitatea, nu culoarea.** Nu scrie "bara roșie"/"bara
verde" în text — scrie "vânzătorii"/"cumpărătorii" (entitatea reală).
Culoarea e un ajutor vizual în diagramă, nu vocabularul din proză; cere
cititorului să țină minte o mapare culoare→sens de fiecare dată, care e
frecare inutilă.
- **Diagrame cu orientare diferită de graficul de preț au nevoie de
locator.** Graficul principal de preț e vertical (prețul pe axa Y). O
diagramă order-flow (bare orizontale cumpărători/vânzători) e alt tip de
grafic, altă orientare — fără nimic care să le lege, cititorul nu poate
ști la ce punct de pe graficul de preț se referă bara. Soluție: lângă
fiecare mini-diagramă de tip bară, pune un mini-locator (o siluetă mică a
formei principale, cu un punct evidențiat unde ne aflăm), nu doar un titlu
text ("Umărul stâng").
- Diagramele de preț (pattern-uri, niveluri, entry/stop/target) trebuie să
aibă **niveluri de preț reale** pe ele (numere, nu doar etichete generice
ca "neckline"/"head" fără cifre) și să fie **desenate la scară corectă**:
dacă textul zice "aceeași distanță", distanța pe desen trebuie să fie
vizual egală, nu aproximată. Verifică geometric (calculează y-coordonatele
din prețuri reale) înainte de a considera o diagramă gata.
- **Include contextul de trend anterior**, nu doar pattern-ul izolat. Dacă
textul zice "prețul trece dintr-un trend descendent într-unul ascendent",
diagrama trebuie să arate acel trend descendent înainte de pattern — nu
să înceapă direct cu umărul stâng, ca și cum ar apărea din senin. Prepend
un segment clar de trend (2-3 puncte, pantă vizibilă) înainte de primul
punct al pattern-ului, etichetat ("trend descendent anterior" / "trend
ascendent anterior").
- Nu duplica aproape-identic o diagramă structurală și una cu exemplu numeric
— dacă exemplul concret poate fi desenat direct pe diagrama principală
(cu prețuri reale în loc de etichete generice), unește-le într-una singură.
- SVG inline în markdown, **fără linii goale în interiorul blocului
`<svg>...</svg>`** — python-markdown rupe blocul HTML în paragrafe la
fiecare linie goală, iar browserul aruncă restul elementelor. Un rând gol
⇒ diagramă stricată.
- Dacă mai multe elemente text/bare riscă să se suprapună la coordonate
fixe (ex. bare de volum alăturate), preferă un tabel HTML normal sub SVG
pentru text/legendă (se aliniază singur) față de text poziționat absolut
în SVG lângă elemente înghesuite.
- Verifică vizual, nu doar cita codul SVG: pornește un `python3 -m
http.server` local pe `summaries/`, navighează cu Playwright, și dă
screenshot pe fiecare `<svg>` (`page.locator('svg').nth(i).screenshot()`)
înainte de a considera o diagramă gata. Erorile de layout (text tăiat de
viewBox, elemente suprapuse) nu se văd doar citind codul.
- **Nu sări verificarea vizuală pentru că diagrama "pare simplă".** Găsit ca
bug real: un agent a considerat un SVG cu linii/cercuri/text "suficient de
simplu" și a sărit peste Playwright — două etichete se suprapuneau exact
acolo, ilizibil. Complexitatea codului SVG nu prezice dacă textul se
suprapune la randare; verifică mereu, fără excepție.
## Confirmare vs. capcană — arată DA și NU, nu doar DA
- Pentru orice concept unde există o versiune validă și una înșelătoare care
arată aproape identic la prima vedere (breakout real vs. fals breakout,
retest valid vs. eșec, divergență reală vs. zgomot) — arată **ambele**,
explicit etichetate "DA" / "NU", fiecare cu cifre proprii și diagramă
proprie, una lângă alta sau imediat succesive. Nu descrie doar cazul bun.
- Nu duplica aceeași diagramă în două locuri ale fișierului dacă un concept
revine mai târziu (ex: gotchas) — referă înapoi la perechea DA/NU deja
arătată, cu cifrele relevante repetate în text, fără să redesenezi SVG-ul.
## Exemple practice — minim 2-3, nu unul singur
- Un singur exemplu numeric (ex: doar EURUSD long) nu e suficient. Fiecare
concept cu aplicație practică are nevoie de **2-3 exemple concrete cu
cifre**, fiecare cu propria diagramă. Variază: alt instrument/pereche,
altă direcție (dacă nu e deja acoperită de secțiunea long/short), sau un
caz de eșec/invalidare (arată și cum arată numeric când NU funcționează,
nu doar cazul de manual perfect).
- "Cu capturi de screenshot sau construite" — pipeline-ul păstrează doar
audio→text, deci din curs **nu avem capturi**; toate exemplele de acolo
sunt **diagrame construite** (SVG, la scară, cu cifre reale). Nu inventa
și nu promite screenshot-uri care nu există.
**Excepție, de la 18.09.2026:** userul poate primi direct de la autor
capturi din platforma lui (WhatsApp etc.). Alea se pun în
`docs/strategie/`, se recoltează într-un `harvest/<data>-autor.md` scris
de sesiunea principală (un agent nu vede pozele), și de acolo intră în
documente. Reguli pentru ele:
- **Nivelurile citite din captură sunt reale, deci diagrama poate purta
ticker real** — vezi regula de ticker de mai sus. Legenda spune la
fiecare diagramă ce e al lui (nivelurile, citirea) și ce e construit de
tine (structura barelor dintre niveluri, când captura nu e lizibilă
bară cu bară).
- **Ce nu se poate citi din captură nu se scrie ca regulă.** Dacă autorul
afirmă ceva ce imaginea nu arată (ce indicator calculează o bandă, unde
a intrat exact), se trece la „rămâne neconfirmat", cu motivul. Vezi
`05_volum`, secțiunea 10, ca model.
- **Verifică aritmetica în generator**, cu assert, ca la orice diagramă:
dacă scrii „194 de puncte = 6R", cifrele alea ies din serie, nu din cap.
## Referințe
- Secțiune finală cu 2-4 link-uri externe către cele mai bune explicații
găsite (WebSearch — link-uri reale, verificate, niciodată ghicite).
Preferă surse educaționale de brokeri/platforme cunoscute (IG, OANDA,
Investopedia etc.) în locul unor bloguri necunoscute. Acoperă ambele
direcții (long/short) dacă e cazul, ca și diagramele.
## Pagina (rendering)
- `render_html.py` convertește fiecare `.md` în `.html` mobil-friendly
(viewport meta, font 18px, lățime max 720px) — rulează-l după orice
modificare de conținut, altfel pagina servită e veche.
- Servit prin `tailscale serve` pe `/atm` (dosarul `summaries/` întreg,
inclusiv `index.html` cu linkuri către toate paginile).