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:
@@ -102,6 +102,7 @@ SL_X1, SL_X2 = 380, 614 # liniile de nivel pe graficul mic
|
||||
COL_X = 620 # coloana cu etichetele de nivel ale graficului mic
|
||||
|
||||
out = []
|
||||
LABELS = [] # (x, text) al fiecărei etichete, pentru verificarea de panou
|
||||
|
||||
|
||||
def text(x, y, s, fill=INK, anchor="start", bold=False, size=None):
|
||||
@@ -112,6 +113,7 @@ def text(x, y, s, fill=INK, anchor="start", bold=False, size=None):
|
||||
st.append(f"font-size:{size}px")
|
||||
style = f' style="{";".join(st)}"' if st else ""
|
||||
a = f' text-anchor="{anchor}"' if anchor != "start" else ""
|
||||
LABELS.append((x, s))
|
||||
out.append(f'<text x="{x:.1f}" y="{y:.1f}" fill="{fill}"{a}{style}>{s}</text>')
|
||||
|
||||
|
||||
@@ -155,6 +157,7 @@ for key, f, tf_big, tf_small, cap, exp in ROWS:
|
||||
big, small = scaled(BIG_A, f), scaled(SMALL_A, f)
|
||||
g = check(key, big, small, exp)
|
||||
first = key == "A"
|
||||
lab0 = len(LABELS)
|
||||
|
||||
# titlu rând + subtitluri
|
||||
text(20, y0 + 14, f"{key}. {tf_big} → {tf_small}", bold=True, size=13)
|
||||
@@ -201,7 +204,7 @@ for key, f, tf_big, tf_small, cap, exp in ROWS:
|
||||
hline(SL_X1, SL_X2, y_tp, GREEN, "2 3")
|
||||
text(COL_X, y_tp + 4, f"ținta 1:1 {g['tp']:.2f}", fill=GREEN, size=11)
|
||||
text(COL_X, y_e + 4, f"intrare {g['entry']:.2f}", fill=GREEN, size=11)
|
||||
text(COL_X, y_dh - 5, f"high doji {g['dh']:.2f}", fill="#666", size=11)
|
||||
text(COL_X, y_dh - 5, f"nivel din {tf_big}", fill="#666", size=11)
|
||||
text(COL_X, y_sl + 12, f"stop {g['sl']:.2f}", fill=RED, size=11)
|
||||
if first:
|
||||
text(COL_X, y_sl + 25, "sub ultimele", fill=RED, size=11)
|
||||
@@ -230,6 +233,24 @@ for key, f, tf_big, tf_small, cap, exp in ROWS:
|
||||
anchor="middle", bold=True)
|
||||
text((bx + kx) / 2 + 20, ya + 31, "→ de 4 ori mai multe acțiuni la același risc", fill=RED,
|
||||
anchor="middle", bold=True)
|
||||
# fiecare preț stă pe panoul lui: prețurile TF-ului mare nu apar în dreapta
|
||||
# (SX0) și cele ale TF-ului mic nu apar în stânga. Asta e exact bug-ul care
|
||||
# a pus „high doji 105.20" (weekly) pe graficul daily.
|
||||
MARE = {k: g[k] for k in ("dh", "dl", "conf", "b_sl", "b_entry")}
|
||||
MIC = {k: g[k] for k in ("entry", "sl", "tp", "sdl")}
|
||||
for x, s_ in LABELS[lab0:]:
|
||||
pe_mic = x >= SL_X1 - 20
|
||||
rau = MARE if pe_mic else MIC
|
||||
for k, v in rau.items():
|
||||
assert f"{v:.2f}" not in s_, (
|
||||
f"{key}: eticheta {s_!r} de pe panoul "
|
||||
f"{'mic' if pe_mic else 'mare'} conține prețul {k}={v:.2f} al celuilalt panou")
|
||||
# și invers: prețul TF-ului mare chiar e scris pe panoul mare, legat de serie
|
||||
assert any(f"{g['dh']:.2f}" in s_ and x < SL_X1 - 20 for x, s_ in LABELS[lab0:]), \
|
||||
f"{key}: high-ul dojiului mare nu apare pe panoul mare"
|
||||
for k in ("entry", "sl", "tp"):
|
||||
assert any(f"{g[k]:.2f}" in s_ and x >= SL_X1 - 20 for x, s_ in LABELS[lab0:]), \
|
||||
f"{key}: {k} nu apare pe panoul mic"
|
||||
print(f"{key}: doji mare {g['dh']:.2f}/{g['dl']:.2f} conf {g['conf']:.2f} | intrare {g['entry']:.2f} "
|
||||
f"SL {g['sl']:.2f} risc {g['risk']:.2f} ({g['pct']:.2f} %) TP1 {g['tp']:.2f} | "
|
||||
f"doar mare: risc {g['b_risk']:.2f} ({g['b_pct']:.2f} %)")
|
||||
|
||||
Reference in New Issue
Block a user