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:
@@ -1,5 +1,5 @@
|
||||
#!/usr/bin/env python3
|
||||
"""Ce e un doji și ce nu — patru candele cu același high 50.10 și low 49.20.
|
||||
"""Ce e un doji și ce nu — patru candele cu același high 50.10 și low 49.25.
|
||||
|
||||
Citește `gen/strategii/buy_doji_doji_forma.spec.txt` și scrie
|
||||
`gen/strategii/buy_doji_doji_forma.svg`. E prima imagine din capitol: cine o
|
||||
@@ -18,21 +18,21 @@ from pathlib import Path
|
||||
OUT = Path(__file__).with_suffix(".svg")
|
||||
GREEN, RED, GREY, BLUE = "#188a3e", "#c00", "#555", "#1a5fb4"
|
||||
|
||||
H, L = 50.10, 49.20
|
||||
H, L = 50.10, 49.25
|
||||
RNG = H - L
|
||||
# (nume, o, h, l, c, verdict, rânduri de etichetă sub candelă)
|
||||
CANDLES = [
|
||||
("A", 49.60, 50.10, 49.20, 49.55, "DA", ["DA: corp 0.05", "= 5,6 % din înălțime"]),
|
||||
("B", 49.62, 50.10, 49.20, 49.53, "DA", ["DA, la limită:", "corp 0.09 = 10 %"]),
|
||||
("C", 49.80, 50.10, 49.20, 49.50, "NU", ["NU: corp 0.30", "= 33 %"]),
|
||||
("D", 50.05, 50.10, 49.20, 50.10, "NU", ["NU: corp mic (5,6 %),", "dar fără fitil sus"]),
|
||||
("A", 49.60, 50.10, 49.25, 49.55, "DA", ["DA: corp 0.05", "= 5,9 % din înălțime"]),
|
||||
("B", 49.62, 50.10, 49.25, 49.54, "DA", ["DA, la limită:", "corp 0.08 = 9,4 %"]),
|
||||
("C", 49.80, 50.10, 49.25, 49.50, "NU", ["NU: corp 0.30", "= 35 %"]),
|
||||
("D", 50.05, 50.10, 49.25, 50.10, "NU", ["NU: corp mic (5,9 %),", "dar fără fitil sus"]),
|
||||
]
|
||||
|
||||
# --- assert-urile din spec --------------------------------------------------
|
||||
ratio = {n: round(abs(c - o) / (h - l), 4) for n, o, h, l, c, *_ in CANDLES}
|
||||
for n, o, h, l, c, *_ in CANDLES:
|
||||
assert h == H and l == L, (n, h, l) # 1
|
||||
assert ratio == {"A": 0.0556, "B": 0.1000, "C": 0.3333, "D": 0.0556}, ratio # 2
|
||||
assert ratio == {"A": 0.0588, "B": 0.0941, "C": 0.3529, "D": 0.0588}, ratio # 2
|
||||
for n, o, h, l, c, *_ in CANDLES[:2]: # 3
|
||||
assert ratio[n] <= 0.10 and min(o, c) > l and max(o, c) < h, n
|
||||
assert ratio["C"] > 0.10 # 4
|
||||
@@ -85,7 +85,7 @@ def arrow(x1, y1, x2, y2, color, lines, anchor="start"):
|
||||
text(x1 + dx, y0 + 14 * k, s, color, anchor, bold=(k == 0))
|
||||
|
||||
|
||||
text(24, 30, "Ce e un doji și ce nu — aceeași bară, 50.10 sus și 49.20 jos", "#333",
|
||||
text(24, 30, "Ce e un doji și ce nu — aceeași bară, 50.10 sus și 49.25 jos", "#333",
|
||||
bold=True, size=14)
|
||||
|
||||
# zonele: A+B sunt doji, C+D nu
|
||||
@@ -99,7 +99,7 @@ for p in (H, L):
|
||||
t(f'<line x1="{XS[0] - 100}" y1="{y(p):.1f}" x2="{W - 24}" y2="{y(p):.1f}" '
|
||||
f'stroke="#bbb" stroke-dasharray="4 3"/>')
|
||||
text(24, y(H) - 6, "cât de sus a urcat prețul: 50.10")
|
||||
text(24, y(L) + 14, "cât de jos a coborât: 49.20")
|
||||
text(24, y(L) + 14, "cât de jos a coborât: 49.25")
|
||||
|
||||
for (n, o, h, l, c, verdict, lines), x in zip(CANDLES, XS):
|
||||
color = GREEN if c >= o else RED
|
||||
@@ -128,7 +128,7 @@ text(xA + 20, y(cA) + 10, "close 49.55")
|
||||
# --- săgețile pe contraexemple ----------------------------------------------
|
||||
xC, xD = XS[2], XS[3]
|
||||
arrow(xC + 34, y(H) - 112, xC + 14, y(49.78), RED,
|
||||
lines=["corp prea gros (33 %)", "aici una din tabere a câștigat —", "nu mai e indecizie"])
|
||||
lines=["corp prea gros (35 %)", "aici una din tabere a câștigat —", "nu mai e indecizie"])
|
||||
arrow(xD, y(H) - 34, xD, y(H) - 4, RED, anchor="middle",
|
||||
lines=["fără fitil sus", "regula cere fitil în ambele părți"])
|
||||
|
||||
|
||||
Reference in New Issue
Block a user