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.45, 99.80, 98.58, 98.10, 97.60, 97.95, 97.40, 96.90, 96.40,
             96.75, 96.20, 95.70, 95.20, 95.00, 95.45
  barele 16, 20 și 24 sunt retestări: fitil lung în sus care atinge linia de
  trail, dar se închide sub ea (nu o violează). Candela 29 (close 95.45) e
  ieșirea: se închide PESTE linia de trail (95.25), deci violarea e reală.

BEAR TRAIL (linia de trail, desenată ca scară portocalie)
---------------------------------------------------------
Regula capitolului: linia sare pe high-ul fiecărei bare care se închide sub
low-ul precedentei; violarea = prima bară care se închide PESTE linie.
Linia NU urcă niciodată. Seria e construită astfel încât fitilele barelor
16/20/24 să atingă linia fără s-o violeze, iar ieșirea să vină abia la bara
29, care închide peste linie (nu doar cu fitilul). Linia se desenează ca
scară (un palier pe bară, conector vertical între paliere), etichetă
„bear trail" lângă primul palier.

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).
10. Bara 17 e la exact 1.42% profit față de intrare (procentul real din curs).
11. Bear trail recalculat din serie: ieșirea e pe bara 29, iar close-ul ei
    (95.45) e PESTE linia de trail (95.25) — nu doar fitilul. (Pe seria veche
    close-ul 95.45 era sub linia 95.65 și nu exista nicio ieșire.)
12. Linia de trail nu urcă niciodată (e trail, nu nivel fix).
13. Nicio bară dinainte de 29 nu închide peste linie (altfel ieșeai mai devreme).
14. Fitilele au atins linia de mai multe ori fără s-o violeze: barele 16, 20
    și 24 au high ≥ linia în vigoare și close < ea. (Pe seria veche, pe
    barele 15-28 niciun high nu ajungea la linie.)

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.
