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:
@@ -30,9 +30,10 @@ GRAY, RED, GREEN, BLUE, ORANGE = "#777", "#c00", "#188a3e", "#1a5fb4", "#b06000"
|
||||
PIVOT = 622.00 # pivot daily, suportul
|
||||
LEG1 = 622.40 # swing low picior 1
|
||||
LEG2 = 621.40 # picior 2 (mai jos, rupe pivotul)
|
||||
ENTRY = 622.60 # close-ul Buy Hammer (construit)
|
||||
HAMMER_C = 622.60 # close-ul Buy Hammer — cifră reală, din sesiunea Q&A
|
||||
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 = 623.90 # entry + risc = 1:1 (construit)
|
||||
TP1 = 624.70 # entry + risc = 1:1 (construit)
|
||||
|
||||
# ── seria: 30 de close-uri, exact ca în specificație ───────────────────────
|
||||
CLOSES = [
|
||||
@@ -100,11 +101,13 @@ assert abs(corp - 0.30) < 1e-9, corp
|
||||
assert abs(coada - 0.90) < 1e-9, coada
|
||||
assert coada > corp, (coada, corp)
|
||||
|
||||
# 6. entry = close-ul trigger-ului (construit), SL 0.10 sub low-ul piciorului 2
|
||||
assert cds[18].c == ENTRY
|
||||
# 6. regula de intrare a capitolului: close-ul candelei care sparge high-ul
|
||||
# candelei-trigger (aici bara 19), nu close-ul hammer-ului însuși
|
||||
assert cds[18].c == HAMMER_C
|
||||
assert cds[19].c == ENTRY and cds[19].c > cds[18].h, (cds[19].c, cds[18].h)
|
||||
assert abs(cds[18].l - SL - 0.10) < 1e-9, (cds[18].l, SL)
|
||||
risk = ENTRY - SL
|
||||
assert abs(risk - 1.30) < 1e-9, risk
|
||||
risk = round(ENTRY - SL, 2)
|
||||
assert risk == 1.70, risk
|
||||
|
||||
# 7. TP1 simetric 1:1
|
||||
assert abs((ENTRY - SL) - (TP1 - ENTRY)) < 1e-9
|
||||
@@ -112,9 +115,9 @@ assert abs((ENTRY - SL) - (TP1 - ENTRY)) < 1e-9
|
||||
# 8. după trigger, primul close care atinge 623.90 e bara 21 (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.
|
||||
assert all(c.c < TP1 for c in cds[10:21]), [c.c for c in cds[10:21]]
|
||||
assert max(c.h for c in cds[19:21]) < TP1, [c.h for c in cds[19:21]]
|
||||
assert cds[21].c == TP1, cds[21].c
|
||||
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
|
||||
|
||||
# 9. divergență: lower low pe preț, higher low pe volum
|
||||
assert cds[18].l < cds[10].l, (cds[18].l, cds[10].l)
|
||||
@@ -136,9 +139,8 @@ def cx(i: int) -> float:
|
||||
levels = [
|
||||
Level(PIVOT, "pivot daily 622.00", ORANGE, label_at="left"),
|
||||
Level(SL, "SL 621.30 (construit)", RED, label_at="left"),
|
||||
Level(ENTRY, "intrare 622.60 (construit)", GREEN, label_at="left"),
|
||||
Level(TP1, "TP1 623.90 = 1:1 (construit)", GREEN, label_at="left"),
|
||||
Level(LEG1, "picior 1 = 622.40", BLUE, label_at="right"),
|
||||
Level(ENTRY, "intrare 623.00 (construit)", GREEN, label_at="right"),
|
||||
Level(TP1, "TP1 624.70 = 1:1 (construit)", GREEN, label_at="left"),
|
||||
]
|
||||
|
||||
# dy-uri calculate manual ca etichetele „below" să nu calce linia pivotului
|
||||
@@ -146,7 +148,8 @@ levels = [
|
||||
marks = [
|
||||
Mark(10, "picior 1 = 622.40", BLUE, "below", dy=15),
|
||||
Mark(18, "picior 2 = 621.40 (mai jos) · Buy Hammer", RED, "below"),
|
||||
Mark(18, "hammer închide 622.60, înapoi peste pivot", GREEN, "above", dy=-20),
|
||||
Mark(18, "hammer închide 622.60, înapoi peste pivot", GREEN, "above", dy=-42),
|
||||
Mark(19, "intri aici: close peste high-ul hammer-ului", GREEN, "above", dy=-62),
|
||||
]
|
||||
|
||||
ch = Chart(
|
||||
@@ -162,7 +165,7 @@ svg = ch.render()
|
||||
# ── legenda de onestitate (assert 11): ce e real, 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 622.60, SL-ul 621.30 și TP-ul 623.90",
|
||||
"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ă.",
|
||||
]
|
||||
m = re.search(r'viewBox="0 0 (\d+) ([0-9.]+)"', svg)
|
||||
@@ -182,8 +185,8 @@ assert "sunt reale, din curs" in svg and "construcția mea" in svg, \
|
||||
for eticheta in ("pivot daily 622.00", "picior 1 = 622.40",
|
||||
"picior 2 = 621.40 (mai jos) · Buy Hammer",
|
||||
"hammer închide 622.60, înapoi peste pivot",
|
||||
"intrare 622.60 (construit)", "SL 621.30 (construit)",
|
||||
"TP1 623.90 = 1:1 (construit)"):
|
||||
"intrare 623.00 (construit)", "SL 621.30 (construit)",
|
||||
"TP1 624.70 = 1:1 (construit)"):
|
||||
assert eticheta in svg, f"lipsește eticheta: {eticheta!r}"
|
||||
assert "SPY — 5 min" in svg, "lipsește titlul"
|
||||
|
||||
@@ -218,5 +221,5 @@ OUT.write_text(svg, encoding="utf-8")
|
||||
print(f"scris {OUT.name}: {len(cds)} candele | picior 1 {cds[10].l:.2f} (close "
|
||||
f"{cds[10].c:.2f}) | picior 2 {cds[18].l:.2f} (mai jos) | hammer închide "
|
||||
f"{cds[18].c:.2f} | intrare {ENTRY:.2f} | SL {SL:.2f} (risc {risk:.2f}) | "
|
||||
f"TP1 {TP1:.2f} = {(TP1 - ENTRY) / risk:.2f}:1 la bara 21 | "
|
||||
f"TP1 {TP1:.2f} = {(TP1 - ENTRY) / risk:.2f}:1 la bara {TP_BAR} | "
|
||||
f"vol[18]={VOLS[18]} > vol[10]={VOLS[10]}")
|
||||
|
||||
Reference in New Issue
Block a user