SPEC DIAGRAMĂ — m2d_ansamblu
========================================
tip:            PRET
destinație:     strategii/03_m2d.md, Nivel 0 → „Diagrama de ansamblu"
cheie markdown: <!-- DIAGRAMA: ansamblu -->
generator:      gen/strategii/m2d_ansamblu.py (de scris de agentul de diagrame; eu nu îl scriu)
stil:           grafic real, STYLE.md §„Cum trebuie să arate un grafic de preț":
                25-45 candele lipite (gap 15-18, body_w 9-10), open = close-ul barei
                anterioare, panou de volum dedesubt (vol_h=70), title sus.
                NU stilul ilustrativ cu 3-6 candele.

CE ARATĂ
--------
Un setup M2D LONG complet pe TF mic (3 minute), cu TF mare (15 minute) în Buy.
Graficul întreg al trade-ului: urcare → pullback (M) → trigger (A) → intrare →
SL de 4 candele → TP1 la 1:1 → continuare → ieșire pe bull trail.
Eticheta de sus: „Simbol construit — 3 min (TF mare 15 min în Buy)".

STRUCTURA SERIEI (32 de candele)
--------------------------------
Faza 1, candelele 0-7 — urcare (context: TF mare e în Buy):
  close-uri: 96.8, 97.2, 97.7, 98.1, 98.6, 99.1, 99.5, 100.0
Faza 2, candelele 8-14 — pullback = Sell Momentum pe TF mic (M):
  close-uri: 99.8, 99.4, 99.0, 99.2, 98.9, 99.15, 99.3
  wick-uri în jos mai mari pe 10-12, ca minimul de 4 candele să fie clar sub intrare.
Faza 3, candelele 15-16 — primul Buy după Sell = trigger (A):
  close-uri: 99.8, 100.2
  candela 15 e prima care închide în sus după pullback.
Faza 4, candelele 17-23 — continuare:
  close-uri: 100.7, 101.2, 101.6, 102.0, 102.4, 102.7, 103.0
Faza 5, candelele 24-31 — vârf și violarea bull trail-ului:
  close-uri: 103.3, 103.1, 102.8, 102.7, 102.9, 102.5, 102.2, 102.0
  bull trail = low-ul ultimei candele care a închis peste high-ul precedentei;
  candela finală (31) închide sub linie = bear reversal, ieșire.

Volume: 32 de valori, mai mari pe candelele de trend (0-7, 17-23) și pe candlele
de trigger (15-16); mai mici pe pullback (8-14). Volumul e orientativ pentru
panou, nu susține o afirmație din text.

NIVELURI (Level) — exact aceste trei
------------------------------------
entry  = close-ul candelei 15 = 99.80                     (verde)
SL     = min(low) pe candelele 11:15 (ultimele 4 înainte de trigger);
         prin wick se obține ~98.80                       (roșu)
TP1    = entry + (entry - SL) = 99.80 + 1.00 = 100.80    (albastru)
Etichete: „intrare 99.80", „SL 98.80 (4 candele)", „TP1 100.80 = 1:1".
Eticheta de ieșire, ca Mark pe candela 31: „ieșire 102.00 pe bull trail".

MARKS (ancorate pe candele, nu tag)
-----------------------------------
Mark(0,  "TF mare (15 min) în Buy", albastru, above)
Mark(11, "M: Sell Momentum (pullback)", roșu, below)
Mark(15, "A: primul Buy = trigger", verde, above)
Mark(24, "vârf 103.30", gri, above)
Mark(31, "close sub bull trail = ieși", roșu, below)
MA(20) opțional (SMA-20) dacă nu se aglomerează; text „SMA-20".

ASSERT-URI OBLIGATORII ÎN GENERATOR
-----------------------------------
1. entry == round(cds[15].c, 2)  (intrarea e close-ul candelei de trigger).
2. SL == min(c.l for c in cds[11:15])  (minimul ultimelor 4 candele dinainte
   de trigger, nu al tuturor).
3. SL < entry.
4. abs(TP1 - (entry + (entry - SL))) < 1e-6  (TP1 e exact 1:1).
5. Fiecare open == close-ul barei anterioare (serie continuă, fără goluri).
6. close-ul candelei 15 > close-ul candelei 14 (triggerul e o candelă în sus
   după un pullback în jos).
7. Există cel puțin o candelă din 8-14 care închide în jos (pullback-ul e
   Sell), și cel puțin una din 0-7 care închide în sus.
8. exit (close-ul candelei 31) > entry.
9. R-ul afișat = (exit - entry) / (entry - SL), cu o zecimală; assert că
   valoarea din etichetă e cea calculată.

SURSA CIFRELOR
--------------
- Regula de ansamblu (entry = trigger, SL = 4 candele, TP1 = 1:1, ieșire pe
  bull trail): summaries/03_MODUL_2/14_strategia_1_m2d.md:3-15, 57-60, 74-79, 178.
- „M = Sell pe TF mic, A = primul Buy pe TF mic": 14_strategia_1_m2d.md:32-38.
- Verificarea că TF mare rămâne în Buy: 09_QA/08_2026-01-20.md:52-63.
- Structura de preț a seriei este CONSTRUITĂ de mine (exemplu generic fără
  ticker), la scara de 1.00 $ risc / ~2.2R randament; nu e un trade real.
  Procentele nu se afirmă nicăieri în text pe baza acestei diagrame.
