From 76011566eebc3b98182ff298b76939f59125a3d1 Mon Sep 17 00:00:00 2001
From: Claude Agent
Date: Tue, 22 Sep 2026 20:13:12 +0000
Subject: [PATCH] diagrame: ultimele patru etichete ramase in urma textului
corectat
selectia_rvol: 'sub jumatate fata de normal' pentru 0,61 -> '61 % dintr-o zi
normala'. mdsrt_exemplu: legenda spunea ca nivelurile SPY sunt 'reale, din
curs'; sunt reconstruite dupa ilustratia unui sumar Q&A. mbt_iesire: 2.04R ->
2,0R, cifra sursei, prin rotunjire la afisare, fara sa se atinga nicio serie;
assert-ul verifica acum textul din SVG-ul randat, nu doar valoarea bruta.
atmi_exemplu: '13 luni mai tarziu' era citit ca fapt al materialului - acum
spune ca 13 e cifra desenului, materialul da 'aproximativ un an'; si cele
patru marcaje de completare din desenele atmi sunt uniformizate.
Plus cei trei agenti opencode scrisi pentru rundele astea: verif_strat,
corector_strat, reparator_grafic.
Co-Authored-By: Claude Opus 5
Claude-Session: https://claude.ai/code/session_01ThN7ixZrowca8aTGrK1MUJ
---
.opencode/agents/corector_strat.md | 63 ++++++++++++
.opencode/agents/reparator_grafic.md | 62 ++++++++++++
.opencode/agents/verif_strat.md | 102 ++++++++++++++++++++
gen/strategii/atmi_exemplu.py | 20 ++--
gen/strategii/atmi_exemplu.spec.txt | 12 ++-
gen/strategii/atmi_exemplu.svg | 4 +-
gen/strategii/atmi_pivoti.py | 4 +-
gen/strategii/atmi_pivoti.svg | 2 +-
gen/strategii/atmi_reinvestire.py | 2 +-
gen/strategii/atmi_reinvestire.svg | 2 +-
gen/strategii/atmi_risc.py | 6 +-
gen/strategii/atmi_risc.svg | 2 +-
gen/strategii/hammer_mbt10_mbt_iesire.py | 15 ++-
gen/strategii/hammer_mbt10_mbt_iesire.svg | 4 +-
gen/strategii/mdsrt_exemplu.py | 53 ++++++----
gen/strategii/mdsrt_exemplu.spec.txt | 46 +++++----
gen/strategii/mdsrt_exemplu.svg | 7 +-
gen/strategii/selectia_rvol.py | 15 ++-
gen/strategii/selectia_rvol.spec.txt | 2 +-
gen/strategii/selectia_rvol.svg | 2 +-
summaries/17_STRATEGII/04_selectia.html | 2 +-
summaries/17_STRATEGII/04_selectia.md | 2 +-
summaries/17_STRATEGII/05_atmi.html | 10 +-
summaries/17_STRATEGII/05_atmi.md | 10 +-
summaries/17_STRATEGII/06_hammer_mbt10.html | 4 +-
summaries/17_STRATEGII/06_hammer_mbt10.md | 4 +-
summaries/17_STRATEGII/07_mdsrt.html | 7 +-
summaries/17_STRATEGII/07_mdsrt.md | 7 +-
28 files changed, 374 insertions(+), 97 deletions(-)
create mode 100644 .opencode/agents/corector_strat.md
create mode 100644 .opencode/agents/reparator_grafic.md
create mode 100644 .opencode/agents/verif_strat.md
diff --git a/.opencode/agents/corector_strat.md b/.opencode/agents/corector_strat.md
new file mode 100644
index 0000000..483279c
--- /dev/null
+++ b/.opencode/agents/corector_strat.md
@@ -0,0 +1,63 @@
+---
+description: Aplică într-un capitol din 17_STRATEGII o listă numerotată de reparații dată în prompt
+mode: all
+model: opencode-go/deepseek-v4.1-flash
+temperature: 0.1
+permission:
+ read: allow
+ glob: allow
+ grep: allow
+ list: allow
+ edit: allow
+ bash: allow
+ webfetch: deny
+ websearch: deny
+ task: deny
+---
+Lucrezi în /workspace/atm-curs-dl. Promptul îți dă **un singur capitol** din
+`summaries/17_STRATEGII/` și o **listă numerotată de probleme** găsite de un
+verificator, fiecare cu linia și dovada. Le repari pe toate, în ordine.
+
+## Procedura, pentru fiecare problemă
+
+1. Deschide capitolul la linia indicată și citește **30 de linii în jur**, ca
+ să vezi ce se sprijină pe afirmația greșită.
+2. **Verifică dovada în sursă**, cu `sed -n 'p' `. Lista nu e
+ adevărul; sursa e. Dacă sursa nu spune ce zice lista, **nu repara pe
+ încredere** — lasă textul neatins și scrie în raport că dovada n-a ținut.
+3. Scrie reparația:
+ - sursa dă o formulare clară → o pui pe ea;
+ - sursa doar **infirmă** ce scrie în capitol, fără să dea altceva → scrii
+ ce NU e și marchezi „neconfirmat: nu reiese din material";
+ - e o **deducție** a noastră → o scrii ca deducție („completare proprie",
+ „prin analogie cu…"), niciodată ca pe regula cursului.
+4. `grep -n` după aceeași afirmație greșită **în același capitol** — o
+ definiție apare de obicei și în glosar, și în pas, și în checklist. Repară
+ toate aparițiile. Dacă o reparație schimbă un prag sau o cifră, verifică și
+ **checklist-ul de la final**.
+
+## Interzis
+
+- să atingi alt fișier decât capitolul-țintă din prompt (nici alte capitole,
+ nici `gen/`, nici `STYLE.md`, nici `PROGRESS.md`);
+- să modifici blocurile `
\ No newline at end of file
diff --git a/gen/strategii/atmi_reinvestire.py b/gen/strategii/atmi_reinvestire.py
index 048036e..3db905b 100644
--- a/gen/strategii/atmi_reinvestire.py
+++ b/gen/strategii/atmi_reinvestire.py
@@ -114,7 +114,7 @@ text(34, yc + 17, f"Cu reinvestire integrală: "
+ f" · dacă lași profitul deoparte: {fara:,.0f} $".replace(",", ".")
+ f" · diferența: {CASTIG:,.2f} $".replace(",", "x").replace(".", ",").replace("x", "."),
fill=INK, size=11)
-text(34, yc + 34, "Cifrele astea sunt calculul meu pe trei cicluri, nu backtest-ul cursului.",
+text(34, yc + 34, "Completare proprie: cifrele astea sunt calculate pe trei cicluri, nu backtest-ul cursului.",
fill=GRAY, size=10)
H = yc + 56
diff --git a/gen/strategii/atmi_reinvestire.svg b/gen/strategii/atmi_reinvestire.svg
index 4ac9e90..7fcac8e 100644
--- a/gen/strategii/atmi_reinvestire.svg
+++ b/gen/strategii/atmi_reinvestire.svg
@@ -34,5 +34,5 @@
Ai pus în total 1.800 $, în trei contribuții egale.Cu reinvestire integrală: 2.184,60 $ · dacă lași profitul deoparte: 1.980 $ · diferența: 204,60 $
- Cifrele astea sunt calculul meu pe trei cicluri, nu backtest-ul cursului.
+ Completare proprie: cifrele astea sunt calculate pe trei cicluri, nu backtest-ul cursului.
\ No newline at end of file
diff --git a/gen/strategii/atmi_risc.py b/gen/strategii/atmi_risc.py
index b3d9375..5926c9e 100644
--- a/gen/strategii/atmi_risc.py
+++ b/gen/strategii/atmi_risc.py
@@ -4,7 +4,7 @@ Același trade ca în restul capitolului (intrare 96.00, țintă +10 % = 105.60)
dar arătând drumul, nu doar capetele: între intrare și țintă poziția trece
printr-un drawdown — pierdere flotantă — de 20 % pe poziție, fără ca nimic
să te scoată din ea. Cifra de 20-30 % pe poziție fără levier e a cursului
-(COVID 2020, 2018); traseul barelor e construit de mine.
+(COVID 2020, 2018); traseul barelor e completare proprie.
Coloana din dreapta traduce aceeași cădere de 20 % a indicelui în pierdere
pe poziție, pe trei variante de instrument — calculul e în cod.
@@ -75,8 +75,8 @@ marks = [
ch = Chart(candles=cds, levels=levels, marks=marks,
scale=5.6, gap=16, body_w=9, left=56, width=720, vol_h=60, top=152,
label_gap=46,
- caption="Cifra de 20-30 % pe poziție fără levier e a cursului; traseul barelor "
- "e construit de mine, ca să se vadă cât durează.")
+ caption="Cifra de 20-30 % pe poziție fără levier e a cursului; "
+ "Completare proprie: traseul barelor, ca să se vadă cât durează.")
svg = ch.render()
titlu = (''
diff --git a/gen/strategii/atmi_risc.svg b/gen/strategii/atmi_risc.svg
index f0b7714..f2dbdb4 100644
--- a/gen/strategii/atmi_risc.svg
+++ b/gen/strategii/atmi_risc.svg
@@ -122,5 +122,5 @@
-20 %: nimic nu te scoateabia aici ești pe zeroTP
- Cifra de 20-30 % pe poziție fără levier e a cursului; traseul barelor e construit de mine, ca să se vadă cât durează.
+ Cifra de 20-30 % pe poziție fără levier e a cursului; Completare proprie: traseul barelor, ca să se vadă cât durează.
\ No newline at end of file
diff --git a/gen/strategii/hammer_mbt10_mbt_iesire.py b/gen/strategii/hammer_mbt10_mbt_iesire.py
index 5aaf068..57302e0 100644
--- a/gen/strategii/hammer_mbt10_mbt_iesire.py
+++ b/gen/strategii/hammer_mbt10_mbt_iesire.py
@@ -27,7 +27,10 @@ prim_tp = next(i for i in range(CLOSE_I + 1, len(cds)) if cds[i].h >= TP)
# --- verificări -------------------------------------------------------------
assert round(cds[VARF].h, 2) == TP, "ținta nu e high-ul vârfului"
assert max(c.h for c in cds[VARF + 1:prim_tp]) < TP, "structura e depășită înainte de țintă"
-assert prim_tp == 26 and R_TINTA == 2.04, (prim_tp, R_TINTA)
+# cifra din material/fișă e 2,0R (summaries/08_ANALIZA_ZILNICA/02_mbt10.md:451):
+# raportul exact e 2.038, dar se rotunjește la o zecimală la 2.0 — verificăm
+# exact ce se afișează pe desen, nu valoarea brută.
+assert prim_tp == 26 and round(R_TINTA, 1) == 2.0, (prim_tp, R_TINTA)
assert min(c.l for c in cds[CLOSE_I:]) > SL, "stopul ar fi fost atins înainte de țintă"
assert cds[VARF].h > cds[CLOSE_I].c > SL, "ordinea vârf / intrare / stop e greșită"
zile = prim_tp - CLOSE_I
@@ -41,7 +44,7 @@ ch = Chart(
zones=[Zone(VARF, VARF, "de aici a pornit coborârea", ORANGE, p_top=95.9),
Zone(CLOSE_I, prim_tp, "drumul până la structură: 7 bare", GREEN)],
arrows=[
- Arrow(prim_tp, f"ieși la 95.20 (+{R_TINTA:.2f}R):\nprima structură care a oprit\nprețul "
+ Arrow(prim_tp, f"ieși la 95.20 (+{R_TINTA:.1f}R):\nprima structură care a oprit\nprețul "
"ultima dată",
price=TP, where="below", color=BLUE, dx=-200, dy=54),
],
@@ -56,7 +59,7 @@ linii = [
"exemplele lui e că", "#333"),
("ținta e o structură vizibilă în stânga: un vârf anterior, ultimul maxim mai jos, sau "
"închiderea unui gap.", "#333"),
- (f"Aici: 89.90 → 95.20 = {R_TINTA:.2f}R, în {zile} bare. Cifrele trade-ului sunt din "
+ (f"Aici: 89.90 → 95.20 = {R_TINTA:.1f}R, în {zile} bare. Cifrele trade-ului sunt din "
"exemplul construit al materialului.", GREY),
]
add = 16 * len(linii) + 10
@@ -65,5 +68,9 @@ svg = svg.replace("", "".join(
f'{t}'
for i, (t, c) in enumerate(linii)) + "")
assert "\n\n" not in svg, "linie goală în SVG"
+# ce se vede pe desen: ambele etichete trebuie să spună 2,0R, ca în material
+assert f"(+{R_TINTA:.1f}R)" in svg and f"= {R_TINTA:.1f}R," in svg, \
+ "eticheta de ieșire nu afișează 2,0R"
+assert "2.04R" not in svg, "a rămas eticheta veche cu 2.04R"
OUT.write_text(svg, encoding="utf-8")
-print(f"scris {OUT.name} ({W}x{H + add}); ținta atinsă la bara {prim_tp} = +{R_TINTA}R")
+print(f"scris {OUT.name} ({W}x{H + add}); ținta atinsă la bara {prim_tp} = +{R_TINTA:.1f}R")
diff --git a/gen/strategii/hammer_mbt10_mbt_iesire.svg b/gen/strategii/hammer_mbt10_mbt_iesire.svg
index 0226adc..3d30f55 100644
--- a/gen/strategii/hammer_mbt10_mbt_iesire.svg
+++ b/gen/strategii/hammer_mbt10_mbt_iesire.svg
@@ -95,7 +95,7 @@
volum
- ieși la 95.20 (+2.04R):
+ ieși la 95.20 (+2.0R):prima structură care a opritprețul ultima dată
-Materialul nu dă o regulă proprie de take-profit la MBT-10. Ce au în comun toate exemplele lui e căținta e o structură vizibilă în stânga: un vârf anterior, ultimul maxim mai jos, sau închiderea unui gap.Aici: 89.90 → 95.20 = 2.04R, în 7 bare. Cifrele trade-ului sunt din exemplul construit al materialului.
\ No newline at end of file
+Materialul nu dă o regulă proprie de take-profit la MBT-10. Ce au în comun toate exemplele lui e căținta e o structură vizibilă în stânga: un vârf anterior, ultimul maxim mai jos, sau închiderea unui gap.Aici: 89.90 → 95.20 = 2.0R, în 7 bare. Cifrele trade-ului sunt din exemplul construit al materialului.
\ No newline at end of file
diff --git a/gen/strategii/mdsrt_exemplu.py b/gen/strategii/mdsrt_exemplu.py
index 9383e5b..4d0cfe8 100644
--- a/gen/strategii/mdsrt_exemplu.py
+++ b/gen/strategii/mdsrt_exemplu.py
@@ -1,15 +1,17 @@
"""Diagrama din `gen/strategii/mdsrt_exemplu.spec.txt` (TIP: PRET).
-Exemplul real din Q&A 15.07.2025 (`09_QA/24_2025-07-15.md`): SPY pe 5 min,
-double bottom cu al doilea picior mai jos (MDSRT pe 5 min, suportul = pivotul
-daily). Downtrend → picior 1 la 622.40 → revenire → picior 2 la 621.40 (rupe
-pivotul 622.00) → Buy Hammer care închide la 622.60, înapoi peste pivot. După
-trigger, un plan construit de mine (marcat) duce trade-ul până la TP1.
+Sesiunea de Q&A 15.07.2025 (`09_QA/24_2025-07-15.md`): SPY pe 5 min, double
+bottom cu al doilea picior mai jos (MDSRT pe 5 min, suportul = pivotul daily).
+Downtrend → picior 1 la 622.40 → revenire → picior 2 la 621.40 (rupe pivotul
+622.00) → Buy Hammer care închide la 622.60, înapoi peste pivot. După trigger,
+un plan construit de mine (marcat) duce trade-ul până la TP1.
-Reale din curs: nivelurile 622.40 / 622.00 / 621.40 / 622.60 și cele 8 bare
-dintre picioare. Construcția mea: entry 622.60, SL 621.30, TP1 623.90 (1:1) —
-materialul nu le dă (transcrierea planului se întrerupe). Volumele sunt
-relative, alese de generator.
+Nivelurile 622.40 / 622.00 / 621.40 / 622.60 și cele 8 bare dintre picioare
+sunt reconstruite după ilustrația sumarului Q&A — NU sunt rostite în
+transcriere: sumarul însuși le dă ca „ale mele", construite
+(`09_QA/24_2025-07-15.md:601-602`). Construcția mea: entry 623.00, SL 621.30,
+TP1 624.70 (1:1) — materialul nu le dă (transcrierea planului se întrerupe).
+Volumele sunt relative, alese de generator.
Rulează:
python3 gen/strategii/mdsrt_exemplu.py
@@ -26,11 +28,11 @@ OUT = Path(__file__).resolve().parent / "mdsrt_exemplu.svg"
GRAY, RED, GREEN, BLUE, ORANGE = "#777", "#c00", "#188a3e", "#1a5fb4", "#b06000"
-# ── nivelurile reale din curs + planul construit (marcat) ──────────────────
-PIVOT = 622.00 # pivot daily, suportul
-LEG1 = 622.40 # swing low picior 1
-LEG2 = 621.40 # picior 2 (mai jos, rupe pivotul)
-HAMMER_C = 622.60 # close-ul Buy Hammer — cifră reală, din sesiunea Q&A
+# ── nivelurile reconstruite din ilustrația sumarului + planul construit ────
+PIVOT = 622.00 # pivot daily, suportul (reconstruit după ilustrație)
+LEG1 = 622.40 # swing low picior 1 (reconstruit)
+LEG2 = 621.40 # picior 2 (mai jos, rupe pivotul; reconstruit)
+HAMMER_C = 622.60 # close-ul Buy Hammer — reconstruit după ilustrația sumarului
ENTRY = 623.00 # close-ul candelei care sparge high-ul hammer-ului (construit)
SL = 621.30 # 0.10 sub low-ul piciorului 2 (construit)
TP1 = 624.70 # entry + risc = 1:1 (construit)
@@ -112,9 +114,9 @@ assert risk == 1.70, risk
# 7. TP1 simetric 1:1
assert abs((ENTRY - SL) - (TP1 - ENTRY)) < 1e-9
-# 8. după trigger, primul close care atinge 623.90 e bara 21 (nu mai devreme).
+# 8. după trigger, primul high care atinge TP1 624.70 e bara 25 (nu mai devreme).
# Seria pornește la 627.00, deci „atinge" se citește de jos în sus, din zona
-# picioarelor: barele 10-20 rămân sub TP1, bara 21 îl atinge.
+# picioarelor: barele 19-24 rămân sub TP1, bara 25 îl atinge.
assert max(c.h for c in cds[19:25]) < TP1, [c.h for c in cds[19:25]]
assert cds[25].h >= TP1 > cds[25].o, (cds[25].h, cds[25].o)
TP_BAR = 25
@@ -162,11 +164,12 @@ ch = Chart(
)
svg = ch.render()
-# ── legenda de onestitate (assert 11): ce e real, ce e construit ───────────
+# ── legenda de onestitate (assert 11): ce e reconstruit, ce e construit ────
legend = [
"Legendă: nivelurile 622.40 / 622.00 / 621.40 / 622.60 și cele 8 candele dintre",
- "picioare sunt reale, din curs. Intrarea 623.00, SL-ul 621.30 și TP-ul 624.70",
- "sunt construcția mea — materialul nu le dă.",
+ "picioare sunt reconstruite după ilustrația sumarului Q&A, nu valori rostite în",
+ "transcriere. Intrarea 623.00, SL-ul 621.30 și TP-ul 624.70 sunt construcția mea —",
+ "materialul nu le dă.",
]
m = re.search(r'viewBox="0 0 (\d+) ([0-9.]+)"', svg)
W, H0 = int(m.group(1)), float(m.group(2))
@@ -178,8 +181,16 @@ svg = re.sub(r'(viewBox="0 0 \d+ )[0-9.]+(")',
svg = svg.replace("\n", "\n " + "\n ".join(legend_svg) + "\n")
assert svg.count("\n\n") == 0, "linie goală în SVG rupe blocul din markdown"
-assert "sunt reale, din curs" in svg and "construcția mea" in svg, \
- "legenda nu spune explicit ce e real și ce e construit"
+assert "reconstruite după ilustrația sumarului Q&A" in svg, \
+ "legenda trebuie să spună că nivelurile sunt reconstruite după sumarul Q&A"
+assert "nu valori rostite în" in svg, \
+ "legenda trebuie să nege că nivelurile ar fi rostite în transcriere"
+assert "construcția mea" in svg, \
+ "legenda nu spune explicit ce e construit"
+# defectul vechi: legenda pretindea că nivelurile ar fi „reale, din curs",
+# deși vin din ilustrația sumarului, nu din transcriere.
+assert "reale, din curs" not in svg, \
+ "legenda veche pretindea că nivelurile sunt reale, din curs"
# toate etichetele cerute de specificație sunt prezente
for eticheta in ("pivot daily 622.00", "picior 1 = 622.40",
diff --git a/gen/strategii/mdsrt_exemplu.spec.txt b/gen/strategii/mdsrt_exemplu.spec.txt
index 732b05e..3f110da 100644
--- a/gen/strategii/mdsrt_exemplu.spec.txt
+++ b/gen/strategii/mdsrt_exemplu.spec.txt
@@ -4,18 +4,19 @@ LOC: strategii/07_mdsrt.md, Nivel 2, §2.5 „Exemplul complet, pas cu pas"
MARCAJ .md: (imediat sub titlul 2.5)
CE ARATĂ
-Exemplul **real** din Q&A 15.07.2025: SPY pe 5 minute, double bottom cu al
-doilea picior mai jos, „este MDSRT pă 5 minute", suportul fiind pivotul daily.
+Sesiunea din Q&A 15.07.2025: SPY pe 5 minute, double bottom cu al doilea picior
+mai jos, „este MDSRT pă 5 minute", suportul fiind pivotul daily.
Downtrend → picior 1 la 622.40 → revenire → picior 2 la 621.40 (mai jos, rupe
pivotul 622.00) → Buy Hammer care închide la 622.60, înapoi peste pivot. După
trigger, un plan construit de mine (marcat) duce trade-ul până la TP1.
Banda de jos = volum, cu higher low pe volum la piciorul 2 (divergență).
SURSA CIFRELOR
-- Nivelurile reale, citite din transcriere: swing low picior 1 = 622.40,
- pivot daily = 622.00, picior 2 = 621.40, Buy Hammer închide 622.60;
- 8 candele între picioare (minimul cerut 5):
- `09_QA/24_2025-07-15.md:12-14, 26-29, 121-128`.
+- Nivelurile picior 1 = 622.40, pivot daily = 622.00, picior 2 = 621.40, Buy
+ Hammer închide 622.60 și cele 8 candele între picioare (minimul cerut 5) sunt
+ **reconstruite după ilustrația sumarului Q&A** (`09_QA/24_2025-07-15.md`),
+ NU rostite în transcriere. Sumarul însuși declară prețurile „ale mele",
+ construite (`09_QA/24_2025-07-15.md:601-602`).
- Context: „este MDSRT pă 5 minute", suportul = pivotul
(`09_QA/24_2025-07-15.md:12-14`).
- Divergență preț lower low / volum higher low:
@@ -25,9 +26,9 @@ SURSA CIFRELOR
`05_MODUL_4/02_strategia_5_mdsrt.md:325-327`). Regula de TP simetrică 1:1:
`05_MODUL_4/02_strategia_5_mdsrt.md:322-324`. Stop sub low-ul piciorului 2:
`09_QA/15_2025-10-14.md:140-145`.
-- **Entry 622.60 / SL 621.30 / TP1 623.90 sunt construcția MEA** (marcate în
+- **Entry 623.00 / SL 621.30 / TP1 624.70 sunt construcția MEA** (marcate în
text ca atare), nu cifre din curs — le pun doar ca să existe un A-Z pe
- nivelurile reale ale exemplului.
+ nivelurile reconstruite ale exemplului.
STRUCTURA SERIEI (30 candele, open = close-ul barei anterioare)
Lista de close-uri:
@@ -36,7 +37,8 @@ Lista de close-uri:
622.40, # 10 = picior 1 (swing low 622.40)
622.70, 623.10, 623.50, 623.20, 622.90, 622.60, 622.30,
622.60, # 18 = picior 2: low 621.40, Buy Hammer care închide 622.60
- 623.00, 623.40, 623.90, # 21 = TP1 1:1 (construit)
+ 623.00, # 19 = entry: close care sparge high-ul hammer-ului (622.70)
+ 623.40, 623.90,
624.20, 624.00, 624.40, 624.80, 625.20, 625.60,
625.30, 625.70]
Mecioni:
@@ -56,12 +58,14 @@ NIVELURILE ȘI ETICHETELE
- „picior 1 = 622.40" — linie albastră; Mark pe bara 10.
- „picior 2 = 621.40 (mai jos) · Buy Hammer" — Mark pe bara 18.
- „hammer închide 622.60, înapoi peste pivot" — etichetă pe bara 18.
-- „intrare 622.60 (construit)" — Mark pe bara 18/19.
+- „intrare 623.00 (construit)" — linie verde (Mark pe bara 19, close peste
+ high-ul hammer-ului).
- „SL 621.30 (construit)" — linie roșie sub low-ul 621.40.
-- „TP1 623.90 = 1:1 (construit)" — linie verde.
-- Legendă jos: „nivelurile 622.40 / 622.00 / 621.40 / 622.60 și 8 candele sunt
- reale, din curs; intrarea, SL-ul și TP-ul sunt construcția mea — materialul
- nu le dă."
+- „TP1 624.70 = 1:1 (construit)" — linie verde.
+- Legendă jos: „nivelurile 622.40 / 622.00 / 621.40 / 622.60 și cele 8 candele
+ dintre picioare sunt reconstruite după ilustrația sumarului Q&A, nu valori
+ rostite în transcriere; intrarea, SL-ul și TP-ul sunt construcția mea —
+ materialul nu le dă."
CE VERIFICĂ GENERATORUL CU assert
1. cds[10].l == 622.35 și cds[10].c == 622.40 (picior 1, swing low 622.40).
@@ -72,13 +76,17 @@ CE VERIFICĂ GENERATORUL CU assert
`09_QA/24_2025-07-15.md:128`; `09_QA/23_2025-07-29.md:869-874`).
5. Assert „hammer": (min(o,c) - l) = 622.30 - 621.40 = 0.90 > corpul
(|o-c| = 0.30) — coadă lungă în jos, corp mic sus.
-6. entry == 622.60 (close-ul trigger-ului, construit) și SL == 621.30
- (0.10 sub low-ul piciorului 2, construit); risk = 1.30.
-7. abs((entry - sl) - (tp1 - entry)) < 1e-9 (623.90 − 622.60 = 1.30).
-8. Primul close care atinge 623.90 e bara 21 (nu mai devreme).
+6. cds[19].c == 623.00 > cds[18].h (close-ul candelei care sparge high-ul
+ hammer-ului, construit) și SL == 621.30 (0.10 sub low-ul piciorului 2,
+ construit); risk = 1.70.
+7. abs((entry - sl) - (tp1 - entry)) < 1e-9 (624.70 − 623.00 = 1.70).
+8. Primul high care atinge 624.70 e bara 25 (nu mai devreme; close-ul barei 21,
+ 623.90, rămâne sub țintă).
9. vol[18] > vol[10] (divergență), cu low[18] < low[10].
10. Fiecare open == close-ul barei anterioare (serie continuă).
-11. Legendă care spune explicit care cifre sunt reale și care sunt construite.
+11. Legendă care spune explicit ce e reconstruit după ilustrația sumarului Q&A
+ și ce e construcția mea; fără afirmația (falsă) că nivelurile ar fi „reale,
+ din curs".
STIL: gap=15, body_w=9, left=44, width=640, vol_h=70, scale lizibil pentru
range-ul 621.40-627.00, MA(20) pe close-uri. Titlu: „SPY — 5 min (Q&A
15.07.2025; intrare/SL/TP construite)". Fără linie goală în SVG.
diff --git a/gen/strategii/mdsrt_exemplu.svg b/gen/strategii/mdsrt_exemplu.svg
index 83ab07e..8ab7176 100644
--- a/gen/strategii/mdsrt_exemplu.svg
+++ b/gen/strategii/mdsrt_exemplu.svg
@@ -1,4 +1,4 @@
-
+SPY — 5 min (Q&A 15.07.2025; intrare/SL/TP construite)pivot daily 622.00
@@ -107,6 +107,7 @@
hammer închide 622.60, înapoi peste pivotintri aici: close peste high-ul hammer-ului (622.70)Legendă: nivelurile 622.40 / 622.00 / 621.40 / 622.60 și cele 8 candele dintre
- picioare sunt reale, din curs. Intrarea 623.00, SL-ul 621.30 și TP-ul 624.70
- sunt construcția mea — materialul nu le dă.
+ picioare sunt reconstruite după ilustrația sumarului Q&A, nu valori rostite în
+ transcriere. Intrarea 623.00, SL-ul 621.30 și TP-ul 624.70 sunt construcția mea —
+ materialul nu le dă.
\ No newline at end of file
diff --git a/gen/strategii/selectia_rvol.py b/gen/strategii/selectia_rvol.py
index 92ee850..38c30a0 100644
--- a/gen/strategii/selectia_rvol.py
+++ b/gen/strategii/selectia_rvol.py
@@ -168,7 +168,7 @@ p += panou("hig", PAN_AX, AZI_HIG, GREEN,
"se tranzacționează dublu față de normal"))
p += panou("ulta", PAN_BX, AZI_ULTA, RED,
"azi = 0,61 × media → RVOL 0.61",
- "sub jumătate față de o zi normală",
+ "61 % dintr-o zi normală",
("sub 100 % = minus, NU veto",
"îl notezi, dar analiza continuă"))
@@ -234,6 +234,17 @@ assert [b[3] for b in BARS["hig"][:-1]] == [b[3] for b in BARS["ulta"][:-1]]
# 3. bara „azi" din HIG e chiar cea mai înaltă, iar cea din ULTA e sub medie
assert BARS["hig"][-1][2] == max(b[2] for b in BARS["hig"]), "bara HIG nu e cea mai înaltă"
assert BARS["ulta"][-1][2] < h_media_px, "bara ULTA nu e sub linia mediei"
+
+# 3c. eticheta de sub bara ULTA afirmă ce se vede în desen: 0,61 din medie =
+# 61 % dintr-o zi normală, adică PESTE jumătate. Vechiul text „sub jumătate
+# față de o zi normală" contrazicea bara desenată (61 % > 50 %) și pica.
+_rvol_ulta = BARS["ulta"][-1][2] / h_media_px
+assert round(_rvol_ulta * 100) == 61, \
+ f"bara ULTA măsoară {_rvol_ulta * 100:.0f} % din medie, eticheta nu poate spune 61 %"
+assert _rvol_ulta > 0.5, \
+ f"bara ULTA e {_rvol_ulta:.2f} din medie, deci PESTE jumătate, nu sub ea"
+assert "61 % dintr-o zi normală" in svg, "lipsește din desen procentul ULTA"
+assert "jumătate" not in svg, 'a reapărut formularea greșită "sub jumătate"'
# și barele nu ies din cadrul panoului
for tag in ("hig", "ulta"):
for cx, top, h, v in BARS[tag]:
@@ -252,7 +263,7 @@ for tag in ("hig", "ulta"):
f"{tag}: eticheta mediei cade peste o bară (valoare {v})"
# 4. nicio cifră care nu e desenată sau care nu vine din material
-PERMISE = {"2", "200", "100", "10", "50", "0.61", "0,61", "0.86", "1.03", "1.2", "16"}
+PERMISE = {"2", "61", "200", "100", "10", "50", "0.61", "0,61", "0.86", "1.03", "1.2", "16"}
for _x, _y, s, *_ in TEXTS:
for n in re.findall(r"\d+(?:[.,]\d+)?", s):
assert n in PERMISE, f"cifră fără acoperire în material: {n!r} în {s!r}"
diff --git a/gen/strategii/selectia_rvol.spec.txt b/gen/strategii/selectia_rvol.spec.txt
index 02d0cab..03afa31 100644
--- a/gen/strategii/selectia_rvol.spec.txt
+++ b/gen/strategii/selectia_rvol.spec.txt
@@ -12,7 +12,7 @@ COMPOZITIE:
CIFRE (toate din capitol / material, niciuna inventata):
- HIG: RVOL 200 %, cel mai mare din cele 16 rezultate ale scanerului din ziua aceea.
-- ULTA: RVOL 0.61, sub jumatate fata de normal.
+- ULTA: RVOL 0.61, adica 61 % din normal (putin peste jumatate).
- scanerul real de Buy Doji: cele trei rezultate aveau 0.86, 1.03 si 0.61.
- media e pe 10 bare; indicatorul standard din platforme o calculeaza pe 50.
- pragul din sursa e doar „peste 100 %". NU se pune alt prag (nu exista
diff --git a/gen/strategii/selectia_rvol.svg b/gen/strategii/selectia_rvol.svg
index 6bb172a..299fd99 100644
--- a/gen/strategii/selectia_rvol.svg
+++ b/gen/strategii/selectia_rvol.svg
@@ -48,7 +48,7 @@
se tranzacționează dublu față de normalmedia = 100 %azi = 0,61 × media → RVOL 0.61
-sub jumătate față de o zi normală
+61 % dintr-o zi normalăultimele 10 bare de volumazisub 100 % = minus, NU veto
diff --git a/summaries/17_STRATEGII/04_selectia.html b/summaries/17_STRATEGII/04_selectia.html
index 13585a7..95714c4 100644
--- a/summaries/17_STRATEGII/04_selectia.html
+++ b/summaries/17_STRATEGII/04_selectia.html
@@ -946,7 +946,7 @@ calcul.
se tranzacționează dublu față de normalmedia = 100 %azi = 0,61 × media → RVOL 0.61
-sub jumătate față de o zi normală
+61 % dintr-o zi normalăultimele 10 bare de volumazisub 100 % = minus, NU veto
diff --git a/summaries/17_STRATEGII/04_selectia.md b/summaries/17_STRATEGII/04_selectia.md
index d9246d3..c4ab6b5 100644
--- a/summaries/17_STRATEGII/04_selectia.md
+++ b/summaries/17_STRATEGII/04_selectia.md
@@ -969,7 +969,7 @@ calcul.
se tranzacționează dublu față de normalmedia = 100 %azi = 0,61 × media → RVOL 0.61
-sub jumătate față de o zi normală
+61 % dintr-o zi normalăultimele 10 bare de volumazisub 100 % = minus, NU veto
diff --git a/summaries/17_STRATEGII/05_atmi.html b/summaries/17_STRATEGII/05_atmi.html
index 8abafa7..e9b826f 100644
--- a/summaries/17_STRATEGII/05_atmi.html
+++ b/summaries/17_STRATEGII/05_atmi.html
@@ -440,7 +440,7 @@ târziu, la ETF-urile cu levier.
C 96.20swing high 100.00corecție 4,0 % — prețul intră în zona PPQ: treci la pasul 2
- Cifrele PPQ/SQ sunt completarea mea: cursul dă regula, nu valorile. Formula e cea standard, confirmată în material pentru pivoți.
+ Completare proprie: PPQ/SQ calculate din serie; cursul dă regula, nu valorile. Formula standard, confirmată în material.
@@ -931,7 +931,7 @@ două săptămâni.
-20 %: nimic nu te scoateabia aici ești pe zeroTP
- Cifra de 20-30 % pe poziție fără levier e a cursului; traseul barelor e construit de mine, ca să se vadă cât durează.
+ Cifra de 20-30 % pe poziție fără levier e a cursului; Completare proprie: traseul barelor, ca să se vadă cât durează.
@@ -1006,7 +1006,7 @@ depozite cu scadențe diferite.
Ai pus în total 1.800 $, în trei contribuții egale.Cu reinvestire integrală: 2.184,60 $ · dacă lași profitul deoparte: 1.980 $ · diferența: 204,60 $
- Cifrele astea sunt calculul meu pe trei cicluri, nu backtest-ul cursului.
+ Completare proprie: cifrele astea sunt calculate pe trei cicluri, nu backtest-ul cursului.
@@ -1235,8 +1235,8 @@ vezi 00_harta.md.
TP1trigger-ul (BIM + candela verde daily) se petrece în interiorul lunii de intrare — vezi diagrama pasului 4după TP: capital + profit → cash până la următorul trigger valid
- TP1 atins 13 luni mai târziu — „aproximativ un an" în material (ziua exactă e neclară în transcriere)
- Grafic lunar, ca să încapă orizontul poziției. Swing high-ul e al meu; intrarea și ținta sunt din material.
+ TP1: 13 candele lunare în desen; materialul spune „aproximativ un an" (ziua exactă e neclară în transcriere)
+ Grafic lunar, ca să încapă orizontul poziției. Completare proprie: swing high-ul; restul e din material.
diff --git a/summaries/17_STRATEGII/05_atmi.md b/summaries/17_STRATEGII/05_atmi.md
index d966b70..607c072 100644
--- a/summaries/17_STRATEGII/05_atmi.md
+++ b/summaries/17_STRATEGII/05_atmi.md
@@ -425,7 +425,7 @@ Nivelurile se calculează o dată la trei luni și rămân fixe pe tot trimestru
C 96.20swing high 100.00corecție 4,0 % — prețul intră în zona PPQ: treci la pasul 2
- Cifrele PPQ/SQ sunt completarea mea: cursul dă regula, nu valorile. Formula e cea standard, confirmată în material pentru pivoți.
+ Completare proprie: PPQ/SQ calculate din serie; cursul dă regula, nu valorile. Formula standard, confirmată în material.
@@ -942,7 +942,7 @@ Prețul îl plătești în drum:
-20 %: nimic nu te scoateabia aici ești pe zeroTP
- Cifra de 20-30 % pe poziție fără levier e a cursului; traseul barelor e construit de mine, ca să se vadă cât durează.
+ Cifra de 20-30 % pe poziție fără levier e a cursului; Completare proprie: traseul barelor, ca să se vadă cât durează.
@@ -1025,7 +1025,7 @@ Partea care produce rezultatul nu e ținta, e ce faci cu banii după:
Ai pus în total 1.800 $, în trei contribuții egale.Cu reinvestire integrală: 2.184,60 $ · dacă lași profitul deoparte: 1.980 $ · diferența: 204,60 $
- Cifrele astea sunt calculul meu pe trei cicluri, nu backtest-ul cursului.
+ Completare proprie: cifrele astea sunt calculate pe trei cicluri, nu backtest-ul cursului.
@@ -1204,8 +1204,8 @@ Singurul trade cu cifre din curs: intrare pe **27 ianuarie 2005 la 117.43**,
TP1trigger-ul (BIM + candela verde daily) se petrece în interiorul lunii de intrare — vezi diagrama pasului 4după TP: capital + profit → cash până la următorul trigger valid
- TP1 atins 13 luni mai târziu — „aproximativ un an" în material (ziua exactă e neclară în transcriere)
- Grafic lunar, ca să încapă orizontul poziției. Swing high-ul e al meu; intrarea și ținta sunt din material.
+ TP1: 13 candele lunare în desen; materialul spune „aproximativ un an" (ziua exactă e neclară în transcriere)
+ Grafic lunar, ca să încapă orizontul poziției. Completare proprie: swing high-ul; restul e din material.
diff --git a/summaries/17_STRATEGII/06_hammer_mbt10.html b/summaries/17_STRATEGII/06_hammer_mbt10.html
index d624c80..1730059 100644
--- a/summaries/17_STRATEGII/06_hammer_mbt10.html
+++ b/summaries/17_STRATEGII/06_hammer_mbt10.html
@@ -1661,10 +1661,10 @@ că MBT-10 nu are o țintă proprie.
volum
- ieși la 95.20 (+2.04R):
+ ieși la 95.20 (+2.0R):prima structură care a opritprețul ultima dată
-Materialul nu dă o regulă proprie de take-profit la MBT-10. Ce au în comun toate exemplele lui e căținta e o structură vizibilă în stânga: un vârf anterior, ultimul maxim mai jos, sau închiderea unui gap.Aici: 89.90 → 95.20 = 2.04R, în 7 bare. Cifrele trade-ului sunt din exemplul construit al materialului.
+Materialul nu dă o regulă proprie de take-profit la MBT-10. Ce au în comun toate exemplele lui e căținta e o structură vizibilă în stânga: un vârf anterior, ultimul maxim mai jos, sau închiderea unui gap.Aici: 89.90 → 95.20 = 2.0R, în 7 bare. Cifrele trade-ului sunt din exemplul construit al materialului.
Asta e o gaură reală în material, nu o simplificare a mea: fișierul principal
diff --git a/summaries/17_STRATEGII/06_hammer_mbt10.md b/summaries/17_STRATEGII/06_hammer_mbt10.md
index e558eb7..9793ddb 100644
--- a/summaries/17_STRATEGII/06_hammer_mbt10.md
+++ b/summaries/17_STRATEGII/06_hammer_mbt10.md
@@ -1710,10 +1710,10 @@ că MBT-10 nu are o țintă proprie.**
volum
- ieși la 95.20 (+2.04R):
+ ieși la 95.20 (+2.0R):prima structură care a opritprețul ultima dată
-Materialul nu dă o regulă proprie de take-profit la MBT-10. Ce au în comun toate exemplele lui e căținta e o structură vizibilă în stânga: un vârf anterior, ultimul maxim mai jos, sau închiderea unui gap.Aici: 89.90 → 95.20 = 2.04R, în 7 bare. Cifrele trade-ului sunt din exemplul construit al materialului.
+Materialul nu dă o regulă proprie de take-profit la MBT-10. Ce au în comun toate exemplele lui e căținta e o structură vizibilă în stânga: un vârf anterior, ultimul maxim mai jos, sau închiderea unui gap.Aici: 89.90 → 95.20 = 2.0R, în 7 bare. Cifrele trade-ului sunt din exemplul construit al materialului.
Asta e o gaură reală în material, nu o simplificare a mea: fișierul principal
diff --git a/summaries/17_STRATEGII/07_mdsrt.html b/summaries/17_STRATEGII/07_mdsrt.html
index 17a9fb8..effa1be 100644
--- a/summaries/17_STRATEGII/07_mdsrt.html
+++ b/summaries/17_STRATEGII/07_mdsrt.html
@@ -1402,7 +1402,7 @@ dintre cele două.
Sesiunea de întrebări discută SPY pe 5 minute, dar nu rostește nivelurile din
desen. Exemplul de mai jos e reconstruit, ca toate celelalte.
-
+
SPY — 5 min (Q&A 15.07.2025; intrare/SL/TP construite)pivot daily 622.00
@@ -1511,8 +1511,9 @@ desen. Exemplul de mai jos e reconstruit, ca toate celelalte.
hammer închide 622.60, înapoi peste pivotintri aici: close peste high-ul hammer-ului (622.70)Legendă: nivelurile 622.40 / 622.00 / 621.40 / 622.60 și cele 8 candele dintre
- picioare sunt reale, din curs. Intrarea 623.00, SL-ul 621.30 și TP-ul 624.70
- sunt construcția mea — materialul nu le dă.
+ picioare sunt reconstruite după ilustrația sumarului Q&A, nu valori rostite în
+ transcriere. Intrarea 623.00, SL-ul 621.30 și TP-ul 624.70 sunt construcția mea —
+ materialul nu le dă.
diff --git a/summaries/17_STRATEGII/07_mdsrt.md b/summaries/17_STRATEGII/07_mdsrt.md
index 5f57d37..77408fc 100644
--- a/summaries/17_STRATEGII/07_mdsrt.md
+++ b/summaries/17_STRATEGII/07_mdsrt.md
@@ -1412,7 +1412,7 @@ Sesiunea de întrebări discută SPY pe 5 minute, dar nu rostește nivelurile di
desen. Exemplul de mai jos e reconstruit, ca toate celelalte.
-
+SPY — 5 min (Q&A 15.07.2025; intrare/SL/TP construite)pivot daily 622.00
@@ -1521,8 +1521,9 @@ desen. Exemplul de mai jos e reconstruit, ca toate celelalte.
hammer închide 622.60, înapoi peste pivotintri aici: close peste high-ul hammer-ului (622.70)Legendă: nivelurile 622.40 / 622.00 / 621.40 / 622.60 și cele 8 candele dintre
- picioare sunt reale, din curs. Intrarea 623.00, SL-ul 621.30 și TP-ul 624.70
- sunt construcția mea — materialul nu le dă.
+ picioare sunt reconstruite după ilustrația sumarului Q&A, nu valori rostite în
+ transcriere. Intrarea 623.00, SL-ul 621.30 și TP-ul 624.70 sunt construcția mea —
+ materialul nu le dă.