atmi: diagramele refacute, cinci noi, si fisa de surse
Noi: pivoti (PPQ/SQ calculati din trimestrul precedent, cu formula pe desen), perechi_tf (weekly -> daily ca descompunere reala, cu caseta, ghidaje si PPQ pe ambele panouri), trigger (BIM apoi verde, fata de verde inainte de BIM — cutitul in cadere), risc (ce inseamna "fara stop": 24 de bare sub apa, -20 % pe pozitie), reinvestire (ciclul banilor pe trei cicluri). aplus devine corectie: diagrama arata un prag de corectie, nu un setup A+, si numele vechi trimitea la altceva. Trei bug-uri reale: exemplul era etichetat weekly cu 20 de bare, dar textul spunea "un an mai tarziu" — trecut pe monthly cu assert pe numarul de luni; ansamblul avea o trimitere fisier:linie desenata in SVG; si benzile PPQ/SQ erau inversate ca sens, cu SQ fix pe intrare. PPQ 95.80 si SQ 90.80 sunt completare proprie — cursul spune explicit ca nu da valorile; derivate cu formula standard, cu assert. Textul capitolului e neatins — agentul a atins pragul de context. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01ThN7ixZrowca8aTGrK1MUJ
This commit is contained in:
@@ -24,10 +24,10 @@ 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 %
|
||||
ENTRY_I = 17 # candela de intrare (verde, precedată de BIM)
|
||||
TP_I = 37 # ultima candelă: TP1 atins
|
||||
TP_I = 30 # ultima candelă: TP1 atins
|
||||
BIM_I = ENTRY_I - 1 # BIM (bară de inversare bearish) înaintea candelei verzi
|
||||
|
||||
# ── structura seriei: 12 sus → 6 corecție → intrare → 20 spre TP ───────────
|
||||
# ── structura seriei: 12 sus → 5 corecție → intrare → 13 luni spre TP ─────
|
||||
closes = [
|
||||
# ~12 candele de urcare spre swing high ~123.00
|
||||
115.80, 116.50, 117.20, 117.90, 117.60, 118.30,
|
||||
@@ -35,13 +35,11 @@ closes = [
|
||||
# ~6 candele de corecție, de la 123.00 în zona de intrare
|
||||
122.00, 121.10, 120.10, 119.00, 117.00,
|
||||
117.43, # candela de intrare (verde)
|
||||
# ~20 candele de urcare de la 117.43 spre 129.17
|
||||
118.00, 118.55, 119.05, 119.50, 119.95,
|
||||
120.40, 120.85, 121.25, 121.65, 122.10,
|
||||
122.50, 122.95, 123.40, 123.85, 124.30,
|
||||
125.00, 126.00, 127.10, 128.40, 129.17,
|
||||
# 13 candele lunare de urcare de la 117.43 spre 129.17 — „aproximativ un an"
|
||||
118.20, 119.10, 119.90, 120.60, 121.50, 122.40, 123.30,
|
||||
124.20, 125.30, 126.40, 127.40, 128.30, 129.17,
|
||||
]
|
||||
assert len(closes) == 38, len(closes)
|
||||
assert len(closes) == 31, len(closes)
|
||||
|
||||
wicks = [(0.25, 0.30)] * len(closes)
|
||||
wicks[0] = (0.35, 0.35)
|
||||
@@ -53,8 +51,8 @@ wicks[TP_I] = (0.00, 0.30) # high = 129.17 exact, ca TP să fie max(high)
|
||||
vols = [42, 40, 44, 47, 39, 45, 48, 52, 50, 55, 58, 62,
|
||||
57, 61, 66, 72, 84,
|
||||
70,
|
||||
58, 55, 53, 57, 54, 56, 59, 55, 57, 60, 58, 61,
|
||||
63, 60, 64, 66, 68, 72, 76, 88]
|
||||
58, 55, 53, 57, 54, 56, 59, 62, 64, 68, 72, 78, 88]
|
||||
assert len(vols) == len(closes), (len(vols), len(closes))
|
||||
|
||||
cds = from_closes(closes, wicks=wicks, vols=vols, start=115.30)
|
||||
|
||||
@@ -68,7 +66,7 @@ assert abs(tp - 129.17) < 0.05, tp
|
||||
assert abs(tp / entry - 1.10) < 0.005, tp / entry
|
||||
assert (swing_high - entry) / swing_high >= 0.04, (swing_high, entry)
|
||||
assert abs(entry - cds[ENTRY_I].c) < 0.05
|
||||
assert abs(max(c.h for c in cds[-10:]) - tp) < 0.05, max(c.h for c in cds[-10:])
|
||||
assert abs(max(c.h for c in cds[-13:]) - tp) < 0.05, max(c.h for c in cds[-13:])
|
||||
|
||||
# structura care susține afirmațiile din text
|
||||
assert abs(swing_high - SWING_HIGH) < 0.05, swing_high
|
||||
@@ -76,14 +74,15 @@ assert cds[ENTRY_I].c > cds[ENTRY_I].o, "candela de intrare trebuie să fie verd
|
||||
assert cds[BIM_I].c < cds[BIM_I].o, "BIM-ul dinaintea intrării trebuie să fie bearish"
|
||||
assert any(c.vol is not None for c in cds), "lipsește panoul de volum"
|
||||
|
||||
n_entry_to_tp = TP_I - ENTRY_I + 1
|
||||
assert 18 <= n_entry_to_tp <= 23, n_entry_to_tp
|
||||
LUNI = TP_I - ENTRY_I # câte candele lunare de la intrare la TP1
|
||||
assert 12 <= LUNI <= 14, LUNI # „aproximativ un an" din material
|
||||
|
||||
TP_LABEL = "TP1 atins ~1 an mai târziu (data exactă neclară în transcriere — ASR)"
|
||||
assert "~1 an" in TP_LABEL
|
||||
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
|
||||
|
||||
levels = [
|
||||
Level(ENTRY, "intrare 117.43", "#188a3e", label_at="left"),
|
||||
Level(ENTRY, "intrare 117.43", "#188a3e", label_at="right"),
|
||||
Level(TP, "TP1 129.17 (+10 %)", "#1a5fb4"),
|
||||
]
|
||||
|
||||
@@ -101,6 +100,8 @@ assert len(levels) == 2, "doar intrare și TP; strategic nu există stop standar
|
||||
|
||||
# etichetele lungi merg ca linii de text sub grafic, ca să nu se bată cu
|
||||
# candelele din dreapta-sus (unde urcarea spre TP nu lasă loc liber)
|
||||
cds[TP_I - 2].note = ("trigger-ul (BIM + candela verde daily) se petrece în interiorul "
|
||||
"lunii de intrare — vezi diagrama pasului 4")
|
||||
cds[TP_I - 1].note = "după TP: capital + profit → cash până la următorul trigger valid"
|
||||
cds[TP_I].note = TP_LABEL
|
||||
|
||||
@@ -110,16 +111,17 @@ ch = Chart(
|
||||
marks=marks,
|
||||
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 — weekly: intrare 117.43 (27.01.2005) → TP +10 % = 129.17",
|
||||
caption="Swing high ~123.00 construit de mine; cifrele de intrare/TP sunt din material.",
|
||||
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.",
|
||||
)
|
||||
|
||||
svg = ch.render()
|
||||
assert svg.count("\n\n") == 0, "linie goală în SVG — rupe markdown-ul"
|
||||
OUT.write_text(svg)
|
||||
|
||||
print(f"serie {len(cds)} candele | entry {entry:.2f} @ {ENTRY_I} | "
|
||||
print(f"serie {len(cds)} candele lunare | entry {entry:.2f} @ {ENTRY_I} | "
|
||||
f"tp {tp:.2f} @ {TP_I} | swing high {swing_high:.2f} "
|
||||
f"(corecție {(swing_high - entry) / swing_high * 100:.2f} %) | "
|
||||
f"entry→TP {n_entry_to_tp} candele (~1 an)")
|
||||
f"entry→TP {LUNI} luni")
|
||||
print(f"scris {OUT}")
|
||||
|
||||
Reference in New Issue
Block a user