From edc270417da3585ae58a61ba28fd25bc8bbc4cc4 Mon Sep 17 00:00:00 2001 From: Claude Agent Date: Sat, 19 Sep 2026 17:29:50 +0000 Subject: [PATCH] strategii: cele trei diagrame ale anexei A3 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Un agent per diagramă, din `.spec.txt`-urile scrise la sesiunea trecută. `audit_diagrams` 0 pe toate trei; fiecare randată și privită ca PNG. Două retușuri făcute de sesiunea principală, peste ce au raportat agenții: - `intrarea_retest_ratat` folosea alte fitiluri la candelele 12 și 14 decât `intrarea_doua_variante`, deși cele două împart aceeași serie 0-15. Aliniate după `doua_variante`, care e scris direct din spec. - `intrarea_cazul_lui` avea un `Mark` „suport weekly" sub linia de SL, care dubla eticheta nivelului și părea să eticheteze SL-ul. Scos. Abaterile de la spec pe care le-au raportat agenții și le-am acceptat: vârful din `cazul_lui` cade pe bara 32, nu 31 (în lista de close-uri din spec acolo e 105.20), iar bara 33 deschide chiar la 105.20, deci cerința „toate celelalte high-uri sub 105.20" nu se poate îndeplini strict. Co-Authored-By: Claude Opus 5 Claude-Session: https://claude.ai/code/session_01ThN7ixZrowca8aTGrK1MUJ --- gen/strategii/intrarea_cazul_lui.py | 155 +++++ gen/strategii/intrarea_cazul_lui.svg | 94 +++ gen/strategii/intrarea_doua_variante.py | 155 +++++ gen/strategii/intrarea_doua_variante.svg | 108 +++ gen/strategii/intrarea_retest_ratat.py | 123 ++++ gen/strategii/intrarea_retest_ratat.svg | 81 +++ summaries/17_STRATEGII/A3_intrarea.html | 798 +++++++++++++++++++++++ summaries/17_STRATEGII/A3_intrarea.md | 286 +++++++- summaries/index.html | 2 +- 9 files changed, 1798 insertions(+), 4 deletions(-) create mode 100644 gen/strategii/intrarea_cazul_lui.py create mode 100644 gen/strategii/intrarea_cazul_lui.svg create mode 100644 gen/strategii/intrarea_doua_variante.py create mode 100644 gen/strategii/intrarea_doua_variante.svg create mode 100644 gen/strategii/intrarea_retest_ratat.py create mode 100644 gen/strategii/intrarea_retest_ratat.svg create mode 100644 summaries/17_STRATEGII/A3_intrarea.html diff --git a/gen/strategii/intrarea_cazul_lui.py b/gen/strategii/intrarea_cazul_lui.py new file mode 100644 index 0000000..f377d7c --- /dev/null +++ b/gen/strategii/intrarea_cazul_lui.py @@ -0,0 +1,155 @@ +"""Diagrama din `gen/strategii/intrarea_cazul_lui.spec.txt` (TIP: PRET). + +Trade-ul userului din A3 §2.1, reconstruit din descriere: downtrend pe 15 min +până la suportul weekly 100.00, buy momentum pe o verde mare, intrare la +close 102.10, imediat o roșie mare care acoperă 83% din corpul verzii, apoi +trendul. Ieșirea userului la 102.60, înainte de TP1; vârful 105.20 după. +Pe același grafic, nivelul 1/2 = 101.20 unde s-ar fi umplut varianta B. + +Toate cifrele sunt CONSTRUITE (fără ticker); mediile SMA 5 / SMA 10 sunt +ilustrative — lecția 10 nu dă lungimile reale. + +Rulează: + python3 gen/strategii/intrarea_cazul_lui.py +Scrie lângă el `intrarea_cazul_lui.svg`. +""" +import re +import sys +from pathlib import Path + +sys.path.insert(0, "/workspace/atm-curs-dl") +from svg_candles import Chart, Level, Mark, MA, from_closes # noqa: E402 + +OUT = Path(__file__).resolve().parent / "intrarea_cazul_lui.svg" + +GRAY, RED, GREEN, BLUE, ORANGE = "#777", "#c00", "#188a3e", "#1a5fb4", "#b06000" +MA5_C, MA10_C = "#8a3ea8", "#2a8a8a" + +SUPORT, SL, ENTRY, HALF, TP1 = 100.00, 99.90, 102.10, 101.20, 104.30 + +CLOSES = [ + 103.80, 103.50, 103.60, 103.20, 102.90, 103.00, 102.60, 102.30, 101.90, 101.40, 101.00, # 0-10 + 100.70, 100.45, 100.30, # 11-13 la suport + 102.10, # 14 buy momentum + 100.60, # 15 roșie mare + 101.10, 101.60, 101.90, # 16-18 + 102.60, # 19 ieșirea userului + 102.90, 102.70, 103.20, 103.60, 103.40, 103.90, 104.20, 104.10, 104.60, + 104.90, 104.70, 105.00, 105.20, 105.00, # 20-33 +] +assert len(CLOSES) == 34, len(CLOSES) + +# (sus, jos); excepțiile fixează exact low-urile/high-urile din specificație +WICKS = [(0.12, 0.10)] * 34 +WICKS[10] = (0.10, 0.20) # low 100.80 +WICKS[11] = (0.10, 0.30) # low 100.40 +WICKS[12] = (0.10, 0.55) # low 99.90, wick sub 100.00 +WICKS[13] = (0.10, 0.20) # low 100.10 +WICKS[14] = (0.15, 0.10) # h 102.25, l 100.20 +WICKS[15] = (0.10, 0.10) # h 102.20, l 100.50 +# spec zice „candela 31 (close 105.20)", dar în lista lui 105.20 e la indexul 32; +# vârful e pus pe bara 32, unde e de fapt close-ul 105.20. +WICKS[31] = (0.10, 0.10) # h 105.10 < 105.20 +WICKS[32] = (0.00, 0.10) # h 105.20 = maximul +WICKS[33] = (0.00, 0.10) # open 105.20 → high nu poate fi sub 105.20 +cds = from_closes(CLOSES, wicks=WICKS, start=104.00) + +R = lambda x: round(x, 2) # noqa: E731 + +# ── assert-urile din specificație ────────────────────────────────────────── +# 1. open == close anterior +for a, b in zip(cds, cds[1:]): + assert a.c == b.o, (a.c, b.o) +g, r = cds[14], cds[15] +assert (R(g.o), R(g.c), R(g.h), R(g.l)) == (100.30, 102.10, 102.25, 100.20), g +assert (R(r.o), R(r.c), R(r.h), R(r.l)) == (102.10, 100.60, 102.20, 100.50), r +assert (R(cds[10].l), R(cds[11].l), R(cds[12].l), R(cds[13].l)) == (100.80, 100.40, 99.90, 100.10) +# 2. SL = low 4 candele; nici verdea, nici roșia nu îl ating +assert R(min(c.l for c in cds[10:14])) == SL +assert g.l > SL and r.l > SL +# 3. culori +assert g.c > g.o and r.c < r.o +# 4. roșia acoperă 83% din corpul verzii +acop = (r.o - r.c) / (g.c - g.o) +assert abs(acop - 0.83) <= 0.01, acop +# 5. 1/2 din corp, atins de roșie +half = (g.o + g.c) / 2 +assert R(half) == HALF and r.l <= half, (half, r.l) +# 6. R-urile +risc = ENTRY - SL +assert R(risc) == 2.20 and R(ENTRY + risc) == TP1 +flot = (r.c - ENTRY) / risc +iesire = (cds[19].c - ENTRY) / risc +varf = (105.20 - ENTRY) / risc +assert (R(flot), R(iesire), R(varf)) == (-0.68, 0.23, 1.41), (flot, iesire, varf) +# 7. mediile mobile +sma = lambda n, i: sum(CLOSES[i + 1 - n:i + 1]) / n # noqa: E731 +assert g.c > sma(5, 14) and g.c > sma(10, 14) +assert r.c < sma(5, 15) and r.c < sma(10, 15) +assert (R(sma(5, 15)), round(sma(10, 15), 3)) == (100.83, 101.335) +# 8. ieșirea înainte de TP1; vârful +assert cds[19].c < TP1 and all(c.h < TP1 for c in cds[15:20]) +assert R(max(c.h for c in cds)) == 105.20 and R(cds[32].h) == 105.20 == cds[32].c +assert all(c.h < 105.20 - 1e-9 for c in cds[:32]) +# varianta B (doar în legendă) +assert R(g.c - (g.c - g.o) / 3) == 101.50 +assert R(HALF - SL) == 1.30 and R(HALF + (HALF - SL)) == 102.50 + +levels = [ + Level(TP1, "TP1 104.30 (1:1)", BLUE, label_at="left"), + Level(ENTRY, "intrare la close 102.10", GREEN), + Level(HALF, "1/2 = 101.20 (B s-ar fi umplut aici)", ORANGE, dash="2 3"), + Level(SUPORT, "suport weekly 100.00", GRAY, label_at="left"), + Level(SL, "", RED), # eticheta SL sub linie, mai jos (0.10 sub suport) + Level(99.50, "", "none", dash=""), # rezervă loc sub SL pentru etichete +] +marks = [ + Mark(14, "▲ buy momentum", GREEN, "above", dy=-20), # peste SMA 10 + Mark(32, "vârf 105.20 = +1.41R", GRAY, "above"), +] +ch = Chart( + candles=cds, levels=levels, marks=marks, + mas=[MA(5, MA5_C), MA(10, MA10_C, dash="5 3")], + scale=60, gap=16, body_w=10, left=44, width=640, + title="Exemplu construit (fără ticker) — 15 min, suport weekly", +) +svg = ch.render() + +# barele 15 și 19 au candele lipite în stânga/dreapta: un Mark centrat le-ar +# tăia, așa că eticheta lor stă în golul de lângă candelă (roșia: ▲ chiar sub +# low-urile barelor 16+, peste suport; ieșirea: deasupra barelor 14-19, +# terminată în bara 19, cu linie de legătură). +y19 = ch._y(103.30) +extra = [ + f'▲ roșie mare: −0.68R flotant', + f'ieși aici: 102.60 = +0.23R', + f'', + f'SL 99.90 (low 4 candele)', + f'' + f'── SMA 5 / - - SMA 10 ilustrative', +] +legend = [ + "Exemplu construit, fără ticker. Prețurile, mediile mobile și ieșirea sunt", + "ilustrative; secvența (verde mare → roșie mare → trend) e cea descrisă de user.", + "Varianta B (ordin la 1/2 = 101.20, risc 1.30, TP1 102.50) e aritmetică pe", + "aceleași cifre, nu un trade din curs. 1/3 din corp = 101.50.", + "Close-ul roșiei (100.60): sub ambele MA (SMA 5 = 100.83, SMA 10 = 101.34).", +] +H0 = float(re.findall(r'viewBox="0 0 \d+ ([0-9.]+)"', svg)[0]) +extra += [f'{t}' + for i, t in enumerate(legend)] +new_h = H0 + 10 + 17 * (len(legend) - 1) + 12 +svg = re.sub(r'(viewBox="0 0 \d+ )[0-9.]+(")', + lambda m: m.group(1) + f"{new_h:.0f}" + m.group(2), svg, count=1) +svg = svg.replace("\n", "\n " + "\n ".join(extra) + "\n") +svg = re.sub(r"\n ]*>", "", svg) # etichete goale (SL, rezervă) +svg = re.sub(r"\n ]*stroke=\"none\"[^>]*/>", "", svg) +assert "\n\n" not in svg + +OUT.write_text(svg, encoding="utf-8") +print(f"scris {OUT.name}: acoperire {acop:.3f}, flotant {flot:+.2f}R, " + f"ieșire {iesire:+.2f}R, vârf {varf:+.2f}R, SMA5/10@15 = " + f"{sma(5, 15):.2f}/{sma(10, 15):.3f}") diff --git a/gen/strategii/intrarea_cazul_lui.svg b/gen/strategii/intrarea_cazul_lui.svg new file mode 100644 index 0000000..9ba4798 --- /dev/null +++ b/gen/strategii/intrarea_cazul_lui.svg @@ -0,0 +1,94 @@ + + Exemplu construit (fără ticker) — 15 min, suport weekly + + TP1 104.30 (1:1) + + intrare la close 102.10 + + 1/2 = 101.20 (B s-ar fi umplut aici) + + suport weekly 100.00 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ▲ buy momentum + vârf 105.20 = +1.41R + ▲ roșie mare: −0.68R flotant + ieși aici: 102.60 = +0.23R + + SL 99.90 (low 4 candele) + ── SMA 5 / - - SMA 10 ilustrative + Exemplu construit, fără ticker. Prețurile, mediile mobile și ieșirea sunt + ilustrative; secvența (verde mare → roșie mare → trend) e cea descrisă de user. + Varianta B (ordin la 1/2 = 101.20, risc 1.30, TP1 102.50) e aritmetică pe + aceleași cifre, nu un trade din curs. 1/3 din corp = 101.50. + Close-ul roșiei (100.60): sub ambele MA (SMA 5 = 100.83, SMA 10 = 101.34). + \ No newline at end of file diff --git a/gen/strategii/intrarea_doua_variante.py b/gen/strategii/intrarea_doua_variante.py new file mode 100644 index 0000000..97b7ad5 --- /dev/null +++ b/gen/strategii/intrarea_doua_variante.py @@ -0,0 +1,155 @@ +"""Diagrama din `gen/strategii/intrarea_doua_variante.spec.txt` (TIP: PRET). + +Același setup cu cele două intrări pe același grafic: A la close-ul candelei +de semnal, B la retestul de 1/3 și 1/2 din corpul ei. Un singur stop, comun +(sub structură), și trei paranteze de risc în dreapta, la aceeași scară cu +prețul — diferența de risc vine din intrare, nu din stop. + +Seria e CONSTRUITĂ (fără ticker), 32 de candele de 15 min, fără volum. +Etichetele de sub candele (suport atins / atinge 1/3 / atinge 1/2) sunt +desenate de mână sub linia de SL, cu linii de legătură: ca Mark-uri „below" +ar cădea peste liniile de 1/2 și 1/3 și peste wick-ul candelei vecine. + +Rulează: .venv/bin/python gen/strategii/intrarea_doua_variante.py + -> gen/strategii/intrarea_doua_variante.svg +""" +import math +import re +import sys +from pathlib import Path + +sys.path.insert(0, "/workspace/atm-curs-dl") +from svg_candles import Chart, Level, Mark, from_closes # noqa: E402 + +OUT = Path(__file__).resolve().parent / "intrarea_doua_variante.svg" +GRI, ROSU, VERDE, PORT, ALB = "#777", "#c00", "#188a3e", "#b06000", "#1a5fb4" + +closes = [103.60, 103.35, 103.45, 103.10, 102.80, 102.90, 102.50, 102.20, 101.85, 101.95, 101.50, 101.10, # 0-11 + 100.60, 100.40, 100.35, # 12-14 suport + 102.15, # 15 semnal + 101.70, 101.40, 101.60, # 16-18 retest + 102.00, 102.40, 102.30, 102.80, 103.20, 103.00, 103.50, 103.90, 104.20, 104.10, 104.50, 104.80, 105.00] +wicks = [(0.15, 0.15)] * 12 \ + + [(0.10, 0.15), (0.10, 0.50), (0.10, 0.15)] \ + + [(0.15, 0.10)] \ + + [(0.10, 0.20), (0.10, 0.20), (0.10, 0.10)] \ + + [(0.10, 0.03)] + [(0.15, 0.12)] * 12 +assert len(closes) == len(wicks) == 32 +cds = from_closes(closes, wicks=wicks, start=103.80) + +# ── assert-urile din spec ─────────────────────────────────────────────────── +S = cds[15] +for a, b in zip(cds, cds[1:]): # 1 + assert abs(a.c - b.o) < 1e-9 +assert abs(S.o - 100.35) < 1e-9 and abs(S.c - 102.15) < 1e-9 # 2 +assert abs(S.h - 102.30) < 1e-9 and abs(S.l - 100.25) < 1e-9 +SL = min(c.l for c in cds[11:15]) # 3 +assert abs(SL - 99.90) < 1e-9 and abs(cds[13].l - SL) < 1e-9 and S.l > SL +assert all(c.l > SL for i, c in enumerate(cds[11:15], 11) if i != 13) +half = (S.o + S.c) / 2 # 4 +third = S.c - (S.c - S.o) / 3 +assert abs(half - 101.25) < 1e-9 and abs(third - 101.55) < 1e-9 +assert min(c.l for c in cds[16:19]) <= half and cds[16].l <= third # 5 +assert cds[16].l > half # 16 atinge doar 1/3, 17 atinge 1/2 +assert all(c.l > third for c in cds[19:]) # după retest nu mai revine la 1/3 +RISK_PER_TRADE = 50.0 +intrari = {"A": S.c, "1/3": third, "1/2": half} +riscuri = {k: e - SL for k, e in intrari.items()} # 6 +for k, r in zip(intrari, (2.25, 1.65, 1.35)): + assert abs(riscuri[k] - r) < 1e-6, (k, riscuri[k]) +actiuni = {k: math.floor(RISK_PER_TRADE / r + 1e-9) for k, r in riscuri.items()} +assert list(actiuni.values()) == [22, 30, 37], actiuni +tp = {k: e + (e - SL) for k, e in intrari.items()} # 7 +for k, v in zip(intrari, (104.40, 103.20, 102.60)): + assert abs(tp[k] - v) < 1e-9, (k, tp[k]) +assert max(c.h for c in cds) >= tp["A"] # 9 + +# ── desenul ───────────────────────────────────────────────────────────────── +W = 880 +levels = [ + Level(100.00, "suport 100.00", GRI), + Level(SL, "", ROSU), # eticheta SL e scrisă sub linie, mai jos + Level(S.c, f"A: intrare la close {S.c:.2f}", VERDE), + Level(third, f"B: 1/3 = {third:.2f}", PORT), + Level(half, f"B: 1/2 = {half:.2f}", PORT), + Level(tp["A"], f"TP1 A {tp['A']:.2f}", ALB), + Level(tp["1/2"], f"TP1 B (1/2) {tp['1/2']:.2f}", ALB, dash="2 3"), + Level(tp["1/3"], f"TP1 B (1/3) {tp['1/3']:.2f}", ALB, dash="2 3"), +] +ch = Chart(candles=cds, levels=levels, + marks=[Mark(15, "semnal: candela verde mare", VERDE, "above", dy=-14)], + scale=60, gap=15, body_w=9, left=44, width=W, + title="Exemplu construit (fără ticker) — 15 min") +svg = ch.render() +svg = re.sub(r'\s*]*>', "", svg) # eticheta goală a SL-ului +y, cx = ch._y, ch._cx +ySL = y(SL) + +extra = [] +def txt(x, yy, s, fill, anchor="start", bold=False): + st = ' style="font-weight:bold"' if bold else "" + extra.append(f'{s}') +def ln(x1, y1, x2, y2, stroke, w=1.2, dash=""): + d = f' stroke-dasharray="{dash}"' if dash else "" + extra.append(f'') + +# eticheta SL, sub linia lui, în dreapta +txt(W - 28, ySL + 16, f"SL {SL:.2f} = low-ul ultimelor 4 candele (comun A și B)", ROSU, "end") + +# etichetele de sub candele, sub linia de SL, cu linii de legătură spre wick +R1, R2 = ySL + 16, ySL + 31 +txt(cx(13), R1, "suport atins", GRI, "middle", True) +ln(cx(16), y(cds[16].l) + 2, cx(16), R2 - 11, PORT, 1, "2 2") +txt(cx(16) + 4, R2, "atinge 1/3", PORT, "end", True) +ln(cx(17), y(cds[17].l) + 2, cx(17), R1 - 11, PORT, 1, "2 2") +txt(cx(17) - 4, R1, "atinge 1/2", PORT, "start", True) + +# parantezele de risc: intrare → SL, la aceeași scară cu prețul +BX = {"A": 560, "1/3": 605, "1/2": 650} +col = {"A": VERDE, "1/3": PORT, "1/2": PORT} +eticheta = {"A": "A", "1/3": "B 1/3", "1/2": "B 1/2"} +px = {} +for k, e in intrari.items(): + x, y0, y1 = BX[k], y(e), ySL + px[k] = y1 - y0 + ln(x, y0, x, y1, col[k], 2.2) + ln(x - 6, y0, x + 6, y0, col[k], 2.2) + ln(x - 6, y1, x + 6, y1, ROSU, 2.2) + txt(x, y0 - 6, eticheta[k], col[k], "middle", True) + txt(x + 6, (y0 + y1) / 2 + 4, f"{riscuri[k]:.2f}", col[k], "start") +# 8. scara: raportul pixelilor == raportul riscurilor, toleranță 1% +for k in intrari: + assert abs(px[k] / px["A"] - riscuri[k] / riscuri["A"]) < 0.01 * riscuri[k] / riscuri["A"], k + +# blocul cu riscurile, sub SL, sub paranteze +bloc = [(f"risc A {riscuri['A']:.2f} → {actiuni['A']} acțiuni la 50 $", VERDE), + (f"risc B 1/3 {riscuri['1/3']:.2f} → {actiuni['1/3']} acțiuni", PORT), + (f"risc B 1/2 {riscuri['1/2']:.2f} → {actiuni['1/2']} acțiuni", PORT)] +for i, (s, c) in enumerate(bloc): + txt(530, ySL + 34 + 15 * i, s, c) +ylegenda = ySL + 34 + 15 * len(bloc) + 12 +txt(24, ylegenda, "Exemplu construit, fără ticker. Cifrele nu vin din curs. " + "Risc permis 50 $ (0,5% din 10.000 $).", "#555") +H = ylegenda + 12 + +svg = re.sub(r'viewBox="0 0 \d+ \d+"', f'viewBox="0 0 {W} {H:.0f}"', svg) +svg = svg.replace("\n", "\n " + "\n ".join(extra) + "\n") +assert "\n\n" not in svg, "linie goală în SVG" + +# ── verificare: etichete în pânză, fără suprapuneri între ele ───────────── +cutii = [] +for xs, ys, attrs, s in re.findall(r']*)>([^<]*)', svg): + x, yy = float(xs), float(ys) + w = len(s) * (7.0 if "bold" in attrs else 6.3) + x0 = x - w if 'anchor="end"' in attrs else (x - w / 2 if 'anchor="middle"' in attrs else x) + assert -2 <= x0 and x0 + w <= W + 2 and 0 <= yy <= H, f"în afara pânzei: {s!r}" + cutii.append((x0, x0 + w, yy, s)) +for i, a in enumerate(cutii): + for b in cutii[i + 1:]: + if abs(a[2] - b[2]) < 13 and a[0] < b[1] - 2 and b[0] < a[1] - 2: + raise AssertionError(f"texte suprapuse: {a[3]!r} / {b[3]!r}") + +OUT.write_text(svg + "\n", encoding="utf-8") +print(f"SL {SL:.2f} | 1/3 {third:.2f} | 1/2 {half:.2f} | riscuri " + + ", ".join(f"{k} {r:.2f}→{actiuni[k]}" for k, r in riscuri.items()) + + " | px " + ", ".join(f"{v:.1f}" for v in px.values())) diff --git a/gen/strategii/intrarea_doua_variante.svg b/gen/strategii/intrarea_doua_variante.svg new file mode 100644 index 0000000..293de8f --- /dev/null +++ b/gen/strategii/intrarea_doua_variante.svg @@ -0,0 +1,108 @@ + + Exemplu construit (fără ticker) — 15 min + + suport 100.00 + + + A: intrare la close 102.15 + + B: 1/3 = 101.55 + + B: 1/2 = 101.25 + + TP1 A 104.40 + + TP1 B (1/2) 102.60 + + TP1 B (1/3) 103.20 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + semnal: candela verde mare + SL 99.90 = low-ul ultimelor 4 candele (comun A și B) + suport atins + + atinge 1/3 + + atinge 1/2 + + + + A + 2.25 + + + + B 1/3 + 1.65 + + + + B 1/2 + 1.35 + risc A 2.25 → 22 acțiuni la 50 $ + risc B 1/3 1.65 → 30 acțiuni + risc B 1/2 1.35 → 37 acțiuni + Exemplu construit, fără ticker. Cifrele nu vin din curs. Risc permis 50 $ (0,5% din 10.000 $). + diff --git a/gen/strategii/intrarea_retest_ratat.py b/gen/strategii/intrarea_retest_ratat.py new file mode 100644 index 0000000..bf1a798 --- /dev/null +++ b/gen/strategii/intrarea_retest_ratat.py @@ -0,0 +1,123 @@ +"""Diagrama din `gen/strategii/intrarea_retest_ratat.spec.txt` (TIP: PRET). + +Pereche pentru `intrarea_doua_variante`: aceeași serie până la candela de +semnal inclusiv (0-15), apoi prețul nu mai coboară în corpul ei. Ordinele de +la 1/2 și 1/3 rămân neumplute, varianta A merge la +1.7R, varianta B n-are +poziție. Seria e construită (fără ticker), nu un trade din curs. +""" +import re +import sys +from pathlib import Path + +sys.path.insert(0, "/workspace/atm-curs-dl") +from svg_candles import Chart, Level, Mark, from_closes # noqa: E402 + +OUT = Path(__file__).resolve().parent / "intrarea_retest_ratat.svg" + +GREEN, RED, ORANGE, GREY = "#188a3e", "#c00", "#b06000", "#777" + +# ── 0-15: copiate din intrarea_doua_variante.spec.txt (aceeași serie) ─────── +CLOSES_0_15 = [103.60, 103.35, 103.45, 103.10, 102.80, 102.90, 102.50, 102.20, + 101.85, 101.95, 101.50, 101.10, # downtrend spre suport + 100.60, 100.40, 100.35, # la suport + 102.15] # candela de semnal +WICKS_0_15 = [(0.15, 0.15)] * 16 +# 12-14 la suport: aceleași fitiluri ca în intrarea_doua_variante.py +WICKS_0_15[12] = (0.10, 0.15) +WICKS_0_15[13] = (0.10, 0.50) # low 99.90 (wick sub suportul de 100.00) +WICKS_0_15[14] = (0.10, 0.15) +WICKS_0_15[15] = (0.15, 0.10) # semnal: high 102.30, low 100.25 +START = 103.80 # open-ul candelei 0 + +# ── 16-31: plecare fără pullback adânc ────────────────────────────────────── +CLOSES_16_31 = [102.40, 102.70, 102.55, 102.95, 103.30, 103.20, 103.60, 104.00, + 103.85, 104.30, 104.70, 104.60, 105.10, 105.40, 105.30, 106.00] +WICKS_16_31 = [(0.15, 0.15)] * 16 +WICKS_16_31[0] = (0.15, 0.25) # low-ul candelei 16 = 101.90 + +cds = from_closes(CLOSES_0_15 + CLOSES_16_31, wicks=WICKS_0_15 + WICKS_16_31, + start=START) + +SL, SIG = 99.90, 15 +sig = cds[SIG] +half = (sig.o + sig.c) / 2 +third = sig.c - (sig.c - sig.o) / 3 +entry_a = sig.c +low_after = min(c.l for c in cds[SIG + 1:]) +r_a = (cds[31].c - entry_a) / (entry_a - SL) + +# ── assert-urile din specificație ─────────────────────────────────────────── +assert len(cds) == 32 +# 1. open == close-ul barei anterioare +assert all(abs(cds[i].o - cds[i - 1].c) < 1e-9 for i in range(1, len(cds))) +# 2. 0-15 identice cu intrarea_doua_variante (lista e copiată din spec-ul ei) +assert abs(sig.o - 100.35) < 1e-9 and abs(sig.c - 102.15) < 1e-9 +assert abs(sig.h - 102.30) < 1e-9 and abs(sig.l - 100.25) < 1e-9 +assert abs(cds[13].l - 99.90) < 1e-9 +assert abs(min(c.l for c in cds[11:15]) - SL) < 1e-9 and sig.l > SL +assert all(c.l > SL for i, c in enumerate(cds[11:15], 11) if i != 13) +assert abs(half - 101.25) < 1e-9 and abs(third - 101.55) < 1e-9 +# 3. niciun ordin nu se umple +assert low_after > 101.55, low_after +assert abs(cds[16].l - 101.90) < 1e-9 and low_after >= 101.80 +assert abs(low_after - 101.90) < 1e-9 # „cel mai jos după semnal" e chiar candela 16 +# 4. finalul și R-ul +assert abs(cds[31].c - 106.00) < 1e-9 +assert round(r_a, 2) == 1.71, r_a +R_TEXT = f"+{r_a:.1f}R" +assert R_TEXT == "+1.7R" +# 5. candela 23 și niciun „suport" inventat în 17-23 +assert abs(cds[23].c - 104.00) < 1e-9 +MARKED = [SL, half, third, entry_a] +assert not any(abs(c.l - p) < 1e-6 for c in cds[17:24] for p in MARKED) + +levels = [ + Level(SL, "SL 99.90", RED, dash=""), + Level(third, f"ordin 1/3 {third:.2f} — neumplut", ORANGE), + Level(half, f"ordin 1/2 {half:.2f} — neumplut", ORANGE), + Level(entry_a, f"A: close {entry_a:.2f}", GREEN), +] +marks = [ + Mark(SIG, "semnal", GREEN, "above"), + # dy=-16: textul stă chiar la înălțimea low-ului, între eticheta 1/3 și linia A + Mark(16, f"cel mai jos după semnal: {low_after:.2f}", GREY, "below", dy=-16), + Mark(23, "NU muți ordinul aici: sub 104.00 nu e niciun nivel", RED, "above"), + Mark(31, f"A: {R_TEXT} · B: 0 (fără poziție)", GREY, "above"), +] + +CAPTION = ["Exemplu construit, fără ticker. «Poate să nu mai facă, poate nu mai face niciodată.»", + "Ai ratat trade-ul; aștepți următoarea structură."] +ch = Chart( + candles=cds, levels=levels, marks=marks, + scale=80.0, width=660, gap=16, body_w=9, left=40, + title="Exemplu construit (fără ticker) — 15 min", caption=CAPTION[0], +) +svg = ch.render() + + +def reanchor(svg, text, anchor, dx): + """Mark-urile ies centrate; unele trebuie să curgă într-o parte, unde e loc + liber (stânga lui 15: candelele 13-14 sunt jos; dreapta lui 16: toate low-urile + >= 102.25; stânga lui 23: toate high-urile < 104.00).""" + pat = re.compile(r'' + re.escape(text) + ')') + svg, n = pat.subn(lambda m: f'' + re.escape(CAPTION[0]) + '', svg) +assert m +y2 = float(m[1]) + 17 +svg = svg.replace(m[0], m[0] + f'\n {CAPTION[1]}') +vb = re.search(r'viewBox="0 0 660 ([\d.]+)"', svg) +assert vb +svg = svg.replace(vb[0], f'viewBox="0 0 660 {float(vb[1]) + 17:.0f}"') +assert svg.count("\n\n") == 0, "linie goală în SVG — rupe markdown-ul" +OUT.write_text(svg) +print(f"low după semnal {low_after:.2f} | A {R_TEXT} ({r_a:.4f}) | scris {OUT}") diff --git a/gen/strategii/intrarea_retest_ratat.svg b/gen/strategii/intrarea_retest_ratat.svg new file mode 100644 index 0000000..83d5d00 --- /dev/null +++ b/gen/strategii/intrarea_retest_ratat.svg @@ -0,0 +1,81 @@ + + Exemplu construit (fără ticker) — 15 min + + SL 99.90 + + ordin 1/3 101.55 — neumplut + + ordin 1/2 101.25 — neumplut + + A: close 102.15 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + semnal + cel mai jos după semnal: 101.90 + NU muți ordinul aici: sub 104.00 nu e niciun nivel + A: +1.7R · B: 0 (fără poziție) + Exemplu construit, fără ticker. «Poate să nu mai facă, poate nu mai face niciodată.» + Ai ratat trade-ul; aștepți următoarea structură. + \ No newline at end of file diff --git a/summaries/17_STRATEGII/A3_intrarea.html b/summaries/17_STRATEGII/A3_intrarea.html new file mode 100644 index 0000000..34613d5 --- /dev/null +++ b/summaries/17_STRATEGII/A3_intrarea.html @@ -0,0 +1,798 @@ + + + + + +A3. Candela de intrare: la close sau la retest? + + + +

A3. Candela de intrare: la close sau la retest?

+

Etichete: execuție · long (short = oglinda) · swing / intraday · +prop / cont personal · dificultate 2 · +nu e o strategie: nu are trigger și setup proprii

+

Surse: regula „intri la close" vine din strategiile mecanice: +13_strategia_3_byh.md, +14_strategia_1_m2d.md, +04_strategia_2_mp_patrat.md. +Regula „aștepți retestul" vine din +09_QA/20_2025-08-25.md (transcrierea +transcripts/09_Q_and_A/20_25082025.txt), +03_locul_crimei_si_pullback.md +și 01_buy_doji_si_strategia_mici.md. +Pentru buy momentum, sursa e transcrierea lecției 10 +(transcripts/03_MODUL_2/10_10_BUYSELL_MOMENTUM_TRIGGER_CUM_FOLOSIM_ACEST_CONCEPT_.txt, +prescurtat mai jos L10). Contradicția e deja triată în +A2_contradictii.md, rândul 17; anexa asta nu o +rezolvă, o desface în pași executabili.

+
+

Notă de structură: anexa nu alege între cele două variante. Materialul +le spune pe amândouă, în contexte diferite, și nu le reconciliază. Unde +scrie „deducție", e judecata mea, nu cursul.

+
+
+

Nivel 0 — Ideea

+

Un semnal îți spune ce, nu când

+

Săgeata de buy momentum, confirmarea unui buy doji, primul Buy pe TF mic la +M2D: toate îți spun că acum cumpărătorii au câștigat. Niciuna nu-ți spune +că prețul de acum e cel mai bun preț la care să cumperi.

+

Mecanismul: candela de semnal e de obicei mare, pentru că e candela în +care cumpărătorii au împins prețul prin nivel. Close-ul ei e sus, iar +stopul logic e jos, sub structura de dinainte (low-ul ultimelor 4 candele la +buy doji și M2D: 03_MODUL_2/13_strategia_3_byh.md:192-193; +17_STRATEGII/fise/m2d.md:68). Cu cât e mai mare candela, cu atât e mai +mare distanța close→stop, adică riscul pe acțiune. Exact asta spune +Bogdan despre buy doji-ul pe 60 min: „e inalt, ai ris [sic] mare pe asta, +mai ales daca esti pe prop" +(transcripts/09_Q_and_A/20_25082025.txt:207).

+

Deci ai de ales între două lucruri pe care nu le poți avea pe amândouă:

+
    +
  • să prinzi mișcarea sigur (intri la close, plătești risc mare), sau
  • +
  • să intri ieftin (aștepți ca prețul să revină în corpul candelei, + plătești riscul de a nu intra deloc).
  • +
+

+ Exemplu construit (fără ticker) — 15 min + + suport 100.00 + + + A: intrare la close 102.15 + + B: 1/3 = 101.55 + + B: 1/2 = 101.25 + + TP1 A 104.40 + + TP1 B (1/2) 102.60 + + TP1 B (1/3) 103.20 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + semnal: candela verde mare + SL 99.90 = low-ul ultimelor 4 candele (comun A și B) + suport atins + + atinge 1/3 + + atinge 1/2 + + + + A + 2.25 + + + + B 1/3 + 1.65 + + + + B 1/2 + 1.35 + risc A 2.25 → 22 acțiuni la 50 $ + risc B 1/3 1.65 → 30 acțiuni + risc B 1/2 1.35 → 37 acțiuni + Exemplu construit, fără ticker. Cifrele nu vin din curs. Risc permis 50 $ (0,5% din 10.000 $). +

+

Diagrama e un exemplu construit, fără ticker; cifrele nu vin din curs.

+

Fraza de decizie

+
+

„Înainte de semnal hotărăsc: intru la close-ul candelei de semnal, sau pun +ordin la 1/2 (sau 1/3) din corpul ei, cu același stop. Dacă am ales +retestul și prețul nu revine, n-am trade — nu alerg după el."

+
+

Când întrebarea nici nu se pune

+
    +
  • Nu ai încă semnal. Doji-ul singur e doar candidat; intri pe trigger, + nu pe doji (08_ANALIZA_ZILNICA/01_buy_doji_si_strategia_mici.md:820-821).
  • +
  • Candela de semnal e mică. Diferența dintre close și 1/2 din corp e de + câțiva cenți, iar riscul scade puțin (deducție: câștigul variantei retest + crește cu mărimea candelei; Bogdan leagă regula de „candela foarte mare", + transcripts/09_Q_and_A/20_25082025.txt:192).
  • +
+
+

Nivel 1 — Cele două variante

+

Aceeași candelă de semnal, două moduri de a intra. Cifrele sunt din +diagrama de mai sus (exemplu construit): candela de semnal deschide la +100.35 și închide la 102.15; stopul e low-ul ultimelor 4 candele, 99.90; +risc permis 50 $ (0,5% dintr-un cont de 10.000 $, plafonul de prop din +A1_risc.md, §1.1).

+

1.1 Tabelul comparativ

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
A. Intri la closeB. Aștepți retestul
Unde intrila close-ul candelei de semnal: 102.15ordin la 1/2 din corp (101.25) sau la 1/3 de sus (101.55)
Stoplow-ul ultimelor 4 candele: 99.90același: 99.90 (stopul rămâne sub structură, nu se mută)
Risc / acțiune2.251.35 la 1/2 · 1.65 la 1/3
Acțiuni la 50 $ risc2237 la 1/2 · 30 la 1/3
TP1 (1:1)104.40102.60 la 1/2 · 103.20 la 1/3
Ce ratezinimic din mișcare; plătești prețul cel mai sustot trade-ul, dacă prețul nu mai coboară până la ordin
Unde e rostităregula strategiilor mecanice: buy doji, M2D, MP²buy doji / MICI pe weekly-monthly; breakout de consolidare (locul crimei)
Surse03_MODUL_2/13_strategia_3_byh.md:192-195; 08_ANALIZA_ZILNICA/01_buy_doji_si_strategia_mici.md:136-138; 04_MODUL_3/04_strategia_2_mp_patrat.md:38-40transcripts/09_Q_and_A/20_25082025.txt:179, 199, 207-208; 08_ANALIZA_ZILNICA/03_locul_crimei_si_pullback.md:8-9, 186-192; triaj/DECIZII.md:118
+

Stopul comun în varianta B: la MICI, cu intrarea în tranșe, „stop-ul rămâne +unul singur, sub higher low", iar tranșele intră între intrare și stop +(08_ANALIZA_ZILNICA/01_buy_doji_si_strategia_mici.md:808-810). Pentru +buy doji simplu cu retest, materialul nu spune explicit unde stă stopul; +l-am lăsat la regula lui de bază (low-ul a 4 candele), ca deducție.

+

1.2 Varianta A — intri la close, pas cu pas

+
    +
  1. Aștepți ca candela de semnal să se închidă. Nu intri în timp ce se + formează: confirmarea se evaluează pe close, nu pe un spike de câteva + secunde (03_MODUL_2/14_strategia_1_m2d.md:475-477).
  2. +
  3. Buy doji: prima candelă din următoarele 3 care închide peste high-ul + doji-ului; intri la close-ul ei + (03_MODUL_2/13_strategia_3_byh.md:152-156; exemplu cu cifre: + 08_ANALIZA_ZILNICA/01_buy_doji_si_strategia_mici.md:136-138). + MP²: „primul Buy Momentum (BIM) sau prima candelă verde după BIM + care închide deasupra pivotului mic" + (04_MODUL_3/04_strategia_2_mp_patrat.md:38-40). M2D: TF mare Buy → + TF mic Sell → TF mic Buy = intri (17_STRATEGII/fise/m2d.md:61); în + exemplul SPY, prețul de intrare e close-ul candelei de trigger, 517.78 + (03_MODUL_2/14_strategia_1_m2d.md:333-334).
  4. +
  5. Stop = extrema ultimelor 4 candele, calculată înapoi de la candela de + confirmare (03_MODUL_2/13_strategia_3_byh.md:192-193).
  6. +
  7. TP1 = aceeași distanță, proiectată de la close (1:1) + (03_MODUL_2/13_strategia_3_byh.md:194-195).
  8. +
  9. Ia primul semnal. Dacă l-ai ratat, aștepți următorul; nu intri pe + amintirea celui vechi (03_MODUL_2/14_strategia_1_m2d.md:469-471).
  10. +
+

1.3 Varianta B — aștepți retestul, pas cu pas

+
    +
  1. Aștepți tot închiderea candelei de semnal (fără semnal nu există + retest de așteptat).
  2. +
  3. Măsori corpul candelei și marchezi nivelurile, de la cel mai puțin adânc + la cel mai adânc (08_ANALIZA_ZILNICA/03_locul_crimei_si_pullback.md:186-192):
  4. +
  5. 1/3 de sus — cumpărătorii grăbiți; pe exemplu, 101.55;
  6. +
  7. 1/2 — retestul clasic, cel mai des citat; 101.25;
  8. +
  9. open-ul candelei de semnal — ultima zonă (100.35). Sursa o spune + pentru breakout: sub open, „breakout-ul e anulat"; că la fel se + anulează un buy doji sau un buy momentum e deducția mea.
  10. +
  11. La buy doji weekly din MICI, triajul notează și retestul + high-ului doji-ului ca ideal (triaj/DECIZII.md:118).
  12. +
  13. Pui ordinul limită la nivelul ales. Stopul rămâne cel al setup-ului.
  14. +
  15. Dacă prețul atinge ordinul, TP1 se calculează de la prețul tău de + intrare, nu de la close-ul semnalului (deducție: formula 1:1 e + distanța intrare→stop, 03_MODUL_2/13_strategia_3_byh.md:194-195).
  16. +
  17. Dacă prețul nu atinge ordinul: nu ai trade. Nu muți ordinul mai sus + (vezi Gotchas).
  18. +
+

Ce spune Bogdan, cuvânt cu cuvânt (transcrierea n-are diacritice):

+
+

„Intrai full sau 1 pe 3 aici, dupa care mai intrai la 1 pe 3 si 1 pe 2, +uite ce frumos l-a testat" — XLE pe daily, buy doji +(transcripts/09_Q_and_A/20_25082025.txt:179)

+

„A retestat unul pe 3, unul pe 2." — SPY, buy doji după consolidare +(transcripts/09_Q_and_A/20_25082025.txt:199)

+

„Pai ba, e inalt, ai ris [sic] mare pe asta, mai ales daca esti pe prop. +Si atunci de asta sa intre pe unul, pe 3, unul, pe 2, pentru un ris [sic] +mai mic." — buy doji pe 60 min +(transcripts/09_Q_and_A/20_25082025.txt:207-208)

+
+

Atenție la cum citești sursa: sumarul sesiunii scrie „nu intri la +închiderea lui — aștepți retestul" +(09_QA/20_2025-08-25.md:144-145). Transcrierea e mai puțin categorică: +la XLE spune „intrai full sau 1 pe 3 aici" și apoi retestele, adică o +parte (sau toată poziția) la semnal și restul la retest +(transcripts/09_Q_and_A/20_25082025.txt:179). Nu e clar din transcriere +dacă „1 pe 3" de acolo e o treime din poziție sau nivelul de 1/3.

+

1.4 Când se aplică fiecare — ce se știe

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ContextCe spune materialulSursă
Buy doji / M2D / MP², strategiile mecaniceintri la close-ul candelei de triggervezi 1.2
Buy doji pe weekly / monthly (MICI)retest la 1/3, 1/2; motivul e riscul mare pe candelele de weekly/monthlytranscripts/09_Q_and_A/20_25082025.txt:157-159; triaj/DECIZII.md:118
Regulile MICI, copiate pe alt TF„Si sa o folosesti pe daily, pe 60 de minute, pe ce vrei tu"transcripts/09_Q_and_A/20_25082025.txt:154-156
Breakout dintr-o consolidare (marubozu)„nu intri pe lumânarea de breakout", aștepți retestul08_ANALIZA_ZILNICA/03_locul_crimei_si_pullback.md:8-9
Acțiuni scumpe / volatile la MICIintri în 4 tranșe de 1/4, pe retesturi08_ANALIZA_ZILNICA/01_buy_doji_si_strategia_mici.md:800-806
Buy momentum, semnal ratatpullback-ul la medii mobile e a doua șansă, nu pas obligatoriuL10:94, 104-106
Buy momentum, confirmare suplimentară (weekly×daily)poți să nu intri la semnal și să aștepți un close peste ambele medii mobile de pe weeklyL10:176-182
+

Pentru buy momentum în sine, materialul nu spune „aștepți retestul". +Spune că pullback-ul e varianta pentru cine a ratat semnalul:

+
+

„Puteți să cumpărați la pullback-uri, de exemplu să spunem că ați ratat +semnalul ăsta de buy de aici." (L10:94)

+

„dacă ați ratat semnalul ăsta, puteți să așteptați un pullback la moving +average-uri. Să nu treacă sub moving average-ul cel puțin de sus, cel +galben." (L10:105-106)

+

„Bineînțeles că există riscul ca prețul să se cadă, da?" (L10:97)

+
+

Retestul de aici e la mediile mobile ale indicatorului, nu la 1/2 din +corpul candelei. Sunt două niveluri diferite de retest.

+

Există și o a treia cale, rostită o singură dată, pentru combinația +weekly×daily: „puteți să nu intrați la semnalul de aici și să așteptați un +semnal în care candela daily [...] se închide deasupra ambelor moving +average pe weekly" (L10:178-182). Bogdan o descrie ca „o filtrare mai +agresivă" (L10:209), pentru cine vrea „confirmări suplimentare și un edge +mai mare" (L10:207-208). Nu e retest, e confirmare întârziată: intri mai +sus, nu mai jos.

+

1.5 Checklist de tipărit

+
    +
  • [ ] Candela de semnal s-a închis (nu te uiți la candela în formare).
  • +
  • [ ] Am hotărât înainte de semnal: A (close) sau B (retest, nivelul ___).
  • +
  • [ ] Stopul e la nivelul setup-ului: ___. Nu se mută cu varianta.
  • +
  • [ ] Riscul pe acțiune: A = close − stop; B = ordin − stop.
  • +
  • [ ] Acțiunile = risc $ / risc pe acțiune, rotunjit în jos (A1_risc.md, §1.3).
  • +
  • [ ] La B: ordin limită pus. Dacă nu se umple, nu îl mut după preț.
  • +
  • [ ] TP1 = 1:1 de la intrarea mea, nu de la close-ul semnalului.
  • +
+
+

Nivel 2 — Cazul tău: buy momentum la suport weekly, pe 15 minute

+

2.1 Ce s-a întâmplat, candelă cu candelă

+

Reconstruit din descriere; cifrele sunt construite, nu citite din graficul +tău.

+

+ Exemplu construit (fără ticker) — 15 min, suport weekly + + TP1 104.30 (1:1) + + intrare la close 102.10 + + 1/2 = 101.20 (B s-ar fi umplut aici) + + suport weekly 100.00 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ▲ buy momentum + vârf 105.20 = +1.41R + ▲ roșie mare: −0.68R flotant + ieși aici: 102.60 = +0.23R + + SL 99.90 (low 4 candele) + ── SMA 5 / - - SMA 10 ilustrative + Exemplu construit, fără ticker. Prețurile, mediile mobile și ieșirea sunt + ilustrative; secvența (verde mare → roșie mare → trend) e cea descrisă de user. + Varianta B (ordin la 1/2 = 101.20, risc 1.30, TP1 102.50) e aritmetică pe + aceleași cifre, nu un trade din curs. 1/3 din corp = 101.50. + Close-ul roșiei (100.60): sub ambele MA (SMA 5 = 100.83, SMA 10 = 101.34). +

+

Diagrama e un exemplu construit, fără ticker. Prețurile, mediile mobile și +punctul de ieșire sunt ilustrative; forma secvenței e cea descrisă.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
#Ce vezi pe 15 minCifre (construite)
1downtrend până la suportul weeklysuport 100.00
2candela verde mare, săgeata de buy momentumopen 100.30, close 102.10
3intri la close (varianta A)intrare 102.10, stop 99.90, risc 2.20, TP1 104.30
4candela roșie mare imediat dupăopen 102.10, close 100.60, low 100.50: acoperă 83% din corpul verzii
5frica: ai 1.50 pe minus din 2.20 risc−0.68R, flotant
6prețul se întoarce și pornește trendul
7ieși repede, pe plusieșire 102.60 = +0.23R, sub TP1
8trendul continuă fără tinevârf 105.20 = +1.41R față de intrarea ta
+

Aceleași candele, varianta B: candela roșie trece prin 1/3 (101.50) și +prin 1/2 (101.20). Un ordin la 1/2 s-ar fi umplut la 101.20, cu risc 1.30 +și TP1 la 102.50 (aritmetica 1:1 pe cifrele exemplului; nu e un trade din +curs). În exemplul ăsta, candela roșie care te-a speriat pe A ar fi fost +exact candela care umplea ordinul pe B.

+

Mediile mobile, în exemplu. Diagrama desenează două medii mobile +ilustrative (SMA 5 și SMA 10; lungimile celor două medii ale indicatorului +nu apar în transcriere). Candela de semnal închide peste amândouă, candela +roșie închide sub amândouă, iar trendul pornește totuși. E un exemplu +construit, nu o statistică: arată doar că secvența asta se poate termina +și așa. Ce spune materialul despre ea e în 2.2.

+

2.2 Ce spune materialul despre fiecare pas

+

Suportul weekly pe un chart de 15 minute. Asta e în material, pentru +pivoți: „de la 15 minute până la 60 inclusive o să modific pivoții în +weekly" (transcripts/03_MODUL_2/03_3_TIMEFRAMES_SET_UP.txt:268-270; +tabelul: 03_MODUL_2/03_timeframes_set_up.md:69-80). Dacă „suportul weekly" +al tău e un pivot weekly (PP, S1, S2), ai pus nivelul corect pe +timeframe-ul corect. Dacă e un suport de structură citit pe graficul weekly +(un low vechi, o zonă), materialul nu spune pe ce timeframe îl tranzacționezi.

+

Semnalul pe 15 min, nivelul pe weekly. Perechile de timeframe ale M2D +sunt: scalping 1×5, 3×15; day 3×15, 5×25, 5×60, 15×60; swing 60×300, +60×daily, daily×weekly; position weekly×monthly +(03_MODUL_2/14_strategia_1_m2d.md:461-466). Niciuna nu leagă weekly de +15 minute. Nu e o regulă încălcată: e o combinație pe care materialul nu o +tratează ca strategie.

+

Cel mai aproape de cazul tău e confirmarea din L10, dar merge invers: +semnalul se formează pe TF mare (daily, cu weekly ca referință), iar +candela de 15 sau 60 min e folosită doar ca să vezi mai devreme dacă se +închide peste nivelul de pe weekly — „poate pe 15 și mai mare precizie" +(L10:176-182). Acolo 15 minute e ceas, nu sursă de semnal.

+

Candela verde mare urmată de roșie mare. Materialul nu are un nume +pentru secvența asta. Ce are e un criteriu de confirmare a trendului după +buy: cele două medii mobile ale indicatorului devin suport, și „după buy, +în viitor candele acestea au rămas deasupra ambelor moving average-uri. +Asta înseamnă confirmarea trendului" (L10:67-68). Și o nuanță: „Aici s-a +închis, de exemplu, sub moving average, dar a continuat" (L10:74). Pentru +semnalul opus, Bogdan spune că ar fi fost „strong cu adevărat dacă această +candle se închidea sub ambele moving average-uri" (L10:112).

+

Deducție, nu regulă: întrebarea utilă la candela roșie e unde se închide +față de cele două medii mobile. Deasupra amândurora = pullback în regim +de buy, criteriul din L10:67-68 e încă îndeplinit. Sub amândouă, la scurt +timp după semnal = criteriul de confirmare al lecției nu mai e îndeplinit; +semnalul arată mai degrabă ca o excepție decât ca o schimbare de trend. +Sub una singură = cazul din L10:74, a continuat. Materialul nu dă un prag +(câte candele, cât de adânc).

+

Ieșirea din frică, înainte de TP1. Neacoperit ca regulă de ieșire. Ce +există e structura în care frica n-ar trebui să decidă: TP1 = 1:1, poziția +în 2-3 tranșe, doar prima iese la TP1, restul pe trail +(17_STRATEGII/fise/m2d.md:74-81; 17_STRATEGII/fise/mp2.md:104-108; +17_STRATEGII/fise/byd_sld.md:73-80). Și workshop-ul despre anxietate +explică mecanismul, fără regulă de ieșire: dacă stopul nu e acceptat +înainte de intrare, fiecare apropiere de el devine frică — „Nu ai de ce să +intri, dacă ți se pare prea mare stop-lossul"; „[anxietatea] e +proporțională cu suma de bani pe care o pierzi" +(transcripts/03_MODUL_2/15_15_WORKSHOP_2_CUM_GESTIONEZI_ANXIETATEA_DUPA_CE_INTRI_IN_TRANZACTII.txt:778-781). +Recomandarea de risc din același workshop: „chiar 0,5 sau 1%" (:1083-1084).

+

Deducție: în cazul tău, varianta A a dat risc mare pe acțiune (candela +verde mare) și flotant de −0.68R pe candela următoare. Dacă mărimea +poziției a fost calculată din stop, suma pierdută la stop era cea +acceptată; dacă nu, frica era proporțională cu o sumă mai mare decât cea +plănuită. Nu știu care din două a fost: verifică în jurnal.

+

2.3 Golurile din material, pentru cazul tău

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GolCe există în loc
perechea nivel weekly / execuție 15 min, ca strategiepivoții weekly pe 15 min (doar nivelul); confirmarea L10 (15 min ca ceas pentru un semnal de TF mare)
numele secvenței verde mare → roșie marecriteriul mediilor mobile din L10:67-74
câte candele aștepți ca să consideri semnalul confirmatnimic; M2D și buy doji au doar fereastra de 3 candele pentru confirmarea doji-ului, nu pentru ce vine după
regula de retest pentru buy momentum ca semnal proaspătpullback-ul la MA, doar pentru semnal ratat (L10:94, 105)
ieșirea înainte de TP1tranșele + workshop-ul de anxietate
+
+

Gotchas

+
    +
  • Candelă închisă, nu spike. Un puseu de câteva secunde nu înseamnă + spargere reală a nivelului; confirmarea se ia pe close + (17_STRATEGII/fise/m2d.md:113; 03_MODUL_2/14_strategia_1_m2d.md:475-477). + Pe 15 min, „close" înseamnă la minutul 15, nu la minutul 4.
  • +
  • Retestul nu e ultimul. Același nivel poate fi retestat a doua, chiar a + treia oară, iar retestul repetat „mai scoate niște retail din tranzacții" + (08_ANALIZA_ZILNICA/03_locul_crimei_si_pullback.md:197-205). Cu varianta + B, faptul că ordinul tău s-a umplut nu garantează că prețul nu mai + coboară o dată. De aceea stopul stă sub structură.
  • +
  • Pullback-ul poate să nu mai vină. „Poate să nu mai facă, poate nu mai + face niciodată." Atunci nu ai trade: nu muți ordinul mai sus, pentru că + un ordin mutat după preț nu mai e retest, e o intrare fără stop logic + (08_ANALIZA_ZILNICA/03_locul_crimei_si_pullback.md:11-12, 300-311).
  • +
+

+ Exemplu construit (fără ticker) — 15 min + + SL 99.90 + + ordin 1/3 101.55 — neumplut + + ordin 1/2 101.25 — neumplut + + A: close 102.15 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + semnal + cel mai jos după semnal: 101.90 + NU muți ordinul aici: sub 104.00 nu e niciun nivel + A: +1.7R · B: 0 (fără poziție) + Exemplu construit, fără ticker. «Poate să nu mai facă, poate nu mai face niciodată.» + Ai ratat trade-ul; aștepți următoarea structură. +

+

Diagrama e un exemplu construit, fără ticker; cifrele nu vin din curs.

+
    +
  • „Risc la jumătate" e aproximativ. Rândul 17 din A2 rezumă varianta B ca + „risc ~jumătate". Pe exemplul din 1.1, intrarea la 1/2 din corp dă 60% din + riscul variantei A (1.35 față de 2.25), nu 50%, pentru că stopul e sub + low-ul a 4 candele, nu la open-ul candelei de semnal. Deducție: cu cât + stopul e mai departe sub open, cu atât câștigul de risc e mai mic.
  • +
  • De unde măsori corpul contează. Bogdan a măsurat pe XLE și de la low, + și de la open: 3,16% față de 2,98%. „Nu e mare diferenta intre ele, ca asta + nu e asa volatil, dar e o diferenta"; pe o candelă foarte mare, contează + mai mult (transcripts/09_Q_and_A/20_25082025.txt:187-192). Alege o + singură convenție și ține-o.
  • +
  • Două feluri de „retest". La buy doji / breakout, retestul e în corpul + candelei (1/3, 1/2, open). La buy momentum ratat, retestul e la mediile + mobile ale indicatorului (L10:105-106). Nu le amesteca pe același trade.
  • +
  • Nu alerga după preț dacă semnalul weekly a plecat deja; aștepți + retestul de 1/3-1/2 din lumânarea mare + (08_ANALIZA_ZILNICA/01_buy_doji_si_strategia_mici.md:825-827).
  • +
+
+

Ce rămâne neconfirmat

+
    +
  1. Câte candele aștepți confirmarea după un buy momentum, înainte să + consideri semnalul valid sau eșuat. Materialul nu dă un prag. Pragurile + DA/NU din sumarul lecției 10 sunt completarea sumarizatorului, nu citat + din curs (03_MODUL_2/10_buysell_momentum_trigger.md:780-789).
  2. +
  3. Numele secvenței candelă verde mare → candelă roșie mare la semnal. + Nu apare în material. Singurul mecanism apropiat e criteriul mediilor + mobile (L10:67-74, 112), interpretat de mine.
  4. +
  5. Ieșirea înainte de TP1, din frică. Nicio regulă. Există structura + (TP1 1:1, tranșe) și mecanismul anxietății (workshop 15), nu o regulă + pentru „ies acum sau nu".
  6. +
  7. Perechea nivel weekly / execuție pe 15 min, ca strategie cu reguli. + Există doar regula de pivoți (15 min folosește pivoți weekly) și + confirmarea din L10, unde 15 min e ceas pentru un semnal de TF mare.
  8. +
  9. Stopul la varianta B pentru buy doji simplu. Explicit doar la MICI + (stop unic sub higher low). Pentru buy doji pe 60 min / daily cu retest, + am presupus stopul de bază (4 candele).
  10. +
  11. Cum intri la retest: ordin limită la nivel, sau aștepți un trigger nou + după atingere. Sumarul locului crimei folosește ambele în exemple + construite (ordin limită la 50.67: 03_locul_crimei_si_pullback.md:296; + trigger după retest la 51.50: :180-181); nu e o regulă rostită.
  12. +
  13. „1 pe 3" la XLE (transcripts/09_Q_and_A/20_25082025.txt:179): + nu reiese dacă e o treime din poziție sau nivelul de 1/3. De aici și + incertitudinea dacă Bogdan intră parțial la semnal și parțial la retest.
  14. +
+
+

Legături

+ + + diff --git a/summaries/17_STRATEGII/A3_intrarea.md b/summaries/17_STRATEGII/A3_intrarea.md index b11ad1f..fcb4bc7 100644 --- a/summaries/17_STRATEGII/A3_intrarea.md +++ b/summaries/17_STRATEGII/A3_intrarea.md @@ -49,7 +49,114 @@ Deci ai de ales între două lucruri pe care nu le poți avea pe amândouă: - **să intri ieftin** (aștepți ca prețul să revină în corpul candelei, plătești riscul de a nu intra deloc). - + + Exemplu construit (fără ticker) — 15 min + + suport 100.00 + + + A: intrare la close 102.15 + + B: 1/3 = 101.55 + + B: 1/2 = 101.25 + + TP1 A 104.40 + + TP1 B (1/2) 102.60 + + TP1 B (1/3) 103.20 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + semnal: candela verde mare + SL 99.90 = low-ul ultimelor 4 candele (comun A și B) + suport atins + + atinge 1/3 + + atinge 1/2 + + + + A + 2.25 + + + + B 1/3 + 1.65 + + + + B 1/2 + 1.35 + risc A 2.25 → 22 acțiuni la 50 $ + risc B 1/3 1.65 → 30 acțiuni + risc B 1/2 1.35 → 37 acțiuni + Exemplu construit, fără ticker. Cifrele nu vin din curs. Risc permis 50 $ (0,5% din 10.000 $). + *Diagrama e un exemplu construit, fără ticker; cifrele nu vin din curs.* @@ -215,7 +322,100 @@ sus, nu mai jos. Reconstruit din descriere; cifrele sunt construite, nu citite din graficul tău. - + + Exemplu construit (fără ticker) — 15 min, suport weekly + + TP1 104.30 (1:1) + + intrare la close 102.10 + + 1/2 = 101.20 (B s-ar fi umplut aici) + + suport weekly 100.00 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ▲ buy momentum + vârf 105.20 = +1.41R + ▲ roșie mare: −0.68R flotant + ieși aici: 102.60 = +0.23R + + SL 99.90 (low 4 candele) + ── SMA 5 / - - SMA 10 ilustrative + Exemplu construit, fără ticker. Prețurile, mediile mobile și ieșirea sunt + ilustrative; secvența (verde mare → roșie mare → trend) e cea descrisă de user. + Varianta B (ordin la 1/2 = 101.20, risc 1.30, TP1 102.50) e aritmetică pe + aceleași cifre, nu un trade din curs. 1/3 din corp = 101.50. + Close-ul roșiei (100.60): sub ambele MA (SMA 5 = 100.83, SMA 10 = 101.34). + *Diagrama e un exemplu construit, fără ticker. Prețurile, mediile mobile și punctul de ieșire sunt ilustrative; forma secvenței e cea descrisă.* @@ -330,7 +530,87 @@ plănuită. Nu știu care din două a fost: verifică în jurnal. un ordin mutat după preț nu mai e retest, e o intrare fără stop logic (`08_ANALIZA_ZILNICA/03_locul_crimei_si_pullback.md:11-12, 300-311`). - + + Exemplu construit (fără ticker) — 15 min + + SL 99.90 + + ordin 1/3 101.55 — neumplut + + ordin 1/2 101.25 — neumplut + + A: close 102.15 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + semnal + cel mai jos după semnal: 101.90 + NU muți ordinul aici: sub 104.00 nu e niciun nivel + A: +1.7R · B: 0 (fără poziție) + Exemplu construit, fără ticker. «Poate să nu mai facă, poate nu mai face niciodată.» + Ai ratat trade-ul; aștepți următoarea structură. + *Diagrama e un exemplu construit, fără ticker; cifrele nu vin din curs.* diff --git a/summaries/index.html b/summaries/index.html index 26e2abd..a255b3d 100644 --- a/summaries/index.html +++ b/summaries/index.html @@ -26,6 +26,6 @@ -

ATM — Sumarizări

Modulul 1

Catalizatori

Modulul 2

Modulul 3

Modulul 4

Analiză zilnică

Q&A

Analiză fundamentală

Strategii

+

ATM — Sumarizări

Modulul 1

Catalizatori

Modulul 2

Modulul 3

Modulul 4

Analiză zilnică

Q&A

Analiză fundamentală

Strategii