SPEC DIAGRAMĂ — buy_doji_trend ============================== tip: PRET, două panouri alăturate (sau stivuite pe mobil) destinație: summaries/17_STRATEGII/01_buy_doji.md, Pasul 3, după doji_forma cheie markdown: titlu SVG: „Trendul dinaintea dojiului: 9 candele vs. 3 candele — exemplu construit" stil: candele lipite (gap 15-18, body_w 9-10), fără volum; open = close anterior; adnotări „ca la proști": zone dreptunghiulare + săgeți cu text (CE + DE CE). fitile implicite 0.15 peste/sub corp, cu excepțiile de mai jos. CE TREBUIE SĂ DEMONSTREZE ------------------------- Același doji (h 50.10 / l 49.25) și aceeași confirmare (close 50.40), după două trenduri diferite. Stânga = ideal (9 candele). Dreapta = acceptat, dar semnal mai slab (3 candele după un range) — și e cazul pe care scannerul cu „Since Bear ≥ 8" nu-l găsește. PANOUL STÂNGA — 12 bare ----------------------- open[0] = 55.50; close-uri 0-9: 55.00, 54.30, 54.60, 53.60, 52.90, 53.10, 52.00, 51.20, 50.60, 49.65 (barele 1-9 = trendul de 9 candele) 10 doji (49.65, 50.10, 49.25, 49.60) 11 confirmare (49.60, 50.55, 49.45, 50.40) Zone(1..9) verde, etichetă „9 candele de scădere — ideal"; numerele 1..9 sub bare; săgeată pe doji: „doji la capătul scăderii / vânzătorii s-au terminat". Mark(11,"confirmare 50.40"). Text sub panou: „DA — ideal (8-10 candele)". PANOUL DREAPTA — 13 bare ------------------------ open[0] = 51.40; close-uri 0-7 (range): 51.70, 51.20, 51.60, 51.10, 51.50, 51.30, 51.70, 51.40; apoi 8: 50.90, 9: 50.30, 10: 49.65 (3 candele în jos) 11 doji (49.65, 50.10, 49.25, 49.60) 12 confirmare (49.60, 50.55, 49.45, 50.40) Zone(8..10) portocalie, etichetă „doar 3 candele — merge, dar mai slab"; numerele 1..3 sub bare; săgeată pe range (bara 3): „înainte: preț pe loc, / nu scădere — de aceea / semnalul e mai slab". Mark(11,"doji"), Mark(12,"confirmare 50.40"). Text sub panou: „ACCEPTAT, semnal mai slab · scannerul cu Since Bear ≥ 8 nu-l vede". ASSERT-URI ---------- 1. open[i] == close[i-1]; h/l cuprind o/c, pe ambele panouri. 2. Doji identic pe ambele (o,h,l,c) și abs(o-c) <= 0.10*(h-l). 3. Stânga: close[9] < close[0] - 5 și close[9] == min(close[0:10]); cel puțin 6 din barele 1..9 închid sub close-ul barei precedente. 4. Dreapta: max(close[0:8]) - min(close[0:8]) <= 0.60 (range); close[8] > close[9] > close[10] (exact 3 candele în jos). 5. Confirmarea închide peste 50.10 pe ambele. NOTĂ DE RANDARE --------------- Extra-urile desenate de mână (numere, titlu) folosesc `ch._render()`, nu `ch.render()`: al doilea restaurează top/left după desen, deci `_y`/`_cx` ar da coordonate deplasate cu offset-ul pe care Chart îl pune pentru titlu și pentru etichetele zonelor. Titlul panoului de sus e desenat de mână din același motiv (titlul din Chart cade exact peste eticheta zonei). SURSA ----- - 8-10 candele ideal; 2-3 candele au funcționat, semnal mai slab: summaries/03_MODUL_2/13_strategia_3_byh.md:185-187, 315-318. - Scannerul cu Since Bear ≥ 8 pierde trendurile scurte: summaries/09_QA/28_2025-05-27.md:144-149; Since Bear numără de la sell momentum, nu candele descrescătoare: :43-46. - Seria e CONSTRUITĂ.