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 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01ThN7ixZrowca8aTGrK1MUJ
This commit is contained in:
Claude Agent
2026-09-22 20:13:12 +00:00
parent 424ecf2ef4
commit 76011566ee
28 changed files with 374 additions and 97 deletions

View File

@@ -8,7 +8,7 @@ standard, urcare lentă până la TP1 +10 % = 129.17, atins ~1 an mai târziu
Serie continuă de 38 de candele weekly (from_closes), panou de volum,
niveluri reale (intrare / TP1) și marcaje ancorate. Toate cifrele vin din
`summaries/04_MODUL_3/03_strategia_2_atmi.md` (liniile citate în spec);
singurul număr construit de mine e swing high-ul ~123.00, care trebuie să
singura completare proprie e swing high-ul ~123.00, care trebuie să
conțină corecția de context.
"""
import sys
@@ -22,7 +22,7 @@ OUT = Path(__file__).resolve().parent / "atmi_exemplu.svg"
# ── cifrele din material ────────────────────────────────────────────────────
ENTRY = 117.43 # 04_MODUL_3/03_strategia_2_atmi.md:358-363
TP = 129.17 # TP1 = +10 % pe 117.43 → 129.17 (":170-171, 358-363")
SWING_HIGH = 123.00 # construit de mine ca să conțină corecția ≥4 %
SWING_HIGH = 123.00 # completare proprie, ca să conțină corecția ≥4 %
ENTRY_I = 17 # candela de intrare (verde, precedată de BIM)
TP_I = 30 # ultima candelă: TP1 atins
BIM_I = ENTRY_I - 1 # BIM (bară de inversare bearish) înaintea candelei verzi
@@ -76,10 +76,16 @@ assert any(c.vol is not None for c in cds), "lipsește panoul de volum"
LUNI = TP_I - ENTRY_I # câte candele lunare de la intrare la TP1
assert 12 <= LUNI <= 14, LUNI # „aproximativ un an" din material
assert LUNI == 13, f"desenul are {LUNI} candele lunare de la intrare la TP1"
TP_LABEL = f"TP1 atins {LUNI} luni mai târziu — „aproximativ un an\" în material "\
"(ziua exactă e neclară în transcriere)"
assert "aproximativ un an" in TP_LABEL
# 13 e cifra desenului, „aproximativ un an" e a materialului: eticheta
# trebuie să spună explicit care e care, altfel 13 se citește ca fapt al cursului.
TP_LABEL = (f"TP1: {LUNI} candele lunare în desen; materialul spune "
"„aproximativ un an\" (ziua exactă e neclară în transcriere)")
assert f"{LUNI} candele lunare" in TP_LABEL, TP_LABEL
assert "materialul spune" in TP_LABEL, TP_LABEL
assert "aproximativ un an" in TP_LABEL, TP_LABEL
assert "13 luni" not in TP_LABEL, "13 e cifra desenului, nu o lună a materialului"
levels = [
Level(ENTRY, "intrare 117.43", "#188a3e", label_at="right"),
@@ -112,8 +118,8 @@ ch = Chart(
mas=[MA(20, "#b06000", dash="4 3")],
scale=9.5, width=660, gap=15, body_w=9, left=40, vol_h=70,
vol_label="volum", title="SPY — monthly: intrare ianuarie 2005 la 117.43 → TP1 +10 % = 129.17",
caption="Grafic lunar, ca să încapă orizontul poziției. Swing high-ul e al meu; "
"intrarea și ținta sunt din material.",
caption="Grafic lunar, ca să încapă orizontul poziției. Completare proprie: "
"swing high-ul; restul e din material.",
)
svg = ch.render()