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:
@@ -46,8 +46,8 @@ PX = [24, 24 + PW + 28] # x-ul stâng al fiecărui panou
|
||||
SCALE, TOP = 36.0, 96 # px/unitate și y-ul celui mai mare preț
|
||||
|
||||
ARR = {
|
||||
PX[0]: Arrow(8, "pivot lunar: nivel urmărit\nde mulți — aici apar\ncumpărătorii",
|
||||
price=S1_DA, where="below", color=BLUE),
|
||||
PX[0]: Arrow(2, "pivot lunar: nivel urmărit\nde mulți — aici apar\ncumpărătorii",
|
||||
price=S1_DA, where="below", color=BLUE, dy=20),
|
||||
PX[1]: Arrow(4, "aceeași formă, dar nimic sub el\nnu are cine să-l susțină",
|
||||
where="below", color=RED, dx=100),
|
||||
}
|
||||
@@ -68,9 +68,11 @@ assert ch_da.scale == ch_nu.scale and ch_da._pmax == ch_nu._pmax, "scări diferi
|
||||
y = ch_da._y # axa e comună: același y pe ambele panouri
|
||||
|
||||
|
||||
def level(px, price, text, color, below=False):
|
||||
def level(px, price, text, color, below=False, right=False):
|
||||
yy = y(price)
|
||||
ty, anchor, tx = (yy + 14, "start", px + 6) if below else (yy - 6, "end", px + PW - 4)
|
||||
if below and right: # ca să nu stea în tija unei săgeți
|
||||
anchor, tx = "end", px + PW - 4
|
||||
return [f'<line x1="{px}" y1="{yy:.1f}" x2="{px + PW}" y2="{yy:.1f}" stroke="{color}" '
|
||||
f'stroke-width="1.5" stroke-dasharray="4 3"/>',
|
||||
f'<text x="{tx}" y="{ty:.1f}" fill="{color}" text-anchor="{anchor}">{text}</text>']
|
||||
@@ -87,6 +89,7 @@ def zone(px, p_top, p_bot, label, color, label_at_bottom=False):
|
||||
f'style="font-weight:bold">{label}</text>']
|
||||
|
||||
|
||||
PCT_DA, PCT_NU = f"{d_da:.2f}".replace(".", ","), f"{d_nu:.2f}".replace(".", ",")
|
||||
y_bot = y(S1_NU)
|
||||
parts = [
|
||||
f'<svg viewBox="0 0 {W} {y_bot + 62:.0f}" xmlns="http://www.w3.org/2000/svg" '
|
||||
@@ -96,10 +99,18 @@ parts = [
|
||||
f'<text x="{PX[0]}" y="48" fill="{GREEN}" style="font-weight:bold">DA — doji la nivel</text>',
|
||||
f'<text x="{PX[1]}" y="48" fill="{RED}" style="font-weight:bold">NU — doji în aer</text>',
|
||||
f'<line x1="{PX[1] - 14}" y1="36" x2="{PX[1] - 14}" y2="{y_bot + 8:.0f}" stroke="#ccc"/>',
|
||||
*zone(PX[0], doji.l, S1_DA, f"{d_da:.2f} % — la nivel".replace(".", ","), GREEN),
|
||||
*zone(PX[1], doji.l, S1_NU, f"gol de {d_nu:.2f} % sub doji — doji în aer".replace(".", ","),
|
||||
RED, label_at_bottom=True),
|
||||
*level(PX[0], S1_DA, "pivotul lunar 49.00", BLUE, below=True),
|
||||
# capătul de sus al benzii e chiar low-ul dojiului: scris, ca să se vadă din
|
||||
# ce cifră iese procentul (de la 49.25 la pivot), nu doar rezultatul
|
||||
*zone(PX[0], doji.l, S1_DA, f"low-ul dojiului: {doji.l:.2f}", GREEN),
|
||||
*zone(PX[1], doji.l, S1_NU, f"low-ul dojiului: {doji.l:.2f}", RED),
|
||||
f'<text x="{PX[0] + PW - 4}" y="{y(S1_DA) + 32:.1f}" fill="{GREEN}" text-anchor="end" '
|
||||
f'style="font-weight:bold">de la {doji.l:.2f} la {S1_DA:.2f} = '
|
||||
f'{PCT_DA} % — la nivel</text>', # ancorat la dreapta: tija săgeții albastre
|
||||
# trece pe la x-ul candelei 2, mult în stânga
|
||||
f'<text x="{PX[1] + 8}" y="{y(S1_NU) - 12:.1f}" fill="{RED}" '
|
||||
f'style="font-weight:bold">de la {doji.l:.2f} la {S1_NU:.2f} = gol de '
|
||||
f'{PCT_NU} % — doji în aer</text>',
|
||||
*level(PX[0], S1_DA, "pivotul lunar 49.00", BLUE, below=True, right=True),
|
||||
*level(PX[1], PP_NU, "pivotul lunar 53.50", BLUE),
|
||||
*level(PX[1], S1_NU, "pivotul lunar 46.00", BLUE, below=True),
|
||||
body_da, body_nu,
|
||||
|
||||
Reference in New Issue
Block a user