SPEC DIAGRAMĂ — buy_doji_perechi_tf
====================================
tip:            PRET (trei rânduri, câte două grafice pe rând)
destinație:     summaries/17_STRATEGII/01_buy_doji.md, Pasul 2 („Alegi perechea…")
cheie markdown: <!-- DIAGRAMA: perechi_tf -->
generator:      gen/strategii/buy_doji_perechi_tf.py (de scris de agentul de diagrame)
titlu SVG:      „Aceeași regulă pe trei perechi — exemplu construit (fără ticker)"
stil:           STYLE.md §„Cum trebuie să arate un grafic de preț": candele lipite
                (gap 15-18, body_w 9-10), fără volum, open = close-ul precedentului.
                Un singur SVG, 3 rânduri stivuite vertical (lățime 720, mobil).
                Pe fiecare rând: stânga = TF mare (11 candele), dreapta = TF mic
                (15 candele). Scară proprie pe fiecare grafic, dar UNA singură pe
                tot graficul (px/unitate constant în interiorul lui).

CE TREBUIE SĂ DEMONSTREZE
-------------------------
1. Regula e identică pe toate trei perechile: TF mare dă buy doji confirmat
   (direcția: long permis), TF mic face pullback de 8 candele până la high-ul
   dojiului mare, face un doji acolo, confirmă, intri.
2. Ce se schimbă când cobori: stopul pe TF mic e de 4-5 ori mai mic decât
   stopul pe TF mare pentru același setup; „8 candele" înseamnă alt timp.
3. Săgeată/paranteză „zoom" de la ultima candelă a graficului mare spre
   graficul mic: graficul mic începe după confirmarea de pe TF mare.

SERIA — rândul A (weekly → daily), f = 1.0
------------------------------------------
TF mare (weekly), (open, high, low, close), index 0-10:
 0 (122.0,122.6,119.4,120.0)   1 (120.0,120.5,117.0,117.5)   2 (117.5,119.0,117.1,118.4)
 3 (118.4,118.8,114.3,114.8)   4 (114.8,115.3,111.5,112.0)   5 (112.0,113.4,111.6,112.9)
 6 (112.9,113.2,109.1,109.6)   7 (109.6,110.0,106.3,106.8)   8 (106.8,107.2,103.6,104.0)
 9 (104.0,105.2,101.9,103.8)   <- doji weekly
10 (103.8,107.4,103.5,107.0)   <- confirmare (close 107.0 > high doji 105.2)
TF mic (daily), index 0-14 (open[0] = 107.0 = close-ul barei mari 10):
 0 (107.0,107.2,106.4,106.6)   1 (106.6,106.8,106.0,106.1)   2 (106.1,106.6,105.95,106.4)
 3 (106.4,106.5,105.8,105.9)   4 (105.9,106.0,105.5,105.6)   5 (105.6,105.95,105.5,105.8)
 6 (105.8,105.9,105.4,105.5)   7 (105.5,105.6,105.25,105.35)
 8 (105.35,105.75,105.10,105.40)  <- doji daily, low-ul atinge nivelul 105.20
 9 (105.40,106.40,105.30,106.30)  <- confirmare => intrare 106.30
10 (106.3,107.0,106.2,106.9)  11 (106.9,107.5,106.7,107.4)  12 (107.4,107.55,107.0,107.2)
13 (107.2,108.0,107.1,107.9)  14 (107.9,108.6,107.8,108.5)

SERIA — rândul B (monthly → weekly) și rândul C (daily → 60 min)
----------------------------------------------------------------
Aceeași formă, scalată: p' = round(100 + f*(p - 100), 2), cu f = 2.5 (B) și
f = 0.4 (C), aplicat pe fiecare o/h/l/c din rândul A. Generatorul calculează
seriile, NU le copiază de mână. Valorile care rezultă (de verificat cu assert):
 B: doji mare h 113.00 / l 104.75; confirmare mare close 117.50;
    doji mic l 112.75; intrare 115.75; SL 112.75; risc 3.00 (2.59 %); TP1 118.75
    doar pe TF mare: intrare 117.50, SL 104.75, risc 12.75 (10.85 %)
 C: doji mare h 102.08 / l 100.76; confirmare mare close 102.80;
    doji mic l 102.04; intrare 102.52; SL 102.04; risc 0.48 (0.47 %); TP1 103.00
    doar pe TF mare: intrare 102.80, SL 100.76, risc 2.04 (1.98 %)
 A (pentru comparație): intrare 106.30; SL 105.10; risc 1.20 (1.13 %); TP1 107.50
    doar pe TF mare: intrare 107.00, SL 101.90, risc 5.10 (4.77 %)

NIVELURI (pe fiecare rând)
--------------------------
Pe graficul mare: linie punctată gri la high-ul dojiului mare („high doji
weekly 105.20" / „high doji monthly 113.00" / „high doji daily 102.08").
Pe graficul mic: aceeași linie (nivelul la care se oprește pullback-ul);
intrare verde; SL roșu; TP1 verde punctat.

ETICHETE
--------
Titlu rând:  A „weekly → daily"   B „monthly → weekly"   C „daily → 60 min"
Pe graficul mare: zonă peste doji + confirmare, etichetată dedesubt
  „doji + confirmare: aici se decide direcția".
Pe graficul mic: zonă peste doji + confirmare, etichetată „doji la nivel:
  aici intri"; Level „stop <preț>" (pe rândul A și „sub ultimele 4 candele"),
  Level „ținta 1:1 <preț>", Level „intrare <preț>".
Săgeata-zoom dintre grafice: „apoi cobori pe graficul mic".
Doar pe rândul A: paranteză de stop pe TF-ul mare („stop 4,77 %") și pe cel
mic („stop 1,13 %"), cu o săgeată între ele: „același setup, stop de 4 ori
mai mic → de 4 ori mai multe acțiuni la același risc".
Restul cifrelor (praguri, „8 candele" pe fiecare pereche, cât ții) stau în
tabelul din capitol, nu în SVG: diagrama nu repetă tabelul.

ASSERT-URI OBLIGATORII ÎN GENERATOR
-----------------------------------
Pe fiecare rând (A, B, C), pe seriile calculate:
1. Fiecare bară: h >= max(o,c) și l <= min(o,c); open[i] == close[i-1]
   (pe fiecare grafic separat).
2. open-ul primei bare mici == close-ul barei mari 10.
3. Doji mare (9) și doji mic (8): abs(o-c) <= 0.10*(h-l).
4. close mare[10] > high mare[9]; close mic[9] > high mic[8].
5. SL == min(l for bare mici 6..9) == low mic[8]  (extrema ultimelor 4).
6. risc == intrare - SL; TP1 == intrare + risc; primul i>9 cu high >= TP1 este 11.
7. Valorile din lista „valori care rezultă" de mai sus, egale la 2 zecimale,
   inclusiv procentele din textul de sub rând.
8. abs(low mic[8] - high mare[9]) / high mare[9] <= 0.005 (doji mic la nivel,
   sub pragul cel mai strict, 0,5 %).
9. Raportul pixeli SL-intrare / intrare-TP1 == 1 pe fiecare grafic mic.

SURSA
-----
- Rolurile TF: weekly/monthly = direcția; daily = trigger de swing; 60 min
  doar în direcția swing-ului de pe daily:
  summaries/08_ANALIZA_ZILNICA/01_buy_doji_si_strategia_mici.md:32-40.
- Pullback-ul la high-ul dojiului ca retest ideal (MICI weekly): triaj/DECIZII.md:118
  (citat în summaries/17_STRATEGII/A3_intrarea.md:245-246).
- Stopul se numără pe TF-ul deciziei: summaries/09_QA/20_2025-08-25.md:9-15.
- Perechile swing/position (60×daily, daily×weekly, weekly×monthly):
  summaries/03_MODUL_2/14_strategia_1_m2d.md:461-466 (M2D, corelație).
- Seria e CONSTRUITĂ. Succesiunea „buy doji pe TF mare → buy doji pe TF mic
  la pullback" e completarea capitolului, nu o procedură rostită în curs.
