buy_doji: reparatiile de diagrame din verificare (11 puncte)
doji_forma nu mai foloseste 49.20 ca low al dojiului — era fix pretul stopului, in prima diagrama pe care o vede un incepator. Bara e pe 50.10/49.25, cu procentele recalculate. LABU: stopul e etichetat "pe cel mai jos dintre cele trei minime", nu "sub minime"; zonele arata doua teste ale pivotului, cu "revenire peste pivot 88.90" intre ele; numarul barei a iesit din desen, nota spune "a 6-a bara dupa intrare", derivat din serie. perechi_tf nu mai pune pretul TF-ului mare pe panoul TF-ului mic. aplus nu mai numeste un nivel care nu e desenat. directie nu mai zice "saptamanile" pe un panou daily. sell acopera toata cresterea, 14 bare. transe: cele trei sageti nu mai converg intr-un ghem — fiecare are linia ei cu pretul la capat; linia de intrare e desenata, ca parantezele de risc sa plece de undeva. locatie arata 49.25, cifra din care iese 0,51 %. stop si iesire: linii si sageti care taiau texte, mutate. Jumatate din probleme erau aceeasi greseala: un pret scris de mana intr-o eticheta, ramas in urma cand se schimba seria. Sunt acum aserttiuni care o fac imposibila; PROGRESS.md spune care merita generalizata. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01ThN7ixZrowca8aTGrK1MUJ
This commit is contained in:
@@ -129,8 +129,13 @@ assert abs(TP1 - 97.55) < 1e-9, f"ținta 1:1 = {TP1}, capitolul spune 97.55"
|
||||
R = (TP - ENTRY) / (ENTRY - SL)
|
||||
assert 3.2 <= R <= 3.4, f"{R:.2f}R, capitolul spune „cam 3,3R”"
|
||||
I_TP1 = next(i for i in range(35, len(cds)) if cds[i].h >= TP1) # prima bară peste 1:1
|
||||
cds[I_TP1].note = (f"ținta 1:1 ({TP1:.2f}) e atinsă pe bara {I_TP1}: acolo vinzi o treime, "
|
||||
"restul merge mai departe — de asta nu vinzi tot la 1:1")
|
||||
# „a câta bară după intrare" — numărătoare fără ambiguitate 0/1, spre deosebire
|
||||
# de „bara 40", care e indexul din serie, dar a 41-a bară dacă numeri cu degetul.
|
||||
BARS_TP1 = I_TP1 - I_CONF
|
||||
assert cds[I_TP1 - 1].h < TP1 <= cds[I_TP1].h, "I_TP1 nu e prima bară peste ținta 1:1"
|
||||
assert BARS_TP1 == 6, f"ținta 1:1 la {BARS_TP1} bare după intrare, aștept 6"
|
||||
cds[I_TP1].note = (f"ținta 1:1 ({TP1:.2f}) e atinsă a {BARS_TP1}-a bară după intrare: acolo "
|
||||
"vinzi o treime, restul merge mai departe — de asta nu vinzi tot la 1:1")
|
||||
|
||||
# --- assert-urile din specificație (toate, ca assert reale) ----------------
|
||||
# 1. pivot 86.00 e straddled de doji
|
||||
@@ -220,23 +225,25 @@ ch = Chart(
|
||||
Level(ENTRY, "intrare 89.50", "#188a3e"),
|
||||
Level(TP1, f"ținta 1:1 {TP1:.2f}", "#777", dash="2 3", label_at="left"),
|
||||
Level(TP, "116.35 = +30 % față de intrare (procent real)", "#1a5fb4", label_at="left")],
|
||||
zones=[Zone(0, B3, "1. setup: scădere lungă, apoi trei minime aproape egale — pivotul 86.00 atins de două ori", "#777"),
|
||||
zones=[Zone(0, B1 + 1, "1. setup: scădere lungă, apoi primul test al pivotului 86.00", "#777"),
|
||||
Zone(21, I_DOJI, "testul 2: minimele 2, 3 și doji-ul — fără revenire peste 86.00", "#777"),
|
||||
Zone(I_DOJI, I_CONF, "2. doji + confirmare", "#b06000"),
|
||||
# p_top sub 116.35: altfel eticheta zonei 3 se așază peste linia țintei
|
||||
Zone(I_CONF + 1, I_TP - 1, "3. trendul pornește", "#188a3e", p_top=113.0),
|
||||
Zone(I_TP, len(cds) - 1, "4. ținta", "#1a5fb4")],
|
||||
arrows=[Arrow(I_CONF, "aici intri, la close 89.50:\nabia acum știi că au câștigat cumpărătorii",
|
||||
ENTRY, where="above", color="#188a3e", dx=-150),
|
||||
Arrow(B3, "al treilea minim: 81.45,\nfără o nouă atingere a pivotului\naici pui stopul, sub minime",
|
||||
SL, where="below", color="#c00", dx=-40),
|
||||
Arrow(B3, "minimul 3: 81.45 — tot din testul 2,\nprețul n-a mai urcat peste 86.00 după minimul 2\naici pui stopul, pe cel mai jos dintre cele trei minime",
|
||||
SL, where="below", color="#c00", dx=-150),
|
||||
Arrow(I_RETEST, "retest: cade înapoi pe intrare\nși ține — trendul e sănătos",
|
||||
cds[I_RETEST].l, where="below", color="#188a3e", dx=110, dy=56),
|
||||
Arrow(FLAG[0] + 1, "aici se odihnește, nu se strică:\nbull flag, pe volum mic",
|
||||
cds[FLAG[0] + 1].h, where="above", color="#188a3e", dx=-20),
|
||||
Arrow(I_TP, f"a ajuns la 116.35: +30 % în 21 de zile de bursă,\ncam {R:.1f}R din cât ai riscat".replace("3.3R", "3,3R"),
|
||||
TP, where="left", color="#1a5fb4", dx=-30, dy=-40)],
|
||||
marks=[Mark(B1, f"test 1 · {lows[B1]:.2f}", "#c00", "below"),
|
||||
Mark(B2, f"test 2 · {lows[B2]:.2f}", "#c00", "below")],
|
||||
marks=[Mark(B1, f"testul 1 · {lows[B1]:.2f}", "#c00", "below"),
|
||||
Mark(20, "revenire peste pivot · 88.90", "#777", "above"),
|
||||
Mark(B2, f"testul 2 · {lows[B2]:.2f}", "#c00", "below")],
|
||||
mas=[MA(20, "#b06000", dash="4 3", text="SMA-20")],
|
||||
scale=8.0, gap=15, body_w=9, left=44, width=w, vol_h=70,
|
||||
vol_label="volum", title="LABU — daily",
|
||||
|
||||
Reference in New Issue
Block a user