SPEC DIAGRAMĂ — m2d_exemplu
========================================
tip:            PRET
destinație:     strategii/03_m2d.md, Nivel 2 → secțiunea 2.5 „Exemplul complet"
cheie markdown: <!-- DIAGRAMA: exemplu -->
generator:      gen/strategii/m2d_exemplu.py (de scris de agentul de diagrame)
stil:           grafic real, STYLE.md §„Cum trebuie să arate un grafic de preț":
                ~30 de candele lipite (gap 15-18, body_w 9-10), open = close-ul
                barei anterioare, panou de volum (vol_h=70), title sus.
                ATENȚIE: e un SHORT, deci graficul coboară; nivelurile de TP/exit
                sunt SUB intrare.

CE ARATĂ
--------
Exemplul real din curs: SHORT pe Riot, TF mare 15 min / TF mic 3 min
(14_strategia_1_m2d.md:227-236). TF mare în Sell → TF mic face pullback Buy (M)
→ primul Sell pe TF mic = trigger (A) → SL = cel mai sus high din 4 candele
= +0.85% → TP1 = 1:1 = -0.85% → în loc de TP1, bear trail → ieșire la +4.55%
(risc/recompensă efectiv ≈ 1:5.3).
Titlu: „RIOT — 3 min (TF mare 15 min în Sell)".

AXA DE PREȚ: CONSTRUITĂ. Procentele sunt reale din curs (0.85% / 1.42% / 4.55%),
prețurile absolute NU sunt date în transcriere. Intrarea e fixată la 100.00
doar ca reper de scală; în legendă scrie explicit „prețurile sunt construite
ca axă, procentele sunt reale".

STRUCTURA SERIEI (30 de candele)
--------------------------------
Faza 1, candelele 0-6 — coborâre (context: TF mare în Sell):
  close-uri: 97.6, 97.1, 96.7, 96.3, 95.9, 95.6, 95.9
Faza 2, candelele 7-13 — pullback în sus = Buy Momentum pe TF mic (M):
  close-uri: 96.4, 96.9, 97.5, 98.2, 99.0, 99.7, 100.3
  candela 13 are high 100.85 (wick), ca SL-ul de 4 candele să iasă +0.85%.
Faza 3, candela 14 — primul Sell după pullback = trigger (A):
  open 100.30 (close-ul candelei 13), close 100.00.
Faza 4, candelele 15-29 — coborâre cu bear trail:
  close-uri: 99.5, 99.0, 98.5, 98.0, 97.6, 97.2, 96.9, 96.6, 96.3, 96.1,
             95.8, 95.5, 95.2, 95.35, 95.45
  candela 29 (close 95.45) e ieșirea pe violarea bear trail-ului.

NIVELURI (Level) — exact acestea
--------------------------------
entry  = 100.00   (close-ul candelei de trigger 14)
SL     = 100.85   (max high pe candelele 11:15 = +0.85% față de entry)
TP1    =  99.15   (entry − 0.85% = 1:1)
exit   =  95.45   (close-ul candelei 29 = +4.55% față de entry)
Etichete:
  „intrare 100.00 (trigger Sell)"
  „SL 100.85 = +0.85%"
  „TP1 99.15 = 1:1"
  „ieșire 95.45 = +4.55% ≈ 1:5.3"
Toate nivelurile desenate pe toată lățimea. Deasupra intrării = SL (roșu),
sub intrare = TP1 (albastru) și exit (verde).

MARKS
-----
Mark(0,  "TF mare (15 min) în Sell", roșu, above)
Mark(7,  "M: Buy Momentum (pullback)", cyan, above)
Mark(14, "A: primul Sell = trigger, intri short", roșu, below)
Mark(17, "deja peste TP1 (1.42% din curs)", verde, below)
Mark(29, "close peste bear trail = ieși", verde, below)

ASSERT-URI OBLIGATORII ÎN GENERATOR
-----------------------------------
1. entry == round(cds[14].c, 2) == 100.00 (intrarea e close-ul candelei de trigger).
2. SL == max(c.h for c in cds[11:15]) == 100.85.
3. abs((SL - entry) / entry - 0.0085) < 1e-4  (SL = +0.85%).
4. TP1 == entry - (SL - entry) == 99.15  și abs((entry - TP1) / entry - 0.0085) < 1e-4.
5. exit == round(cds[29].c, 2) == 95.45.
6. abs((entry - exit) / (SL - entry) - 5.35) < 0.05  (R afișat ≈ 1:5.3).
7. Niciun close după candela 14 nu e > SL (altfel trade-ul ar fi fost stopat
   înainte de ieșire): max(c.c for c in cds[15:]) < SL.
8. Fiecare open == close-ul barei anterioare.
9. Candela 14 închide în jos față de candela 13 (trigger Sell după pullback Buy);
   există cel puțin o candelă din 7-13 care închide în sus (pullback-ul Buy).

SURSA CIFRELOR
--------------
- Exemplul Riot SHORT: SL = 0.85% de la intrare, profit 1.42% la jumătatea
  drumului, ieșire pe trail la 4.55%, R efectiv ≈ 1:5.3:
  summaries/03_MODUL_2/14_strategia_1_m2d.md:227-236, 326-328.
- Regula SL = cel mai sus high din 4 candele (short): 14_strategia_1_m2d.md:178.
- TP1 = 1:1: 14_strategia_1_m2d.md:59-60, 178.
- Bear trail (linia high-urilor candelelor care închid sub low-ul precedentei;
  violare = candelă închisă peste linie): 14_strategia_1_m2d.md:161-163.
- Procentele sunt reale din curs, prețurile absolute (axa 100.00) sunt
  CONSTRUITE de mine — transcrierea nu le dă (14_strategia_1_m2d.md:503-506).
- Notă de fidelitate: cursul spune „la jumătatea distanței spre TP1" cu 1.42%,
  deși 1.42% e mai mare decât TP1 (0.85%); se tratează ca „la jumătatea
  mișcării totale", fără să rezolv eu inconsistența — vezi 2.4 din capitol.
