diff --git a/gen/strategii/mp2_ansamblu.py b/gen/strategii/mp2_ansamblu.py index aca5334..7820894 100644 --- a/gen/strategii/mp2_ansamblu.py +++ b/gen/strategii/mp2_ansamblu.py @@ -1,139 +1,72 @@ -"""Diagrama de ansamblu MP² — bottom major NVDA (strategii/02_mp2.md, Nivel 0). +"""MP² — tot trade-ul pe o singură diagramă (Nivelul 1 din `02_mp2.md`). -„NVDA — weekly (pre-split 1:10)": downtrend masiv → bază/bottom oct. 2022 → -crossing-ul pivotului weekly (mic) peste cel monthly (mare) → candela de -trigger care închide peste pivotul mic (M+A) → intrare 13.80 → SL la swing -low-ul absolut 10.63 (−23 %) → urcare spre TP 17.25 (+25 %, ~9 săptămâni). +Aceeași serie ca restul capitolului (`mp2_serie.py`): 5 ședințe de câte 7 +bare de 60 de minute. Pe desen: pivotul weekly (mare) ca linie orizontală, +pivotul daily (mic) ca linie în trepte care se recalculează în fiecare zi, +crossing-ul, bara de trigger, stopul, TP1 și ieșirea pe trail. -Cifrele (13.80 / 10.63 / 17.25 / −23 % / +25 %) sunt din -`summaries/04_MODUL_3/04_strategia_2_mp_patrat.md:341-357,435`. -Traseul de preț și cele două linii de pivot sunt schematice: cursul nu dă -valorile pivoților, doar faptul că micul trece deasupra marelui la crossing -(`...:326-335`). - -Rulează: - python3 gen/strategii/mp2_ansamblu.py -Scrie lângă el `mp2_ansamblu.svg`. +Rulare: python3 gen/strategii/mp2_ansamblu.py """ 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 +sys.path.insert(0, str(Path(__file__).parent)) +from svg_candles import Arrow, Chart, Level, Zone # noqa: E402 +import mp2_serie as S # noqa: E402 -OUT = Path(__file__).resolve().parent / "mp2_ansamblu.svg" +OUT = Path(__file__).with_suffix(".svg") +GREEN, RED, BLUE, GRAY, ORANGE = "#188a3e", "#c00", "#1a5fb4", "#777", "#b06000" +W = 720 -GRAY, RED, GREEN, BLUE = "#777", "#c00", "#188a3e", "#1a5fb4" +zi4a, zi4b = S.ZI4 * S.BARE_ZI, (S.ZI4 + 1) * S.BARE_ZI - 1 -# ------------------------------------------------------------------ seria (38 bare) -# 16 bare de downtrend 32.00 -> 11.40 (minimul absolut 10.63 e fitilul barei 15), -# 10 bare de bază/recuperare 11.80 -> 13.80 (bara 25 = intrarea, după M+A), -# 12 bare de urcare 14.10 -> 17.25 (ținta). open-ul = close-ul precedentului. -DOWN = [32.00, 30.80, 29.60, 28.70, 27.40, 26.50, 25.30, 24.20, 23.60, - 22.30, 21.10, 19.90, 18.50, 16.90, 15.20, 11.40] # 0-15 -BASE = [11.80, 12.10, 12.35, 12.20, 12.55, 12.85, 13.05, 13.35, 13.55, - 13.80] # 16-25 -UP = [14.10, 14.45, 14.80, 15.10, 15.45, 15.80, 16.10, 15.90, 16.30, - 16.60, 16.95, 17.25] # 26-37 -CLOSES = DOWN + BASE + UP -assert len(CLOSES) == 38, len(CLOSES) - -CAPIT, ENTRY, LAST = 15, 25, 37 - -# fitile (sus, jos) per bară; bara 15 are fitilul de jos până la minimul absolut -WICKS = ([(0.35, 0.35)] * 14 - + [(0.30, 0.30)] # 14 - + [(0.20, 0.77)] # 15: low = 11.40 - 0.77 = 10.63 - + [(0.30, 0.30)] * 9 # 16-24 - + [(0.25, 0.20)] # 25: candela de intrare - + [(0.30, 0.30)] * 12) # 26-37 -assert len(WICKS) == len(CLOSES) - -VOLS = ([52, 55, 50, 58, 54, 49, 56, 52, 60, 57, 63, 68, 72, 80, 90, 120] # 0-15 - + [100, 72, 60, 55, 58, 62, 66, 70, 78, 95] # 16-25 - + [88, 80, 74, 70, 68, 72, 76, 70, 74, 78, 84, 92]) # 26-37 -assert len(VOLS) == len(CLOSES) - -cds = from_closes(CLOSES, wicks=WICKS, vols=VOLS, start=32.60) - -# ------------------------------------------------- liniile de pivot (trepte) -# Stepped, schematice (cursul nu dă valorile): monthly „mare" se recalculează -# rar, weekly „mic" mai des. Crossing: micul trece deasupra marelui exact pe -# candela de intrare. -PMARE = [31.00] * 10 + [21.00] * 10 + [13.55] * 8 + [13.20] * 10 # monthly -PMIC = ([30.50] * 5 + [29.00] * 5 + [20.00] * 4 + [17.00] * 4 - + [12.60] * 3 + [12.95] * 2 + [13.20] * 2 + [13.70] * 3 - + [14.20] * 4 + [14.60] * 6) # weekly -assert len(PMARE) == len(PMIC) == len(CLOSES) - -# ---------------------------------------------------------- assert-urile din spec -entry = cds[ENTRY].c -sl, tp = 10.63, cds[LAST].c - -assert abs(entry - 13.80) < 0.05 # close-ul intrării == 13.80 -assert abs(sl - 10.63) < 0.05 and sl < entry # SL = swing low absolut, sub entry -assert abs(tp - 17.25) < 0.10 and tp > entry # TP = 17.25, peste entry -# spec: `abs((entry/sl - 1)*100 - 23)`; formula din spec e inversată (dă +29.8, -# nu −23). Pierderea corectă din entry până la SL e (sl/entry - 1), deci o scriu așa: -loss_pct = (sl / entry - 1) * 100 -assert abs(loss_pct + 23) < 1.5, loss_pct # SL ≈ −23 % -assert abs((tp / entry - 1) * 100 - 25) < 1.5 # TP ≈ +25 % -assert abs(min(c.l for c in cds) - 10.63) < 0.01 # minimul absolut al seriei = SL -assert min(c.l for c in cds[-5:-1]) > 10.63 # stopul de 4 bare ar fi mult mai sus -# crossing-ul pivoților, înainte/după candela de intrare -assert all(PMIC[i] < PMARE[i] for i in range(ENTRY - 4, ENTRY)), "mic < mare înainte de intrare" -assert all(PMIC[i] > PMARE[i] for i in range(ENTRY, ENTRY + 4)), "mic > mare după intrare" -assert cds[ENTRY].c > PMIC[ENTRY], "candela de trigger nu închide peste pivotul mic" -assert abs(cds[CAPIT].l - sl) < 1e-9, "fitilul barei 15 nu atinge exact SL-ul" - -levels = [ - Level(13.80, "entry ~13.80 (după M+A)", GREEN, label_at="left"), - Level(sl, "SL swing low absolut 10.63, −23%", RED, label_at="left"), - Level(tp, "TP ~+25% (17.25), ~9 săpt.", BLUE, label_at="left"), -] -marks = [ - Mark(CAPIT, f"minim absolut {sl:.2f}", RED, "below", dy=-6), - Mark(ENTRY, "M+A", BLUE, "above"), -] - -ch = Chart(candles=cds, levels=levels, marks=marks, - scale=17.0, gap=15, body_w=9, left=44, width=720, top=64, vol_h=70, - vol_label="volum", title="NVDA — weekly (pre-split 1:10)", - caption="Bottom oct. 2022: entry ~13.80, −23%, ~+25% în ~9 săpt. " - "Traseu și pivoți construiți (cursul nu dă valorile lor).") +ch = Chart( + candles=S.CDS, + levels=[Level(S.TP1, f"TP1 {S.TP1:.2f} — poziția 1", GREEN, "2 3", "left"), + Level(S.ENTRY, f"intrarea {S.ENTRY:.2f}", "#333", "4 3", "left"), + Level(S.SL, f"stopul {S.SL:.2f}", RED, "6 3", "left"), + Level(S.PPW, f"pivot weekly (mare) {S.PPW:.2f}", GRAY, "8 4", "right")], + zones=[Zone(zi4a, zi4b, "ziua a 4-a: pivotul mic e deja peste cel mare", BLUE)], + arrows=[ + Arrow(S.TRIGGER, f"aici intri: {S.ENTRY:.2f}\nprima bară care ÎNCHIDE\npeste pivotul mic", + where="above", color=GREEN, dx=-118, dy=-6), + Arrow(22, f"stopul: {S.SL:.2f}\nminimul ultimelor {S.BARE_STOP} bare —\n" + f"sub el, cumpărătorii nu mai au controlul", + where="below", price=S.SL, color=RED, dx=126, dy=4), + Arrow(S.I_TP1, f"poziția 1 iese la {S.TP1:.2f}:\nexact cât ai riscat (1:1)", + where="right", price=S.TP1, color=GREEN, dx=78, dy=-40), + Arrow(S.IESIRE, f"poziția 2 iese la {S.IES_PRET:.2f},\nprima închidere sub trail", + where="right", color=ORANGE, dy=44), + ], + scale=17.0, gap=15, body_w=9, left=52, width=W, top=40, vol_h=64, + vol_label="volum", title="Exemplu construit — bare de 60 de minute, 5 ședințe", + caption=f"Crossing: pivotul mic urcă de la {S.PPD[S.ZI4 - 1]:.2f} la {S.PPD[S.ZI4]:.2f}, " + f"peste cel mare ({S.PPW:.2f}) — de-abia de acolo cauți trigger-ul.") svg = ch.render() - - -def step_points(vals: list[float]) -> str: - """Polilinie în trepte: orizontal pe fiecare palier, vertical la schimbare.""" - pts: list[tuple[float, float]] = [] - for i, v in enumerate(vals): - x, y = ch._cx(i), ch._y(v) - if i == 0: - pts.append((x, y)) - elif v != vals[i - 1]: - pts.append((x, ch._y(vals[i - 1]))) # orizontal până la bara nouă - pts.append((x, y)) # salt vertical la nivelul nou - else: - pts.append((x, y)) - return " ".join(f"{x:.1f},{y:.1f}" for x, y in pts) - - -# injectate imediat după tag-ul de deschidere => desenate în spatele candelelor +off = S.offset(svg, ch) +y_ppd = ch._y(S.PPD[-1]) + off inject = [ - f'', - f'', - f'' - f'pivot weekly (mic)', - f'' - f'pivot monthly (mare)', + f'', + f'' + f'pivot daily (mic)', ] -i = svg.index(">") + 1 -svg = svg[:i] + "\n " + "\n ".join(inject) + svg[i:] +# marcajul crossing-ului: treapta verticală a pivotului mic, între ziua 3 și 4 +xc = ch._cx(zi4a) - 7.5 +y_de, y_la = ch._y(S.PPD[S.ZI4 - 1]) + off, ch._y(S.PPD[S.ZI4]) + off +inject += [ + f'', + f'crossing', +] +svg = S.injecteaza(svg, inject) -assert svg.count("\n\n") == 0, "linie goală în SVG rupe blocul din markdown" -OUT.write_text(svg) -print(f"scris {OUT.name}: {len(cds)} candele, entry {entry:.2f}, " - f"SL {sl:.2f} ({loss_pct:+.1f}%), TP {tp:.2f} " - f"({(tp/entry - 1) * 100:+.1f}%), crossing la bara {ENTRY}") +assert y_de > y_la, "crossing-ul nu urcă pe desen" +assert abs((ch._y(S.SL) - ch._y(S.ENTRY)) - (ch._y(S.ENTRY) - ch._y(S.TP1))) < 0.01, \ + "1R în sus nu e desenat cât 1R în jos" +h = float(svg.split('viewBox="0 0 ')[1].split('"')[0].split()[1]) +w = float(svg.split('viewBox="0 0 ')[1].split()[0]) +S.scrie(OUT, svg, w, h) diff --git a/gen/strategii/mp2_ansamblu.svg b/gen/strategii/mp2_ansamblu.svg index e602d3d..52c528d 100644 --- a/gen/strategii/mp2_ansamblu.svg +++ b/gen/strategii/mp2_ansamblu.svg @@ -1,132 +1,143 @@ - - - - pivot weekly (mic) - pivot monthly (mare) - NVDA — weekly (pre-split 1:10) - - entry ~13.80 (după M+A) - - SL swing low absolut 10.63, −23% - - TP ~+25% (17.25), ~9 săpt. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - volum - minim absolut 10.63 - M+A - Bottom oct. 2022: entry ~13.80, −23%, ~+25% în ~9 săpt. Traseu și pivoți construiți (cursul nu dă valorile lor). + + + pivot daily (mic) + + crossing + Exemplu construit — bare de 60 de minute, 5 ședințe + + ziua a 4-a: pivotul mic e deja peste cel mare + + TP1 598.00 — poziția 1 + + intrarea 592.00 + + stopul 586.00 + + pivot weekly (mare) 584.00 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + volum + + + aici intri: 592.00 + prima bară care ÎNCHIDE + peste pivotul mic + + + stopul: 586.00 + minimul ultimelor 4 bare — + sub el, cumpărătorii nu mai au controlul + + + poziția 1 iese la 598.00: + exact cât ai riscat (1:1) + + + poziția 2 iese la 599.80, + prima închidere sub trail + Crossing: pivotul mic urcă de la 583.20 la 587.13, peste cel mare (584.00) — de-abia de acolo cauți trigger-ul. \ No newline at end of file diff --git a/gen/strategii/mp2_aplus.py b/gen/strategii/mp2_aplus.py index 9222ec9..e2d91df 100644 --- a/gen/strategii/mp2_aplus.py +++ b/gen/strategii/mp2_aplus.py @@ -186,7 +186,7 @@ LEGENDA = [ "Legendă: ce separă cele două sunt nivelurile independente dedesubte " "(suport quarterly + double bottom + neckline),", "nu un filtru pus în scaner. Panoul din dreapta e exemplu construit, nu date reale.", - "Surse A+: 09_QA/01_2026-08-25.md:389-394, 485-490, 501-507.", + "Cifrele A+ sunt din material; trimiterile stau în fișa de surse a capitolului.", ] wrapper = ( diff --git a/gen/strategii/mp2_aplus.svg b/gen/strategii/mp2_aplus.svg index 6693d32..e9cb2fb 100644 --- a/gen/strategii/mp2_aplus.svg +++ b/gen/strategii/mp2_aplus.svg @@ -218,4 +218,4 @@ volum crossing (mijloc) exemplu construit, nu date reale — SL nu stă pe niciun pivot -Legendă: ce separă cele două sunt nivelurile independente dedesubte (suport quarterly + double bottom + neckline),nu un filtru pus în scaner. Panoul din dreapta e exemplu construit, nu date reale.Surse A+: 09_QA/01_2026-08-25.md:389-394, 485-490, 501-507. \ No newline at end of file +Legendă: ce separă cele două sunt nivelurile independente dedesubte (suport quarterly + double bottom + neckline),nu un filtru pus în scaner. Panoul din dreapta e exemplu construit, nu date reale.Cifrele A+ sunt din material; trimiterile stau în fișa de surse a capitolului. \ No newline at end of file diff --git a/gen/strategii/mp2_bottom.py b/gen/strategii/mp2_bottom.py new file mode 100644 index 0000000..4fc61a9 --- /dev/null +++ b/gen/strategii/mp2_bottom.py @@ -0,0 +1,142 @@ +"""MP² la un bottom major — NVDA (strategii/02_mp2.md, Nivelul 3). + +Excepția de la regula stopului: la un bottom/top major stopul nu se +măsoară pe 4 candele, ci la swing low-ul absolut al mișcării. + +„NVDA — weekly (pre-split 1:10)": downtrend masiv → bază/bottom oct. 2022 → +crossing-ul pivotului weekly (mic) peste cel monthly (mare) → candela de +trigger care închide peste pivotul mic (M+A) → intrare 13.80 → SL la swing +low-ul absolut 10.63 (−23 %) → urcare spre TP 17.25 (+25 %, ~9 săptămâni). + +Cifrele (13.80 / 10.63 / 17.25 / −23 % / +25 %) sunt din +`summaries/04_MODUL_3/04_strategia_2_mp_patrat.md:341-357,435`. +Traseul de preț și cele două linii de pivot sunt schematice: cursul nu dă +valorile pivoților, doar faptul că micul trece deasupra marelui la crossing +(`...:326-335`). + +Rulează: + python3 gen/strategii/mp2_bottom.py +Scrie lângă el `mp2_bottom.svg`. +""" +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 / "mp2_bottom.svg" + +GRAY, RED, GREEN, BLUE = "#777", "#c00", "#188a3e", "#1a5fb4" + +# ------------------------------------------------------------------ seria (38 bare) +# 16 bare de downtrend 32.00 -> 11.40 (minimul absolut 10.63 e fitilul barei 15), +# 10 bare de bază/recuperare 11.80 -> 13.80 (bara 25 = intrarea, după M+A), +# 12 bare de urcare 14.10 -> 17.25 (ținta). open-ul = close-ul precedentului. +DOWN = [32.00, 30.80, 29.60, 28.70, 27.40, 26.50, 25.30, 24.20, 23.60, + 22.30, 21.10, 19.90, 18.50, 16.90, 15.20, 11.40] # 0-15 +BASE = [11.80, 12.10, 12.35, 12.20, 12.55, 12.85, 13.05, 13.35, 13.55, + 13.80] # 16-25 +UP = [14.10, 14.45, 14.80, 15.10, 15.45, 15.80, 16.10, 15.90, 16.30, + 16.60, 16.95, 17.25] # 26-37 +CLOSES = DOWN + BASE + UP +assert len(CLOSES) == 38, len(CLOSES) + +CAPIT, ENTRY, LAST = 15, 25, 37 + +# fitile (sus, jos) per bară; bara 15 are fitilul de jos până la minimul absolut +WICKS = ([(0.35, 0.35)] * 14 + + [(0.30, 0.30)] # 14 + + [(0.20, 0.77)] # 15: low = 11.40 - 0.77 = 10.63 + + [(0.30, 0.30)] * 9 # 16-24 + + [(0.25, 0.20)] # 25: candela de intrare + + [(0.30, 0.30)] * 12) # 26-37 +assert len(WICKS) == len(CLOSES) + +VOLS = ([52, 55, 50, 58, 54, 49, 56, 52, 60, 57, 63, 68, 72, 80, 90, 120] # 0-15 + + [100, 72, 60, 55, 58, 62, 66, 70, 78, 95] # 16-25 + + [88, 80, 74, 70, 68, 72, 76, 70, 74, 78, 84, 92]) # 26-37 +assert len(VOLS) == len(CLOSES) + +cds = from_closes(CLOSES, wicks=WICKS, vols=VOLS, start=32.60) + +# ------------------------------------------------- liniile de pivot (trepte) +# Stepped, schematice (cursul nu dă valorile): monthly „mare" se recalculează +# rar, weekly „mic" mai des. Crossing: micul trece deasupra marelui exact pe +# candela de intrare. +PMARE = [31.00] * 10 + [21.00] * 10 + [13.55] * 8 + [13.20] * 10 # monthly +PMIC = ([30.50] * 5 + [29.00] * 5 + [20.00] * 4 + [17.00] * 4 + + [12.60] * 3 + [12.95] * 2 + [13.20] * 2 + [13.70] * 3 + + [14.20] * 4 + [14.60] * 6) # weekly +assert len(PMARE) == len(PMIC) == len(CLOSES) + +# ---------------------------------------------------------- assert-urile din spec +entry = cds[ENTRY].c +sl, tp = 10.63, cds[LAST].c + +assert abs(entry - 13.80) < 0.05 # close-ul intrării == 13.80 +assert abs(sl - 10.63) < 0.05 and sl < entry # SL = swing low absolut, sub entry +assert abs(tp - 17.25) < 0.10 and tp > entry # TP = 17.25, peste entry +# spec: `abs((entry/sl - 1)*100 - 23)`; formula din spec e inversată (dă +29.8, +# nu −23). Pierderea corectă din entry până la SL e (sl/entry - 1), deci o scriu așa: +loss_pct = (sl / entry - 1) * 100 +assert abs(loss_pct + 23) < 1.5, loss_pct # SL ≈ −23 % +assert abs((tp / entry - 1) * 100 - 25) < 1.5 # TP ≈ +25 % +assert abs(min(c.l for c in cds) - 10.63) < 0.01 # minimul absolut al seriei = SL +assert min(c.l for c in cds[-5:-1]) > 10.63 # stopul de 4 bare ar fi mult mai sus +# crossing-ul pivoților, înainte/după candela de intrare +assert all(PMIC[i] < PMARE[i] for i in range(ENTRY - 4, ENTRY)), "mic < mare înainte de intrare" +assert all(PMIC[i] > PMARE[i] for i in range(ENTRY, ENTRY + 4)), "mic > mare după intrare" +assert cds[ENTRY].c > PMIC[ENTRY], "candela de trigger nu închide peste pivotul mic" +assert abs(cds[CAPIT].l - sl) < 1e-9, "fitilul barei 15 nu atinge exact SL-ul" + +levels = [ + Level(13.80, "entry ~13.80 (după M+A)", GREEN, label_at="left"), + Level(sl, "SL swing low absolut 10.63, −23%", RED, label_at="left"), + Level(tp, "TP ~+25% (17.25), ~9 săpt.", BLUE, label_at="left"), +] +marks = [ + Mark(CAPIT, f"minim absolut {sl:.2f}", RED, "below", dy=-6), + Mark(ENTRY, "M+A", BLUE, "above"), +] + +ch = Chart(candles=cds, levels=levels, marks=marks, + scale=17.0, gap=15, body_w=9, left=44, width=720, top=64, vol_h=70, + vol_label="volum", title="NVDA — weekly (pre-split 1:10)", + caption="Bottom oct. 2022: entry ~13.80, −23%, ~+25% în ~9 săpt. " + "Traseu și pivoți construiți (cursul nu dă valorile lor).") + +svg = ch.render() + + +def step_points(vals: list[float]) -> str: + """Polilinie în trepte: orizontal pe fiecare palier, vertical la schimbare.""" + pts: list[tuple[float, float]] = [] + for i, v in enumerate(vals): + x, y = ch._cx(i), ch._y(v) + if i == 0: + pts.append((x, y)) + elif v != vals[i - 1]: + pts.append((x, ch._y(vals[i - 1]))) # orizontal până la bara nouă + pts.append((x, y)) # salt vertical la nivelul nou + else: + pts.append((x, y)) + return " ".join(f"{x:.1f},{y:.1f}" for x, y in pts) + + +# injectate imediat după tag-ul de deschidere => desenate în spatele candelelor +inject = [ + f'', + f'', + f'' + f'pivot weekly (mic)', + f'' + f'pivot monthly (mare)', +] +i = svg.index(">") + 1 +svg = svg[:i] + "\n " + "\n ".join(inject) + svg[i:] + +assert svg.count("\n\n") == 0, "linie goală în SVG rupe blocul din markdown" +OUT.write_text(svg) +print(f"scris {OUT.name}: {len(cds)} candele, entry {entry:.2f}, " + f"SL {sl:.2f} ({loss_pct:+.1f}%), TP {tp:.2f} " + f"({(tp/entry - 1) * 100:+.1f}%), crossing la bara {ENTRY}") diff --git a/gen/strategii/mp2_bottom.svg b/gen/strategii/mp2_bottom.svg new file mode 100644 index 0000000..22245f3 --- /dev/null +++ b/gen/strategii/mp2_bottom.svg @@ -0,0 +1,132 @@ + + + + pivot weekly (mic) + pivot monthly (mare) + NVDA — weekly (pre-split 1:10) + + entry ~13.80 (după M+A) + + SL swing low absolut 10.63, −23% + + TP ~+25% (17.25), ~9 săpt. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + volum + minim absolut 10.63 + M+A + Bottom oct. 2022: entry ~13.80, −23%, ~+25% în ~9 săpt. Traseu și pivoți construiți (cursul nu dă valorile lor). + \ No newline at end of file diff --git a/gen/strategii/mp2_crossing.svg b/gen/strategii/mp2_crossing.svg index 8ccd8cd..7506a78 100644 --- a/gen/strategii/mp2_crossing.svg +++ b/gen/strategii/mp2_crossing.svg @@ -1,13 +1,13 @@ - - pivot daily (cel MIC) + + pivot daily (cel MIC) DA — crossing (+2) pivot weekly (cel MARE) 62.00 - - crossing: 61.70 → 62.20 - intrare: trigger + + crossing: 61.70 → 62.20 + intrare: trigger @@ -54,8 +54,8 @@ - - pivot daily (cel MIC) + + pivot daily (cel MIC) NU — continuare/buy the dip (+1) pivot weekly (cel MARE) 62.00 diff --git a/gen/strategii/mp2_iesire.py b/gen/strategii/mp2_iesire.py new file mode 100644 index 0000000..9d8e636 --- /dev/null +++ b/gen/strategii/mp2_iesire.py @@ -0,0 +1,70 @@ +"""MP² — ieșirea în două poziții (Pasul 6 din `02_mp2.md`). + +Aceeași serie, de la bara dinaintea trigger-ului încolo. Poziția 1 iese la +TP1 (1:1). Poziția 2 nu are țintă fixă: merge pe bull trail — low-ul +fiecărei bare care face un maxim nou — și iese la prima ÎNCHIDERE sub linie. +Între timp, când prețul a făcut 60 % din drumul spre TP1, stopul amândurora +urcă la break-even, adică la prețul de intrare. + +Rulare: python3 gen/strategii/mp2_iesire.py +""" +import re +import sys +from pathlib import Path + +sys.path.insert(0, "/workspace/atm-curs-dl") +sys.path.insert(0, str(Path(__file__).parent)) +from svg_candles import Arrow, Chart, Level # noqa: E402 +import mp2_serie as S # noqa: E402 + +OUT = Path(__file__).with_suffix(".svg") +RED, BLUE, GRAY, GREEN, ORANGE = "#c00", "#1a5fb4", "#777", "#188a3e", "#b06000" +W, A = 720, 21 + +cds = S.CDS[A:] +# linia de trail contează pentru poziția 2, adică de la TP1 încolo +trail = [v if i + A >= S.I_TP1 else None for i, v in enumerate(S.TRAIL[A:])] +i_tp1, i_be, i_out, i_tr = S.I_TP1 - A, S.I_BE - A, S.IESIRE - A, S.TRIGGER - A +R_OUT = round((S.IES_PRET - S.ENTRY) / S.R, 2) + +assert trail[i_out] is not None and cds[i_out].c < trail[i_out] +assert cds[i_be].h >= S.BE and cds[i_be - 1].h < S.BE, "BE atins în altă bară" +assert S.IES_PRET > S.TP1 > S.BE > S.ENTRY + +ch = Chart( + candles=cds, + levels=[Level(S.TP1, f"TP1 {S.TP1:.2f} = intrarea + 1R", GREEN, "2 3", "left"), + Level(S.BE, f"{S.BE:.2f} = 60 % din drum", ORANGE, "1 3", "left"), + Level(S.ENTRY, f"intrarea {S.ENTRY:.2f}", "#333", "4 3", "left"), + Level(S.SL, f"stopul inițial {S.SL:.2f}", RED, "6 3", "right")], + arrows=[ + Arrow(i_tp1, f"poziția 1 (jumătate) iese la {S.TP1:.2f}\nexact cât riscai: 1:1, " + f"fără discuție", + where="above", price=S.TP1, color=GREEN, dx=-110, dy=-8), + Arrow(i_out, f"poziția 2 iese la {S.IES_PRET:.2f}\nprima ÎNCHIDERE sub linia de trail " + f"({trail[i_out]:.2f}),\nnu primul fitil care o atinge = +{R_OUT:.2f}R", + where="below", color=ORANGE, dx=-74, dy=34), + ], + scale=17.0, gap=32, body_w=15, left=58, width=W, top=40, + title="Pasul 6 — o jumătate la țintă fixă, cealaltă pe trail", + caption="Linia portocalie = bull trail: low-ul ultimei bare cu maxim nou. " + f"Rezultat: +1R pe o jumătate, +{R_OUT:.2f}R pe cealaltă.") + +svg = ch.render() +off = S.offset(svg, ch) +inject = [ + f'', +] +# bara la care stopul urcă la break-even +x = ch._cx(i_be) +inject.append(f'') +inject.append(f'stopul urcă la break-even') +svg = S.injecteaza(svg, inject) + +h = float(re.search(r'viewBox="0 0 [\d.]+ ([\d.]+)"', svg).group(1)) +w = float(re.search(r'viewBox="0 0 ([\d.]+)', svg).group(1)) +S.scrie(OUT, svg, w, h) diff --git a/gen/strategii/mp2_iesire.svg b/gen/strategii/mp2_iesire.svg new file mode 100644 index 0000000..5b734d3 --- /dev/null +++ b/gen/strategii/mp2_iesire.svg @@ -0,0 +1,52 @@ + + + + stopul urcă la break-even + Pasul 6 — o jumătate la țintă fixă, cealaltă pe trail + + TP1 598.00 = intrarea + 1R + + 595.60 = 60 % din drum + + intrarea 592.00 + + stopul inițial 586.00 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + poziția 1 (jumătate) iese la 598.00 + exact cât riscai: 1:1, fără discuție + + + poziția 2 iese la 599.80 + prima ÎNCHIDERE sub linia de trail (600.75), + nu primul fitil care o atinge = +1.30R + Linia portocalie = bull trail: low-ul ultimei bare cu maxim nou. Rezultat: +1R pe o jumătate, +1.30R pe cealaltă. + \ No newline at end of file diff --git a/gen/strategii/mp2_perechi_tf.py b/gen/strategii/mp2_perechi_tf.py new file mode 100644 index 0000000..e815d8a --- /dev/null +++ b/gen/strategii/mp2_perechi_tf.py @@ -0,0 +1,302 @@ +#!/usr/bin/env python3 +"""MP² — perechea de timeframe-uri, cu lupă (Pasul 1 din `02_mp2.md`). + +Stânga: graficul daily, unde trăiesc cei doi pivoți și unde se vede +crossing-ul. Dreapta: graficul de 60 de minute, unde intri. + +Graficul din dreapta NU e o serie care vine după cel din stânga: e +**descompunerea reală** a ultimelor două candele daily. O ședință = 7 bare +de 60 de minute (9:30-16:00 înseamnă 6 ore și jumătate, deci ultima bară a +zilei e de 30 de minute), cu același open, același close, același maxim și +același minim — verificat bară cu bară prin assert. Sursa de adevăr e seria +fină din `mp2_serie.py`; candelele daily se calculează din ea prin agregare. + +Caseta punctată de pe panoul mare arată exact ce bucată e mărită; ghidajele +îi leagă colțurile de cadrul mic; cele două linii de pivot sunt trasate pe +ambele panouri, cu același număr de ambele părți, iar conectorul subțire +leagă cele două înălțimi ale aceluiași preț. Nu se pot alinia: scările au +pante diferite, e o lupă, nu o eroare. + +Rulare: python3 gen/strategii/mp2_perechi_tf.py +""" +import sys +from pathlib import Path + +sys.path.insert(0, "/workspace/atm-curs-dl") +sys.path.insert(0, str(Path(__file__).parent)) +import mp2_serie as S # noqa: E402 + +OUT = Path(__file__).with_suffix(".svg") +W, PLOT_H = 720, 190 +GREEN, RED, GRAY, INK, BLUE, ORANGE = "#188a3e", "#c00", "#888", "#333", "#1a5fb4", "#b06000" +LINK = "#aaa" +BX0, BGAP = 96, 22 # panoul daily +SX0, SGAP = 374, 15 # panoul de 60 min +BODY_W = 9 +FRAME_L = SX0 - 9 +COL_X = 586 +MIDX = FRAME_L - 20 # granița stânga/dreapta pentru verificări +PAD = 0.06 # aer sus/jos pe panoul mic +TOP = 86 + +# --- zilele dinaintea ferestrei fine, ca daily (open = close precedent) ------- +DOWN_C = [634.00, 626.00, 629.00, 618.00, 610.00, 612.00, 598.00, 585.00] +DOWN_W = 2.5 +ZI_FINA = 2 # câte ședințe sunt desfăcute în panoul mic + + +def daily_din_closes(closes, start, w): + out, o = [], start + for c in closes: + out.append((o, max(o, c) + w, min(o, c) - w, c)) + o = c + return out + + +A_FIN, B_FIN = (S.ZI4 + 1 - ZI_FINA) * S.BARE_ZI, (S.ZI4 + 1) * S.BARE_ZI +zile = S.zilnice(S.CDS) +fine = [(c.o, c.h, c.l, c.c) for c in S.CDS[A_FIN:B_FIN]] +zoom = [(z.o, z.h, z.l, z.c) for z in zile[S.ZI4 + 1 - ZI_FINA:S.ZI4 + 1]] +base = (daily_din_closes(DOWN_C, 640.00, DOWN_W) + + [(z.o, z.h, z.l, z.c) for z in zile[:S.ZI4 + 1 - ZI_FINA]]) +big = base + zoom +PPD_ZI = [None] * len(DOWN_C) + S.PPD[:S.ZI4 + 1] # pivotul mic, pe candele daily +PPD_FIN = S.PPD_BARA[A_FIN:B_FIN] +N_BASE = len(base) + +# --- ce afirmă desenul, verificat pe serii ------------------------------------ +for nume, bars in (("daily", big), ("60 min", fine)): + for i, (o, h, l, c) in enumerate(bars): + assert h >= max(o, c) and l <= min(o, c), f"{nume}[{i}] h/l incoerent" + if i: + assert abs(o - bars[i - 1][3]) < 1e-9, f"{nume}[{i}] open != close precedent" +assert len(fine) == S.BARE_ZI * ZI_FINA +# 1. descompunerea e reală: fiecare candelă daily mărită = 7 bare de 60 min +for j, (o, h, l, c) in enumerate(zoom): + part = fine[j * S.BARE_ZI:(j + 1) * S.BARE_ZI] + assert (o, c) == (part[0][0], part[-1][3]) + assert h == max(b[1] for b in part) and l == min(b[2] for b in part) +# 2. lupa se leagă de restul graficului mare +assert abs(fine[0][0] - base[-1][3]) < 1e-9, "open-ul primei bare fine != close-ul ultimei daily" +# 3. trigger-ul cade în a doua candelă daily mărită, nu în prima +I_TRIG = S.TRIGGER - A_FIN +assert I_TRIG // S.BARE_ZI == 1, "trigger-ul nu cade în ultima candelă daily" +assert PPD_FIN[I_TRIG] == S.PPD[S.ZI4] > S.PPW > PPD_FIN[0], "crossing-ul nu e în fereastră" +# 4. trade-ul pe TF-ul mic +ENTRY, SL, R, TP1 = S.ENTRY, S.SL, S.R, S.TP1 +assert SL == min(b[2] for b in fine[I_TRIG - S.BARE_STOP + 1:I_TRIG + 1]) +PCT = R / ENTRY * 100 +# 5. același setup, dacă ai fi intrat pe daily: alt trigger, alt stop +B_ENTRY = big[-1][3] # close-ul candelei daily de trigger +B_SL = min(b[2] for b in big[-S.BARE_STOP:]) # low-ul ultimelor 4 candele daily +B_R = round(B_ENTRY - B_SL, 2) +B_PCT = B_R / B_ENTRY * 100 +assert B_SL == S.SWING_LOW == 580.00 and B_R == 18.20, (B_SL, B_R) +RAPORT = B_PCT / PCT +assert 2.9 <= RAPORT <= 3.1, f"raportul stopurilor e {RAPORT:.2f}" +# 6. cadrul mic cuprinde și pivotul mare, ca nivelul comun să aibă unde sta +ZLO, ZHI = min(b[2] for b in fine), max(b[1] for b in fine) +assert ZLO == min(b[2] for b in zoom) and ZHI == max(b[1] for b in zoom) +assert S.PPW < ZLO, "pivotul mare e în interiorul barelor mici; verifică scara" + +lo_, hi_ = min(ZLO, S.PPW), ZHI +pad = PAD * (hi_ - lo_) +LO, HI = lo_ - pad, hi_ + pad + +bmax = max(b[1] for b in big) +bmin = min(min(b[2] for b in big), B_SL, LO) +bs, ss = PLOT_H / (bmax - bmin), PLOT_H / (HI - LO) +assert ss / bs > 2.5, f"lupa mărește de doar {ss / bs:.1f} ori" + + +def yb(p): + return TOP + (bmax - p) * bs + + +def ys(p): + return TOP + (HI - p) * ss + + +# --- desen -------------------------------------------------------------------- +out, LABELS = [], [] + + +def text(x, y, s, fill=INK, anchor="start", bold=False, size=12): + st = [f"font-size:{size}px"] + (["font-weight:bold"] if bold else []) + a = f' text-anchor="{anchor}"' if anchor != "start" else "" + w = len(s) * (5.7 if size >= 12 else size * 0.5) + x0 = x if anchor == "start" else (x - w / 2 if anchor == "middle" else x - w) + assert 4 <= x0 and x0 + w <= W - 4, f"text iese din pânză: {s!r} ({x0:.0f}..{x0 + w:.0f})" + LABELS.append((x0, x0 + w, y, s)) + out.append(f'{s}') + + +def hline(x1, x2, y, color, dash, width=1.5): + out.append(f'') + + +def line(x1, y1, x2, y2, color, dash="", width=1.2, marker=""): + d = f' stroke-dasharray="{dash}"' if dash else "" + mk = f' marker-end="url(#{marker})"' if marker else "" + out.append(f'') + + +def rect(x0, y0, x1, y1, color, fill_op=0.10, dash=""): + d = f' stroke-dasharray="{dash}"' if dash else "" + out.append(f'') + + +def candles(bars, x0, gap, yf): + for i, (o, h, l, c) in enumerate(bars): + cx = x0 + i * gap + line(cx, yf(h), cx, yf(l), "#1a1a1a", width=1.2) + top_ = yf(max(o, c)) + out.append(f'') + + +def trepte(vals, x0, gap, yf): + pts = [] + for i, v in enumerate(vals): + if v is None: + continue + x, y = x0 + i * gap, yf(v) + if pts and vals[i - 1] is not None and v != vals[i - 1]: + pts.append((x, yf(vals[i - 1]))) + pts.append((x, y)) + return " ".join(f"{x:.1f},{y:.1f}" for x, y in pts) + + +def bracket(x, ya, yb_, color, label, side="right", below=False): + tip = x + 5 if side == "right" else x - 5 + out.append(f'') + if below: + text((x + tip) / 2, max(ya, yb_) + 14, label, fill=color, anchor="middle", bold=True, size=11) + else: + text(tip + 4, (ya + yb_) / 2 + 4, label, fill=color, bold=True, size=11) + + +def stack(items, x_line): + y_prev = None + for y, lines, fill in sorted(items, key=lambda t: t[0]): + y_lab = y if y_prev is None or y >= y_prev + 15 else y_prev + 15 + out.append(f'') + for j, s in enumerate(lines): + text(COL_X, y_lab + j * 13, s, fill=fill, size=10) + y_prev = y_lab + (len(lines) - 1) * 13 + + +out.append('') +text(20, 22, "Pasul 1 — perechea de timeframe-uri: pivoții stau pe daily, intrarea se face pe 60 min", + bold=True, size=13) +text(20, 40, "Graficul din dreapta e aceeași bucată de piață, mărită: fiecare candelă daily din " + "caseta punctată", fill="#555", size=11) +text(20, 54, f"e desfăcută în {S.BARE_ZI} bare de 60 de minute (ședința are 6 ore și jumătate, " + f"deci ultima bară a zilei e de 30 min).", fill="#555", size=11) +text(20, TOP - 8, "daily: direcția", fill="#555", size=11) +text(FRAME_L, TOP - 8, f"60 min: ultimele {ZI_FINA} candele daily, desfăcute", fill="#555", size=11) + +# ---- panoul daily ------------------------------------------------------------ +lx0, lx1 = BX0 + N_BASE * BGAP - 9, BX0 + (len(big) - 1) * BGAP + 10 +ly0, ly1 = yb(HI), yb(LO) +rect(lx0, ly0, lx1, ly1, BLUE, fill_op=0.06, dash="4 3") +hline(BX0 - 18, lx1, yb(S.PPW), GRAY, "8 4") +out.append(f'') +candles(big, BX0, BGAP, yb) +text(BX0 - 8, yb(S.PPW) + 14, f"pivot weekly (mare) {S.PPW:.2f}", fill="#666", size=11) +text(BX0 + 2 * BGAP, yb(bmin) + 16, "pivot daily (mic), în trepte", fill=BLUE, size=11) +# stopul, dacă ai fi măsurat pe daily +bracket(34, yb(B_ENTRY), yb(B_SL), RED, f"stop {B_PCT:.2f} %".replace(".", ","), below=True) + +# ---- ghidajele de lupă ------------------------------------------------------- +guides = [((lx1, ly0), (FRAME_L, TOP)), ((lx1, ly1), (FRAME_L, TOP + PLOT_H))] +for a_, b_ in guides: + line(a_[0], a_[1], b_[0], b_[1], BLUE, dash="5 3", width=1.1) + +# ---- conectorul nivelului comun ---------------------------------------------- +# Aceeași linie de pivot weekly cade la înălțimi diferite: scările au pante +# diferite. Conectorul le leagă; „același preț" e scris o singură dată, în cot. +ycb, ycs = yb(S.PPW), ys(S.PPW) +mid = (lx1 + FRAME_L) / 2 +out.append(f'') +text(mid + 4, (ycb + ycs) / 2 + 4, "același preț", fill="#999", size=10) + +# ---- panoul de 60 min -------------------------------------------------------- +frame_r = SX0 + (len(fine) - 1) * SGAP + 9 +rect(FRAME_L, TOP, frame_r, TOP + PLOT_H, BLUE, fill_op=0.03) +y_e, y_sl, y_tp = ys(ENTRY), ys(SL), ys(TP1) +assert abs((y_sl - y_e) - (y_e - y_tp)) < 1e-6, "1R în sus nu e desenat cât 1R în jos" +assert TOP + PLOT_H - ys(S.PPW) > 6, "linia pivotului mare e lipită de marginea cadrului" +# stopul e minimul ULTIMELOR 4 bare, nu al întregii ferestre: ziua dinainte +# coboară mai jos, iar acele bare nu intră la socoteală +assert y_sl < ys(ZLO), "stopul de 4 bare ar trebui să stea peste minimul ferestrei" +# zona verde peste bara de trigger +sx0, sx1 = SX0 + I_TRIG * SGAP - 9, SX0 + I_TRIG * SGAP + 9 +rect(sx0, y_e - 6, sx1, ys(ZLO) + 4, GREEN) +line((sx0 + sx1) / 2, TOP + PLOT_H, (sx0 + sx1) / 2, TOP + PLOT_H + 26, GREEN, width=1) +text((sx0 + sx1) / 2, TOP + PLOT_H + 38, "închide peste pivotul mic: aici intri", fill=GREEN, + anchor="middle", bold=True, size=11) +hline(FRAME_L, frame_r, ys(S.PPW), GRAY, "8 4") +out.append(f'') +hline(FRAME_L, frame_r, y_e, GREEN, "6 3") +hline(FRAME_L, frame_r, y_sl, RED, "6 3") +hline(FRAME_L, frame_r, y_tp, GREEN, "2 3") +candles(fine, SX0, SGAP, ys) +stack([(y_tp + 4, [f"TP1 {TP1:.2f}"], GREEN), + (y_e + 4, [f"intrare {ENTRY:.2f}"], GREEN), + (y_sl + 4, [f"stop {SL:.2f}", f"minimul ultimelor", f"{S.BARE_STOP} bare de 60 min"], RED), + (ys(S.PPW) + 4, [f"pivot weekly", f"(mare) {S.PPW:.2f}"], "#666")], frame_r) +kx = SX0 + (I_TRIG + 1) * SGAP + BODY_W / 2 + 1 +bracket(kx, y_e, y_sl, RED, f"stop {PCT:.2f} %".replace(".", ",")) + +# ---- de ce merită lupa ------------------------------------------------------- +ya = TOP + PLOT_H + 62 +line(34, ya, kx, ya, RED, width=1.6, marker="pt") +text((34 + kx) / 2, ya + 17, f"același setup, stop de {RAPORT:.1f} ori mai mic".replace(".", ","), + fill=RED, anchor="middle", bold=True, size=11) +text((34 + kx) / 2, ya + 31, f"→ de {RAPORT:.1f} ori mai multe acțiuni la același risc în bani" + .replace(".", ","), fill=RED, anchor="middle", bold=True, size=11) +text(20, ya + 52, f"Pe daily ai fi intrat la close-ul zilei ({B_ENTRY:.2f}) cu stopul sub " + f"minimul ultimelor {S.BARE_STOP} zile ({B_SL:.2f}).", fill="#555", size=11) +text(20, ya + 66, "Pe 60 de minute vezi unde s-a oprit coborârea, deci ai de unde măsura un stop " + "mult mai strâns.", fill="#555", size=11) + +# --- fiecare preț stă pe panoul lui, cu excepția nivelului comun -------------- +COMUN = f"{S.PPW:.2f}" +MARE = {"B_ENTRY": B_ENTRY, "B_SL": B_SL} +MIC = {"ENTRY": ENTRY, "SL": SL, "TP1": TP1} +for x0, _x1, _y, s in LABELS: + pe_mic = x0 >= MIDX + for k, v in (MARE if pe_mic else MIC).items(): + assert f"{v:.2f}" not in s, f"eticheta {s!r} poartă prețul {k} al celuilalt panou" +st = [s for x0, _1, _2, s in LABELS if COMUN in s and x0 < MIDX] +dr = [s for x0, _1, _2, s in LABELS if COMUN in s and x0 >= MIDX] +assert st and dr, f"nivelul comun {COMUN} nu apare pe ambele panouri ({st} / {dr})" +for k, v in MIC.items(): + assert any(f"{v:.2f}" in s and x0 >= MIDX for x0, _1, _2, s in LABELS), f"{k} lipsește de pe mic" + +H = ya + 76 +for a in range(len(LABELS)): + assert 0 < LABELS[a][2] < H, f"etichetă în afara pânzei: {LABELS[a][3]!r}" + for b in range(a + 1, len(LABELS)): + xa0, xa1, ya_, sa = LABELS[a] + xb0, xb1, yb_, sb = LABELS[b] + assert not (abs(ya_ - yb_) < 13 and xa0 < xb1 - 4 and xb0 < xa1 - 4), \ + f"etichete suprapuse: {sa!r} / {sb!r}" + +svg = (f'\n ' + "\n ".join(out) + "\n") +S.scrie(OUT, svg, W, H) +print(f"lupă x{ss / bs:.1f} | daily: entry {B_ENTRY:.2f} SL {B_SL:.2f} = {B_PCT:.2f} % | " + f"60 min: entry {ENTRY:.2f} SL {SL:.2f} = {PCT:.2f} % | raport {RAPORT:.2f}") diff --git a/gen/strategii/mp2_perechi_tf.svg b/gen/strategii/mp2_perechi_tf.svg new file mode 100644 index 0000000..dccb505 --- /dev/null +++ b/gen/strategii/mp2_perechi_tf.svg @@ -0,0 +1,98 @@ + + + Pasul 1 — perechea de timeframe-uri: pivoții stau pe daily, intrarea se face pe 60 min + Graficul din dreapta e aceeași bucată de piață, mărită: fiecare candelă daily din caseta punctată + e desfăcută în 7 bare de 60 de minute (ședința are 6 ore și jumătate, deci ultima bară a zilei e de 30 min). + daily: direcția + 60 min: ultimele 2 candele daily, desfăcute + + + + + + + + + + + + + + + + + + + + + + + + + + + + pivot weekly (mare) 584.00 + pivot daily (mic), în trepte + + stop 3,04 % + + + + același preț + + + + închide peste pivotul mic: aici intri + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + TP1 598.00 + + intrare 592.00 + + stop 586.00 + minimul ultimelor + 4 bare de 60 min + + pivot weekly + (mare) 584.00 + + stop 1,01 % + + același setup, stop de 3,0 ori mai mic + → de 3,0 ori mai multe acțiuni la același risc în bani + Pe daily ai fi intrat la close-ul zilei (598.20) cu stopul sub minimul ultimelor 4 zile (580.00). + Pe 60 de minute vezi unde s-a oprit coborârea, deci ai de unde măsura un stop mult mai strâns. + \ No newline at end of file diff --git a/gen/strategii/mp2_pivoti.py b/gen/strategii/mp2_pivoti.py new file mode 100644 index 0000000..87513f3 --- /dev/null +++ b/gen/strategii/mp2_pivoti.py @@ -0,0 +1,79 @@ +"""MP² — cei doi pivoți și condiția M (Pasul 2 din `02_mp2.md`). + +Aceeași serie ca tot capitolul. Aici nu e niciun trade: doar cele două linii +de pivot și granița dintre „nu ai voie long" și „ai voie să cauți trigger". +Dedesubt, aritmetica: pivotul mic al zilei 4 iese din OHLC-ul zilei 3, cu +formula cursului. Cifrele nu sunt scrise de mână — ies din serie. + +Rulare: python3 gen/strategii/mp2_pivoti.py +""" +import re +import sys +from pathlib import Path + +sys.path.insert(0, "/workspace/atm-curs-dl") +sys.path.insert(0, str(Path(__file__).parent)) +from svg_candles import Chart, Level, Zone # noqa: E402 +import mp2_serie as S # noqa: E402 + +OUT = Path(__file__).with_suffix(".svg") +RED, BLUE, GRAY, GREEN = "#c00", "#1a5fb4", "#777", "#188a3e" +W = 720 + +zi = S.zilnice(S.CDS) +z3 = zi[S.ZI4 - 1] # ziua 3, cea din care iese pivotul zilei 4 +assert S.pp(z3.h, z3.l, z3.c) == S.PPD[S.ZI4] +assert S.pp(*S.PPW_OHLC) == S.PPW + +hot = S.ZI4 * S.BARE_ZI # prima bară a zilei 4 + +ch = Chart( + candles=S.CDS, + levels=[Level(S.PPW, f"pivot weekly (mare) {S.PPW:.2f} — nu se mișcă toată săptămâna", + GRAY, "8 4", "right")], + zones=[Zone(0, hot - 1, "pivotul mic e SUB cel mare: M neîndeplinit, nu cauți long", RED), + Zone(hot, len(S.CDS) - 1, "pivotul mic e PESTE cel mare: M îndeplinit", GREEN)], + scale=15.0, gap=15, body_w=9, left=52, width=W, top=40, + title="Pasul 2 — cei doi pivoți: unde stă cel mic față de cel mare") + +svg = ch.render() +off = S.offset(svg, ch) +inject = [ + f'', +] +# doar cele două valori care contează: ultima de sub pivotul mare și prima de peste +for d, dy_, b in ((S.ZI4 - 1, 14, 3), (S.ZI4, -7, 6)): + inject.append( + f'{S.PPD[d]:.2f}') + +svg = S.injecteaza(svg, inject) + +# --- aritmetica, sub grafic --------------------------------------------------- +h = float(re.search(r'viewBox="0 0 [\d.]+ ([\d.]+)"', svg).group(1)) +linii = [ + ("Linia albastră în trepte e pivotul daily (mic), recalculat în fiecare ședință; " + "linia gri e pivotul weekly (mare).", "#333"), + ("Pivotul mare, al săptămânii încheiate: PP = (High + Low + Close) / 3 = " + f"({S.PPW_OHLC[0]:.2f} + {S.PPW_OHLC[1]:.2f} + {S.PPW_OHLC[2]:.2f}) / 3 = " + f"{S.PPW:.2f}", GRAY), + ("Pivotul mic al zilei a 4-a, din ziua a 3-a încheiată: " + f"({z3.h:.2f} + {z3.l:.2f} + {z3.c:.2f}) / 3 = {S.PPD[S.ZI4]:.2f}", BLUE), + (f"{S.PPD[S.ZI4]:.2f} este peste {S.PPW:.2f}, iar în ziua a 3-a era " + f"{S.PPD[S.ZI4 - 1]:.2f}, adică dedesubt: M îndeplinit, printr-un crossing proaspăt.", + GREEN), +] +blocs = [f'{t}' + for i, (t, c) in enumerate(linii)] +H = h + 6 + 19 * len(linii) +svg = svg.replace(f'viewBox="0 0 {W} {h:.0f}"', f'viewBox="0 0 {W} {H:.0f}"', 1) +if f'viewBox="0 0 {W} {H:.0f}"' not in svg: # lățimea a fost lărgită + vb = re.search(r'viewBox="0 0 ([\d.]+) ([\d.]+)"', svg) + svg = svg.replace(vb.group(0), f'viewBox="0 0 {vb.group(1)} {H:.0f}"', 1) +svg = svg.replace("", " " + "\n ".join(blocs) + "\n") + +w = float(re.search(r'viewBox="0 0 ([\d.]+)', svg).group(1)) +assert max(len(t) for t, _ in linii) * 5.7 + 24 < w, "linia de aritmetică iese din pânză" +S.scrie(OUT, svg, w, H) diff --git a/gen/strategii/mp2_pivoti.svg b/gen/strategii/mp2_pivoti.svg new file mode 100644 index 0000000..6a33e4a --- /dev/null +++ b/gen/strategii/mp2_pivoti.svg @@ -0,0 +1,86 @@ + + + 583.20 + 587.13 + Pasul 2 — cei doi pivoți: unde stă cel mic față de cel mare + + pivotul mic e SUB cel mare: M neîndeplinit, nu cauți long + + pivotul mic e PESTE cel mare: M îndeplinit + + pivot weekly (mare) 584.00 — nu se mișcă toată săptămâna + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Linia albastră în trepte e pivotul daily (mic), recalculat în fiecare ședință; linia gri e pivotul weekly (mare). + Pivotul mare, al săptămânii încheiate: PP = (High + Low + Close) / 3 = (588.00 + 580.00 + 584.00) / 3 = 584.00 + Pivotul mic al zilei a 4-a, din ziua a 3-a încheiată: (588.80 + 584.20 + 588.40) / 3 = 587.13 + 587.13 este peste 584.00, iar în ziua a 3-a era 583.20, adică dedesubt: M îndeplinit, printr-un crossing proaspăt. + \ No newline at end of file diff --git a/gen/strategii/mp2_pivoti_excel.py b/gen/strategii/mp2_pivoti_excel.py index d93c5c9..fe6f235 100644 --- a/gen/strategii/mp2_pivoti_excel.py +++ b/gen/strategii/mp2_pivoti_excel.py @@ -195,14 +195,11 @@ def build(): 13, "400", GRAY)) p.append(txt(W / 2, 358, "nu sunt date reale de piață.", 13, "400", GRAY)) p.append(txt(W / 2, 386, - "crossing = PPD trece deasupra PPW; dacă rămâne deasupra — " - "continuare (09_QA/16:35-43).", 13, "400", BLACK)) + "crossing = PPD trece deasupra PPW; dacă rămâne deasupra, " + "e continuare, nu crossing.", 13, "400", BLACK)) p.append(txt(W / 2, 408, - "Surse formule: 03_MODUL_2/02_zone_cerere_oferta_support_" - "resistance.md:42-50", 13, "400", GRAY)) - p.append(txt(W / 2, 426, - "Calcul Excel 1-la-1, MP² = comparația a doi pivoți: " - "09_QA/09_2025-12-09.md:1176-1180.", 13, "400", GRAY)) + "Formula pivotului e cea predată în Modul 2; autorul a confirmat " + "că se calculează 1 la 1 în Excel.", 13, "400", GRAY)) p.append('') return "\n".join(p) + "\n" @@ -299,7 +296,7 @@ def verify(svg): "22.13", "21.23", "22.47", "20.67", "PPD 21.57 > PPW 21.37", "CROSSING BULL (long)", "exemplu construit", "nu sunt date reale de piață", - "09_QA/16:35-43", "09_QA/09_2025-12-09.md:1176-1180", + "e continuare, nu crossing", "se calculează 1 la 1 în Excel", ): assert cheie in plain, f"lipsește din desen: {cheie!r}" diff --git a/gen/strategii/mp2_pivoti_excel.svg b/gen/strategii/mp2_pivoti_excel.svg index 7cf2e72..ee19362 100644 --- a/gen/strategii/mp2_pivoti_excel.svg +++ b/gen/strategii/mp2_pivoti_excel.svg @@ -75,7 +75,6 @@ PPD 21.57 > PPW 21.37 → CROSSING BULL (long) Cifrele sunt un exemplu construit, cu valori rotunde, pe TLV — nu sunt date reale de piață. -crossing = PPD trece deasupra PPW; dacă rămâne deasupra — continuare (09_QA/16:35-43). -Surse formule: 03_MODUL_2/02_zone_cerere_oferta_support_resistance.md:42-50 -Calcul Excel 1-la-1, MP² = comparația a doi pivoți: 09_QA/09_2025-12-09.md:1176-1180. +crossing = PPD trece deasupra PPW; dacă rămâne deasupra, e continuare, nu crossing. +Formula pivotului e cea predată în Modul 2; autorul a confirmat că se calculează 1 la 1 în Excel. diff --git a/gen/strategii/mp2_serie.py b/gen/strategii/mp2_serie.py new file mode 100644 index 0000000..58df7d9 --- /dev/null +++ b/gen/strategii/mp2_serie.py @@ -0,0 +1,268 @@ +"""Seria comună a capitolului `17_STRATEGII/02_mp2.md` — un singur trade. + +Toate diagramele din Nivelul 1 și Nivelul 2 ale capitolului desenează ACELAȘI +trade, din aceeași serie. Așa nu se poate întâmpla ca două diagrame să +folosească două reguli de stop diferite, fiecare etichetată corect local. + +Ce e din material și ce e construit +----------------------------------- +Din material (rezumatul Q&A, exemplul ilustrativ al mecanicii celor două +poziții): intrare 592.00, SL 586.00, 1R = 6.00, TP1 598.00, mutarea SL-ului +la break-even la 60 % din drum, mărimea totală multiplu de 2. +Construit de mine: traseul barelor de 60 de minute care produce exact +cifrele alea, și pivoții — care NU sunt scriși de mână, ci calculați din +serie cu formula cursului, PP = (High + Low + Close) / 3 al perioadei +încheiate. Fără ticker: e un exemplu construit, nu date reale de piață. + +Structura: 5 zile × 7 bare de 60 de minute (ședința 9:30-16:00 are 6 ore și +jumătate, deci ultima bară a zilei e de 30 de minute). + + ziua 1 bare 0-6 coborâre + ziua 2 bare 7-13 minimul și întoarcerea + ziua 3 bare 14-20 ziua verde care ridică pivotul zilnic peste cel weekly + ziua 4 bare 21-27 crossing-ul e pe tablă: dip, trigger la 592.00, TP1 + ziua 5 bare 28-34 poziția 2 pe trail, ieșire la 599.80 + +Rulat direct, verifică toate afirmațiile capitolului: + python3 gen/strategii/mp2_serie.py +""" +import re +import sys + +sys.path.insert(0, "/workspace/atm-curs-dl") +from svg_candles import Candle, from_closes # noqa: E402 + +BARE_ZI = 7 # bare de 60 min într-o ședință +ZILE = 5 + +# pivotul săptămânal (MARE): al săptămânii încheiate, H 588.00 / L 580.00 / +# C 584.00. E un dat din afara ferestrei desenate — săptămâna trecută nu +# încape pe grafic — deci îl declar aici, cu OHLC-ul din care iese. +PPW_OHLC = (588.00, 580.00, 584.00) +# pivotul zilnic al PRIMEI zile: al ședinței de vineri, dinaintea ferestrei. +PPD0_OHLC = (586.00, 581.00, 582.60) + +START = 585.00 # open-ul primei bare +CLOSES = [ + # ziua 1 — coborâre + 584.20, 583.40, 583.90, 582.60, 581.80, 582.20, 581.20, + # ziua 2 — minimul (580.00) și întoarcerea + 580.60, 581.40, 580.90, 582.30, 583.10, 583.80, 584.60, + # ziua 3 — ziua verde; închiderile ei sunt peste pivotul zilnic, dar + # pivotul zilnic e încă sub cel weekly, deci NU e trigger + 585.10, 584.70, 585.60, 586.40, 587.20, 587.80, 588.40, + # ziua 4 — dip sub pivotul zilnic nou, apoi trigger-ul + 586.90, 586.30, 586.80, 592.00, 593.40, 595.90, 598.20, + # ziua 5 — poziția 2 pe trail + 599.60, 601.20, 600.40, 602.30, 601.10, 599.80, 598.90, +] +W = [(0.25, 0.25)] * 35 # fitile (sus, jos); excepțiile fixează extremele zilei +W[0] = (0.40, 0.25) # H zi 1 = 585.40 +W[6] = (0.25, 0.60) # L zi 1 = 580.60 +W[7] = (0.25, 0.60) # L zi 2 = 580.00 +W[13] = (0.40, 0.25) # H zi 2 = 585.00 +W[14] = (0.25, 0.40) # L zi 3 = 584.20 +W[20] = (0.40, 0.25) # H zi 3 = 588.80 +W[21] = (0.30, 0.30) +W[22] = (0.30, 0.30) # L = 586.00 — minimul celor 4 bare de la trigger +W[23] = (0.30, 0.20) +W[24] = (0.40, 0.30) # bara de trigger +W[25] = (0.35, 0.40) +W[26] = (0.35, 0.40) +W[27] = (0.35, 0.40) +for i in range(28, 35): + W[i] = (0.35, 0.35) + +VOLS = [46, 40, 38, 42, 39, 36, 44, + 58, 52, 44, 41, 38, 36, 40, + 44, 38, 41, 45, 48, 44, 52, + 50, 46, 42, 118, 86, 78, 82, + 64, 58, 46, 62, 44, 56, 48] + +ZI3, ZI4 = 2, 3 # indexul zilei verzi și al zilei de trigger +TRIGGER = 24 # bara de trigger (ziua 4, a 4-a oră) +PREA_DEVREME = 16 # închidere peste pivotul mic cu M neîndeplinit +NU_INCHIDE = 22 # trece peste pivot în timpul barei, dar nu închide +BARE_STOP = 4 # stopul: extrema ultimelor 4 bare, de la trigger +PRAG_BE = 0.60 # la 60 % din drumul spre TP1, SL-ul merge la BE +PRAG_90 = 0.90 + + +def pp(h, l, c): + """Pivotul clasic al unei perioade încheiate (formula cursului).""" + return round((h + l + c) / 3, 2) + + +def serie(closes=None, wicks=None, start=None): + return from_closes(closes or CLOSES, wicks=wicks or W, vols=VOLS, + start=START if start is None else start) + + +def zilnice(cds): + """Agregă barele de 60 min în candele zilnice: 7 bare = o ședință.""" + out = [] + for d in range(ZILE): + p = cds[d * BARE_ZI:(d + 1) * BARE_ZI] + out.append(Candle(p[0].o, max(c.h for c in p), min(c.l for c in p), p[-1].c)) + return out + + +def pivoti(cds, ppw_ohlc=PPW_OHLC, ppd0_ohlc=PPD0_OHLC): + """(PPW, PPD pe zi, PPD pe bară). PPD al zilei N = pivotul zilei N-1.""" + zi = zilnice(cds) + ppw = pp(*ppw_ohlc) + ppd = [pp(*ppd0_ohlc)] + [pp(z.h, z.l, z.c) for z in zi[:-1]] + return ppw, ppd, [ppd[i // BARE_ZI] for i in range(len(cds))] + + +def trail(cds, de_la): + """Bull trail: low-ul fiecărei bare care face un maxim nou, de la `de_la`. + + Întoarce (linia pe bară, indexul barei de ieșire) — ieșirea e prima + închidere sub linie, nu primul fitil sub ea. + """ + linie, nivel, hmax, iesire = [], None, cds[de_la].h, None + for i, c in enumerate(cds): + if i >= de_la: + if c.h >= hmax: + hmax, nivel = c.h, c.l + if iesire is None and nivel is not None and i > de_la and c.c < nivel: + iesire = i + linie.append(nivel) + return linie, iesire + + +def oglinda(a=246.40, f=0.2): + """Aceeași structură, întoarsă: p' = a - f*p. Transformarea e afină, deci + agregarea zilnică și pivoții se păstrează; short-ul nu e „e invers", are + desenul lui complet. Cu f = 0.2 toate prețurile rămân exacte la 2 zecimale.""" + m = lambda p: round(a - f * p, 2) # noqa: E731 + cds = [Candle(m(c.o), m(c.l), m(c.h), m(c.c), vol=c.vol) for c in serie()] + ppw = m(pp(*PPW_OHLC)) + zi = zilnice(cds) + ppd = [m(pp(*PPD0_OHLC))] + [pp(z.l, z.h, z.c) for z in zi[:-1]] + return cds, ppw, ppd, [ppd[i // BARE_ZI] for i in range(len(cds))] + + +# ---------------------------------------------------------------- cifrele +CDS = serie() +PPW, PPD, PPD_BARA = pivoti(CDS) +ENTRY = CDS[TRIGGER].c +SL = min(c.l for c in CDS[TRIGGER - BARE_STOP + 1:TRIGGER + 1]) +R = round(ENTRY - SL, 2) +TP1 = round(ENTRY + R, 2) +BE = round(ENTRY + PRAG_BE * R, 2) +P90 = round(ENTRY + PRAG_90 * R, 2) +SWING_LOW = min(c.l for c in CDS) # varianta de bottom major +TRAIL, IESIRE = trail(CDS, TRIGGER) +IES_PRET = CDS[IESIRE].c +I_TP1 = next(i for i in range(TRIGGER + 1, len(CDS)) if CDS[i].h >= TP1) +I_BE = next(i for i in range(TRIGGER + 1, len(CDS)) if CDS[i].h >= BE) + +# mărimea poziției: regula de risc a cursului (0,5 % pe prop), contul e al meu +CONT, RISC_PCT = 50_000, 0.005 +BUCATI = int(CONT * RISC_PCT / R) // 2 * 2 # multiplu de 2: două ordine egale +RISC_REAL = round(BUCATI * R, 2) + + +def _verifica(): + for i, c in enumerate(CDS): + assert c.l <= min(c.o, c.c) and c.h >= max(c.o, c.c), f"bara {i}: h/l nu cuprind o/c" + if i: + assert abs(c.o - CDS[i - 1].c) < 1e-9, f"bara {i}: open != close precedent" + assert len(CDS) == BARE_ZI * ZILE == 35 + # 1. cifrele din material ies din serie, nu sunt scrise de mână + assert (ENTRY, SL, R, TP1) == (592.00, 586.00, 6.00, 598.00), (ENTRY, SL, R, TP1) + assert BE == 595.60 and P90 == 597.40 + # 2. M: pivotul mic e sub cel mare până în ziua 4, și peste din ziua 4 + assert all(PPD[d] < PPW for d in range(ZI4)), PPD + assert PPD[ZI4] > PPW, (PPD[ZI4], PPW) + assert PPD[ZI4] - PPW > 2.5, "crossing-ul e prea strâns ca să se vadă pe desen" + # 3. crossing PROASPĂT, nu continuare: în ziua dinainte era de partea cealaltă + assert PPD[ZI4 - 1] < PPW < PPD[ZI4] + assert PPD[ZI4 + 1] > PPW, "ziua 5 e continuare (+1), nu crossing" + # 4. trigger-ul: PRIMA închidere peste pivotul mic din ziua în care M e îndeplinit + zi4 = range(ZI4 * BARE_ZI, (ZI4 + 1) * BARE_ZI) + assert TRIGGER == next(i for i in zi4 if CDS[i].c > PPD_BARA[i]), "nu e prima închidere" + assert CDS[TRIGGER].c > CDS[TRIGGER].o, "bara de trigger nu e verde" + # 5. NU — prea devreme: închidere peste pivotul mic cu M neîndeplinit + assert CDS[PREA_DEVREME].c > PPD_BARA[PREA_DEVREME] > 0 + assert PPD_BARA[PREA_DEVREME] < PPW, "în ziua 3 M ar fi îndeplinit" + assert CDS[PREA_DEVREME].c > CDS[PREA_DEVREME].o, "bara „prea devreme” nu e verde" + # 6. NU — trece peste pivot în timpul barei, dar nu închide peste + assert CDS[NU_INCHIDE].h > PPD_BARA[NU_INCHIDE] > CDS[NU_INCHIDE].c + # 7. stopul: minimul celor 4 bare, și e minimul lor strict + assert SL == CDS[22].l and SL < min(CDS[i].l for i in (21, 23, 24)) + assert SWING_LOW < SL, "varianta de bottom major ar coincide cu stopul de 4 bare" + assert round(SL - SWING_LOW, 2) == 6.00, round(SL - SWING_LOW, 2) + # 8. ieșirile, în ordine: BE, TP1, apoi trail-ul + assert I_BE == 26 and I_TP1 == 27 and IESIRE == 33, (I_BE, I_TP1, IESIRE) + assert CDS[IESIRE].c < TRAIL[IESIRE] and all( + CDS[i].c >= TRAIL[i] for i in range(TRIGGER + 1, IESIRE)), "ieșire greșită pe trail" + assert round((IES_PRET - ENTRY) / R, 2) == 1.30, (IES_PRET - ENTRY) / R + # 9. mărimea poziției + assert BUCATI == 40 and RISC_REAL == 240.00 and RISC_REAL <= CONT * RISC_PCT + # 10. oglinda păstrează structura + o_cds, o_ppw, o_ppd, _ = oglinda() + assert all(o_ppd[d] > o_ppw for d in range(ZI4)) and o_ppd[ZI4] < o_ppw + o_entry = o_cds[TRIGGER].c + o_sl = max(c.h for c in o_cds[TRIGGER - BARE_STOP + 1:TRIGGER + 1]) + assert (o_entry, o_sl) == (128.00, 129.20), (o_entry, o_sl) + assert round(o_sl - o_entry, 2) == 1.20 + + +_verifica() + + +# -------------------------------------------------- ajutoare pentru desen +def offset(svg, ch): + """Câți px a coborât `render()` graficul față de ce întoarce acum ch._y(). + + `render()` mută `top` ca să facă loc titlului/săgeților și îl restaurează + la final, deci ch._y() de după randare e deplasat. Citim deplasarea din + prima linie de Level desenată, ca ce injectăm pe urmă să cadă exact peste + candele (bug real: liniile de pivot cu 22 px mai sus decât candelele). + """ + y = float(re.search(r'") + 1 + return svg[:i] + "\n " + "\n ".join(bucati) + svg[i:] + + +def scrie(out, svg, w, h): + assert "\n\n" not in svg, "linie goală în SVG rupe blocul din markdown" + assert ".md:" not in svg, "trimitere fișier:linie în SVG" + for x, y in re.findall(r' {PPD[ZI4]:.2f}, peste {PPW:.2f}") + print(f"trigger bara {TRIGGER}: close {ENTRY:.2f} peste pivotul mic {PPD[ZI4]:.2f}") + print(f"SL {SL:.2f} (minimul barelor {TRIGGER - 3}-{TRIGGER}), 1R = {R:.2f} " + f"({R / ENTRY * 100:.2f} %), TP1 {TP1:.2f} la bara {I_TP1}") + print(f"BE {BE:.2f} la bara {I_BE}; trail: ieșire la bara {IESIRE}, " + f"{IES_PRET:.2f} = {(IES_PRET - ENTRY) / R:.2f}R") + print(f"swing low absolut {SWING_LOW:.2f} (varianta de bottom major)") + print(f"mărime: {BUCATI} bucăți (2 x {BUCATI // 2}), risc real {RISC_REAL:.2f} $") + print("toate verificările trec") diff --git a/gen/strategii/mp2_short.py b/gen/strategii/mp2_short.py new file mode 100644 index 0000000..ac1bac4 --- /dev/null +++ b/gen/strategii/mp2_short.py @@ -0,0 +1,87 @@ +"""MP² pe short — aceeași procedură, întoarsă (oglinda din `02_mp2.md`). + +Alt simbol, altă scară de preț (în jur de 128 $, nu 590 $): structura e +aceeași serie, întoarsă cu p' = 246.40 − 0.2·p. Transformarea e afină și +descrescătoare, deci agregarea zilnică, pivoții și linia de trail se +păstrează exact — bull trail-ul devine bear trail fără să recalculez nimic. + +Ce se schimbă față de long: + M pivotul mic e SUB cel mare, nu peste; + crossing pivotul mic coboară prin cel mare; + trigger prima bară care ÎNCHIDE sub pivotul mic; + stopul cel mai SUS high din ultimele 4 bare; + ținta la aceeași distanță, în jos. + +Rulare: python3 gen/strategii/mp2_short.py +""" +import re +import sys +from pathlib import Path + +sys.path.insert(0, "/workspace/atm-curs-dl") +sys.path.insert(0, str(Path(__file__).parent)) +from svg_candles import Arrow, Chart, Level, Zone # noqa: E402 +import mp2_serie as S # noqa: E402 + +OUT = Path(__file__).with_suffix(".svg") +A, F = 246.40, 0.2 +RED, BLUE, GRAY, GREEN, ORANGE = "#c00", "#1a5fb4", "#777", "#188a3e", "#b06000" +W = 720 + + +def m(p): + return round(A - F * p, 2) + + +cds, ppw, ppd, ppd_bara = S.oglinda(A, F) +entry = cds[S.TRIGGER].c +sl = max(c.h for c in cds[S.TRIGGER - S.BARE_STOP + 1:S.TRIGGER + 1]) +r = round(sl - entry, 2) +tp1 = round(entry - r, 2) +trail = [None if v is None or i < S.I_TP1 else m(v) for i, v in enumerate(S.TRAIL)] +ies = cds[S.IESIRE].c +zi4a = S.ZI4 * S.BARE_ZI + +# tot ce scriu pe desen iese din serie +assert (entry, sl, tp1, r) == (128.00, 129.20, 126.80, 1.20), (entry, sl, tp1, r) +assert all(ppd[d] > ppw for d in range(S.ZI4)) and ppd[S.ZI4] < ppw, ppd +assert cds[S.TRIGGER].c < ppd_bara[S.TRIGGER] and cds[S.TRIGGER].c < cds[S.TRIGGER].o +assert S.TRIGGER == next(i for i in range(zi4a, zi4a + S.BARE_ZI) + if cds[i].c < ppd_bara[i]), "nu e prima închidere sub pivotul mic" +assert cds[S.IESIRE].c > trail[S.IESIRE] and min(c.l for c in cds[S.TRIGGER:S.I_TP1 + 1]) <= tp1 +assert round((entry - ies) / r, 2) == 1.30 + +ch = Chart( + candles=cds, + levels=[Level(ppw, f"pivot weekly (mare) {ppw:.2f}", GRAY, "8 4", "right"), + Level(sl, f"stopul {sl:.2f}", RED, "6 3", "right"), + Level(entry, f"intrarea (short) {entry:.2f}", "#333", "4 3", "right"), + Level(tp1, f"TP1 {tp1:.2f} = intrarea − 1R", GREEN, "2 3", "left")], + zones=[Zone(zi4a, len(cds) - 1, "pivotul mic e deja SUB cel mare", BLUE)], + arrows=[ + Arrow(S.TRIGGER, f"aici intri short: {entry:.2f}\nprima bară care ÎNCHIDE " + f"sub pivotul mic", + where="below", color=RED, dx=-108, dy=26), + Arrow(S.I_TP1, f"poziția 1 iese la {tp1:.2f} (1:1)", where="right", price=tp1, + color=GREEN, dx=78, dy=30), + Arrow(S.IESIRE, f"poziția 2 iese la {ies:.2f},\nprima închidere peste trail", + where="right", color=ORANGE, dy=-34), + ], + scale=55.0, gap=15, body_w=9, left=52, width=W, top=40, + title="Oglinda — Sell / short: alt simbol, altă scară, aceleași reguli", + caption="Albastru în trepte = pivotul daily (mic); portocaliu = bear trail, " + "high-ul ultimei bare cu minim nou.") + +svg = ch.render() +off = S.offset(svg, ch) +svg = S.injecteaza(svg, [ + f'', + f'', + f'{ppd[S.ZI4]:.2f}: crossing bear', +]) +h = float(re.search(r'viewBox="0 0 [\d.]+ ([\d.]+)"', svg).group(1)) +w = float(re.search(r'viewBox="0 0 ([\d.]+)', svg).group(1)) +S.scrie(OUT, svg, w, h) diff --git a/gen/strategii/mp2_short.svg b/gen/strategii/mp2_short.svg new file mode 100644 index 0000000..a1387e6 --- /dev/null +++ b/gen/strategii/mp2_short.svg @@ -0,0 +1,98 @@ + + + + 128.97: crossing bear + Oglinda — Sell / short: alt simbol, altă scară, aceleași reguli + + pivotul mic e deja SUB cel mare + + pivot weekly (mare) 129.60 + + stopul 129.20 + + intrarea (short) 128.00 + + TP1 126.80 = intrarea − 1R + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + aici intri short: 128.00 + prima bară care ÎNCHIDE sub pivotul mic + + + poziția 1 iese la 126.80 (1:1) + + + poziția 2 iese la 126.44, + prima închidere peste trail + Albastru în trepte = pivotul daily (mic); portocaliu = bear trail, high-ul ultimei bare cu minim nou. + \ No newline at end of file diff --git a/gen/strategii/mp2_stop.py b/gen/strategii/mp2_stop.py new file mode 100644 index 0000000..659b2d5 --- /dev/null +++ b/gen/strategii/mp2_stop.py @@ -0,0 +1,74 @@ +"""MP² — stopul și mărimea poziției (Pasul 5 din `02_mp2.md`). + +Aceeași serie. Numeri 4 bare înapoi, începând cu bara de trigger, iei cea +mai joasă dintre ele și acolo stă stopul. Pe desen mai apare și varianta de +la bottom major: swing low-ul absolut al mișcării, mult mai jos — regula +alternativă a cursului, nu o a doua regulă pentru trade-ul obișnuit. + +Rulare: python3 gen/strategii/mp2_stop.py +""" +import re +import sys +from pathlib import Path + +sys.path.insert(0, "/workspace/atm-curs-dl") +sys.path.insert(0, str(Path(__file__).parent)) +from svg_candles import Arrow, Chart, Level, Zone # noqa: E402 +import mp2_serie as S # noqa: E402 + +OUT = Path(__file__).with_suffix(".svg") +RED, BLUE, GRAY, GREEN, ORANGE = "#c00", "#1a5fb4", "#777", "#188a3e", "#b06000" +W, B = 720, 30 +cds = S.CDS[:B + 1] +i_low = min(range(len(cds)), key=lambda i: cds[i].l) +R_MARE = round(S.ENTRY - S.SWING_LOW, 2) + +assert i_low == 7 and cds[i_low].l == S.SWING_LOW +assert S.SL == min(c.l for c in cds[S.TRIGGER - 3:S.TRIGGER + 1]) +assert R_MARE == 12.00 and R_MARE == 2 * S.R + +ch = Chart( + candles=cds, + levels=[Level(S.ENTRY, f"intrarea {S.ENTRY:.2f}", "#333", "4 3", "right"), + Level(S.SL, f"stopul din regulă {S.SL:.2f} — 1R = {S.R:.2f}", RED, "6 3", "left"), + Level(S.SWING_LOW, f"swing low absolut {S.SWING_LOW:.2f}", ORANGE, "2 4", "right")], + zones=[Zone(S.TRIGGER - S.BARE_STOP + 1, S.TRIGGER, + f"cele {S.BARE_STOP} bare pe care le numeri", BLUE)], + arrows=[ + Arrow(22, f"cea mai joasă dintre cele {S.BARE_STOP}: {S.SL:.2f}\nacolo pui stopul, " + f"nu mai jos și nu mai aproape", + where="below", price=S.SL, color=RED, dx=-120, dy=6), + Arrow(i_low, f"minimul întregii mișcări: {S.SWING_LOW:.2f}\nasta folosești DOAR la un " + f"bottom major,\ncând retesturile dese te-ar scoate degeaba — 1R devine {R_MARE:.2f}", + where="below", price=S.SWING_LOW, color=ORANGE, dx=180, dy=48), + Arrow(S.TRIGGER, f"bara de trigger: {S.ENTRY:.2f}\nde aici numeri înapoi", + where="above", color=GREEN, dx=-96, dy=-4), + ], + scale=14.0, gap=20, body_w=11, left=56, width=W, top=40, + title="Pasul 5 — numeri 4 bare înapoi de la trigger și iei cea mai joasă") + +svg = ch.render() +off = S.offset(svg, ch) +y_num = ch._y(S.SL) + off + 20 +nums = [f'{k + 1}' for k in range(S.BARE_STOP)] +svg = S.injecteaza(svg, nums) + +h = float(re.search(r'viewBox="0 0 [\d.]+ ([\d.]+)"', svg).group(1)) +w = float(re.search(r'viewBox="0 0 ([\d.]+)', svg).group(1)) +linii = [ + ("Mărimea poziției: riscul în bani se împarte la distanța până la stop.", "#333"), + (f"Cont {S.CONT:,.0f} $".replace(",", ".") + + f" × {S.RISC_PCT * 100:.1f} % = {S.CONT * S.RISC_PCT:.0f} $ de risc; " + f"{S.CONT * S.RISC_PCT:.0f} / {S.R:.2f} = {S.CONT * S.RISC_PCT / S.R:.1f} bucăți → " + f"{S.BUCATI} bucăți, adică două ordine de câte {S.BUCATI // 2}.", BLUE), + (f"Risc real: {S.BUCATI} × {S.R:.2f} = {S.RISC_REAL:.0f} $, adică " + f"{S.RISC_REAL / S.CONT * 100:.2f} % din cont — sub pragul de " + f"{S.RISC_PCT * 100:.1f} %.", GREEN), +] +blocs = [f'{t}' for i, (t, c) in enumerate(linii)] +H = h + 6 + 19 * len(linii) +svg = re.sub(r'viewBox="0 0 ([\d.]+) [\d.]+"', rf'viewBox="0 0 \1 {H:.0f}"', svg, count=1) +svg = svg.replace("", " " + "\n ".join(blocs) + "\n") +assert max(len(t) for t, _ in linii) * 5.7 + 24 < w, "linia de calcul iese din pânză" +S.scrie(OUT, svg, w, H) diff --git a/gen/strategii/mp2_stop.svg b/gen/strategii/mp2_stop.svg new file mode 100644 index 0000000..b845f11 --- /dev/null +++ b/gen/strategii/mp2_stop.svg @@ -0,0 +1,93 @@ + + 1 + 2 + 3 + 4 + Pasul 5 — numeri 4 bare înapoi de la trigger și iei cea mai joasă + + cele 4 bare pe care le numeri + + intrarea 592.00 + + stopul din regulă 586.00 — 1R = 6.00 + + swing low absolut 580.00 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + cea mai joasă dintre cele 4: 586.00 + acolo pui stopul, nu mai jos și nu mai aproape + + + minimul întregii mișcări: 580.00 + asta folosești DOAR la un bottom major, + când retesturile dese te-ar scoate degeaba — 1R devine 12.00 + + + bara de trigger: 592.00 + de aici numeri înapoi + Mărimea poziției: riscul în bani se împarte la distanța până la stop. + Cont 50.000 $ × 0.5 % = 250 $ de risc; 250 / 6.00 = 41.7 bucăți → 40 bucăți, adică două ordine de câte 20. + Risc real: 40 × 6.00 = 240 $, adică 0.48 % din cont — sub pragul de 0.5 %. + \ No newline at end of file diff --git a/gen/strategii/mp2_trigger.py b/gen/strategii/mp2_trigger.py new file mode 100644 index 0000000..72bdde0 --- /dev/null +++ b/gen/strategii/mp2_trigger.py @@ -0,0 +1,67 @@ +"""MP² — trigger valid și trigger fals (Pasul 4 din `02_mp2.md`). + +Lupa pe ultimele două ședințe ale seriei comune: trei bare care seamănă și +care nu înseamnă același lucru. + + NU — prea devreme: închidere verde peste pivotul mic, dar pivotul mic e + încă sub cel mare (M neîndeplinit). + NU — n-a închis: bara trece peste pivotul mic în timpul ei, dar se + închide sub el. Contează închiderea, nu atingerea. + DA: prima închidere peste pivotul mic după ce pivotul mic + a trecut peste cel mare. + +Rulare: python3 gen/strategii/mp2_trigger.py +""" +import sys +from pathlib import Path + +sys.path.insert(0, "/workspace/atm-curs-dl") +sys.path.insert(0, str(Path(__file__).parent)) +from svg_candles import Arrow, Chart, Level # noqa: E402 +import mp2_serie as S # noqa: E402 + +OUT = Path(__file__).with_suffix(".svg") +RED, BLUE, GRAY, GREEN, ORANGE = "#c00", "#1a5fb4", "#777", "#188a3e", "#b06000" +W, A, B = 720, 14, 27 # fereastra desenată: barele A..B + +cds = S.CDS[A:B + 1] +ppd = S.PPD_BARA[A:B + 1] +d_devreme, d_nu, d_da = S.PREA_DEVREME - A, S.NU_INCHIDE - A, S.TRIGGER - A + +# ce afirmă fiecare etichetă, verificat pe serie +assert cds[d_devreme].c > ppd[d_devreme] and ppd[d_devreme] < S.PPW +assert cds[d_nu].h > ppd[d_nu] > cds[d_nu].c and ppd[d_nu] > S.PPW +assert cds[d_da].c > ppd[d_da] > S.PPW +assert all(cds[i].c <= ppd[i] for i in range(d_nu - 1, d_da)), "ar fi existat un trigger mai devreme" + +ch = Chart( + candles=cds, + levels=[Level(S.PPW, f"pivot weekly (mare) {S.PPW:.2f}", GRAY, "8 4", "right")], + arrows=[ + Arrow(d_devreme, "NU — prea devreme\nînchide peste pivotul mic, dar pivotul\n" + f"mic ({ppd[d_devreme]:.2f}) e încă SUB cel mare ({S.PPW:.2f})", + where="below", color=RED, dx=8, dy=48), + Arrow(d_nu, "NU — n-a închis peste\n" + f"urcă peste {ppd[d_nu]:.2f} în timpul barei,\n" + f"dar se închide la {cds[d_nu].c:.2f}, sub el", + where="below", color=ORANGE, dx=150, dy=110), + Arrow(d_da, f"DA — trigger\nprima ÎNCHIDERE ({cds[d_da].c:.2f}) peste pivotul\n" + f"mic {ppd[d_da]:.2f}, cu pivotul mic peste cel mare", + where="above", color=GREEN, dx=-118, dy=-6), + ], + scale=20.0, gap=32, body_w=15, left=58, width=W, top=40, + title="Pasul 4 — aceeași linie de pivot, trei bare, un singur trigger", + caption="Contează închiderea barei, nu cât de sus a urcat în timpul ei.") + +svg = ch.render() +off = S.offset(svg, ch) +svg = S.injecteaza(svg, [ + f'', + f'pivot daily (mic) {ppd[-1]:.2f}', + f'pivot daily (mic) {ppd[0]:.2f}', +]) +w = float(svg.split('viewBox="0 0 ')[1].split()[0]) +h = float(svg.split('viewBox="0 0 ')[1].split('"')[0].split()[1]) +S.scrie(OUT, svg, w, h) diff --git a/gen/strategii/mp2_trigger.svg b/gen/strategii/mp2_trigger.svg new file mode 100644 index 0000000..1cb927f --- /dev/null +++ b/gen/strategii/mp2_trigger.svg @@ -0,0 +1,52 @@ + + + pivot daily (mic) 587.13 + pivot daily (mic) 583.20 + Pasul 4 — aceeași linie de pivot, trei bare, un singur trigger + + pivot weekly (mare) 584.00 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + NU — prea devreme + închide peste pivotul mic, dar pivotul + mic (583.20) e încă SUB cel mare (584.00) + + + NU — n-a închis peste + urcă peste 587.13 în timpul barei, + dar se închide la 586.30, sub el + + + DA — trigger + prima ÎNCHIDERE (592.00) peste pivotul + mic 587.13, cu pivotul mic peste cel mare + Contează închiderea barei, nu cât de sus a urcat în timpul ei. + \ No newline at end of file diff --git a/summaries/17_STRATEGII/02_mp2.html b/summaries/17_STRATEGII/02_mp2.html index d2c886a..ffed558 100644 --- a/summaries/17_STRATEGII/02_mp2.html +++ b/summaries/17_STRATEGII/02_mp2.html @@ -3,7 +3,7 @@ -2. MP2 (Strategia 2, pivoti dubli) +2. MP² (Strategia 2, pivoți dubli) -

2. MP2 (Strategia 2, pivoti dubli)

-

Etichete: long short · swing / position · acțiuni US / futures / BVB · -dificultate 3/5 (judecata mea) · merge pe prop: da, cu ajustări (doar MP²-1) · -merge pe BVB: parțial — confirmat de autor

-

Surse: 04_MODUL_3/04_strategia_2_mp_patrat.md -(fișierul principal al strategiei) · 09_QA/09_2025-12-09.md -(parametrii scanerului, lichiditate, BVB) · -09_QA/10_2025-12-02.md (scaner, crossing vs. continuare, LEG) · -09_QA/16_2025-10-07.md (crossing vs. buy the dip, fără filtre) · -09_QA/06_2026-04-28.md (win rate real) · -09_QA/01_2026-08-25.md (short, 2 poziții, exemplu SPY) · -09_QA/23_2025-07-29.md (BRK.B, bottom-uri mari) · -09_QA/24_2025-07-15.md (AMD) · -09_QA/26_2025-06-11.md (TMO, prop) · -09_QA/14_2025-10-21.md (TP2, timp la ecran) · -09_QA/18_2025-09-23.md (overnight, Radar Screen) · -09_QA/25_2025-07-08.md (două închideri, VXX) · -08_ANALIZA_ZILNICA/02_mbt10.md (MP4-1) · -08_ANALIZA_ZILNICA/11_selectia_simbolului.md (scaner, ReVol) · -03_MODUL_2/14_strategia_1_m2d.md (bull/bear trail, money management) · -03_MODUL_2/02_zone_cerere_oferta_support_resistance.md (formula pivotului).

-
-

Nivel 0 — Ideea

-

Ce exploatează

-

Mulțimea se uită la un singur nivel desenat cu ochiul (un suport, un pattern) sau la -momentum-ul prețului. MP² nu se uită la niciunul: direcția o dă poziția relativă a doi -pivoți din două perioade diferite — pivotul mic (daily) față de cel mare (weekly). Când -pivotul daily trece deasupra celui weekly, înseamnă că prețul mediu al ultimei zile a -urcat peste prețul mediu al ultimei săptămâni. Sursa explică mecanismul pe cazul invers -(pivot daily sub weekly): „cumpărătorii care au intrat săptămâna trecută sunt acum, în -medie, pe pierdere. Ei devin vânzători la prima revenire spre breakeven" -(09_QA/01_2026-08-25.md:50-56); pentru long, oglinda mecanică (deducția mea — sursa -explică doar cazul invers) e că vânzătorii de săptămâna trecută sunt cei prinși în pierdere.

-

A doua ineficiență, cea asupra căreia cursul revine cel mai des: majoritatea confundă -crossing-ul (pivotul mic traversează pivotul mare) cu buy the dip (pivotul mic a -rămas deasupra și doar prețul mai face o candelă peste el). Arată aproape la fel pe -grafic, dar au statistici diferite: semnalele care au mers erau crossing-uri, cele care -n-au mers erau buy-the-dip-uri (09_QA/16_2025-10-07.md:35-43). -Cursul insistă că e cea mai bună strategie a lui tocmai pentru schimbări majore de -trend (topuri/bottom-uri), pentru că un crossing two-timeframe e o confirmare mai -puternică decât un pattern vizual izolat (04_MODUL_3/04_strategia_2_mp_patrat.md:4-14).

-

Diagrama de ansamblu

+

2. MP² (Strategia 2, pivoți dubli)

+

Etichete: long short · swing / position · acțiuni US futures BVB · +dificultate 3/5 (judecata mea) · merge pe prop (cont finanțat de o firmă): da, cu ajustări · +merge pe BVB: parțial, doar long

+

Cum citești capitolul: textul e explicația mea a materialului de curs și +nu adaugă reguli peste el; acolo unde materialul nu spune, completez, iar +bucata aceea începe cu Completare proprie. Diagramele de la nivelurile 1 +și 2 sunt un exemplu construit, fără ticker: traseul e desenat ca cifrele +din material să iasă din serie, iar pivoții se calculează din ea cu formula +cursului. Exemplele cu ticker (SPY, NVDA) au cifrele din curs. Trimiterile +la lecțiile din care vine fiecare pas stau separat, în +fise/02_mp2_surse.md.

+

Nivelul 1 — Din avion

+

Ce face strategia

+

MP² nu se uită la niciun nivel desenat cu mâna. Se uită la doi pivoți — +doi „prețuri medii" calculate, unul pe o perioadă scurtă și unul pe o +perioadă lungă — și la ce poziție are cel scurt față de cel lung. Când cel +scurt trece de deasupra celui lung, prețul mediu al ultimei zile a urcat +peste prețul mediu al ultimei săptămâni: cine a cumpărat săptămâna trecută e +acum, în medie, pe profit, iar cine a vândut e pe pierdere și trebuie să +cumpere înapoi. Asta e traversarea, crossing-ul.

+

Crossing-ul nu e semnal de intrare. E permisiunea. Intri abia la prima bară +care se închide de partea corectă a pivotului scurt, pui stopul la +extrema ultimelor 4 bare, iei jumătate din poziție la o țintă egală cu +riscul și lași cealaltă jumătate pe o linie care urcă în urma prețului.

+

Dă puține semnale — de ordinul a 29 de tranzacții pe an dacă iei numai +crossing-uri — iar cifra raportată în material pentru 2025 e 61,9 % semnale +câștigătoare, cu un câștig mediu de circa 8 %. Deci aproape patru din zece +pierd, și stopul nu e opțional.

+

Tot trade-ul, pe un exemplu construit:

-

- - - pivot weekly (mic) - pivot monthly (mare) - NVDA — weekly (pre-split 1:10) - - entry ~13.80 (după M+A) - - SL swing low absolut 10.63, −23% - - TP ~+25% (17.25), ~9 săpt. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - volum - minim absolut 10.63 - M+A - Bottom oct. 2022: entry ~13.80, −23%, ~+25% în ~9 săpt. Traseu și pivoți construiți (cursul nu dă valorile lor). +

+ + pivot daily (mic) + + crossing + Exemplu construit — bare de 60 de minute, 5 ședințe + + ziua a 4-a: pivotul mic e deja peste cel mare + + TP1 598.00 — poziția 1 + + intrarea 592.00 + + stopul 586.00 + + pivot weekly (mare) 584.00 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + volum + + + aici intri: 592.00 + prima bară care ÎNCHIDE + peste pivotul mic + + + stopul: 586.00 + minimul ultimelor 4 bare — + sub el, cumpărătorii nu mai au controlul + + + poziția 1 iese la 598.00: + exact cât ai riscat (1:1) + + + poziția 2 iese la 599.80, + prima închidere sub trail + Crossing: pivotul mic urcă de la 583.20 la 587.13, peste cel mare (584.00) — de-abia de acolo cauți trigger-ul.

-

Exemplul din curs: NVDA, bottom octombrie 2022, combinația weekly/monthly (cifre -pre-split 1:10) — downtrend masiv → crossing → intrare, SL și țintă pe același grafic.

-

Fraza de decizie

+

De la stânga la dreapta: patru ședințe de câte șapte bare de 60 de minute. +Linia gri e pivotul weekly (cel mare), 584.00, care nu se mișcă toată +săptămâna. Linia albastră în trepte e pivotul daily (cel mic), recalculat +în fiecare ședință: 583.20 în ziua a treia, apoi 587.13 în a patra — acolo +trece peste cel mare, acolo e crossing-ul. Prima bară care se închide peste +587.13 se închide la 592.00: acolo intri. Stopul merge la 586.00, cel mai +jos minim al ultimelor patru bare, deci riști 6.00 pe acțiune. Jumătate din +poziție iese la 598.00, tot la 6.00 distanță. Cealaltă jumătate iese la +599.80, la prima închidere sub linia de trail.

+

Fraza de decizie

-

Când pivotul mic traversează pivotul mare (crossing, nu continuare), intru pe prima -candelă care închide de partea corectă a pivotului mic; stop la extrema ultimelor 4 -candele, jumătate din poziție iese la 1:1, restul pe trail.

+

Cumpăr când pivotul mic tocmai a trecut peste cel mare (crossing, nu +continuare) și o bară se închide peste pivotul mic; stopul e la cel mai +jos minim al ultimelor 4 bare, jumătate din poziție iese la o țintă egală +cu riscul, iar restul pe trail.

-

Când NU o folosești

+

Pe short: vând în lipsă când pivotul mic tocmai a trecut sub cel mare și +o bară se închide sub pivotul mic, cu stopul deasupra celui mai înalt +maxim al ultimelor 4 bare și cu ținta la aceeași distanță în jos.

+

Mini-glosar

    -
  • Când nu ai un crossing nou. Dacă pivotul mic a rămas tot timpul deasupra (long) și - doar prețul a mai făcut o închidere peste el, e buy the dip — altă strategie, cu altă - statistică (09_QA/16_2025-10-07.md:35-43).
  • -
  • Când ai pus un filtru peste ea. „Pe MP pătrat n-am scris nimic de niciun filtru. […] - Tot ce pui peste este discreționar" (09_QA/16_2025-10-07.md:88-89). Filtrată, nu mai - poți invoca win rate-ul strategiei de bază.
  • -
  • Pe combinațiile weekly/monthly și monthly/quarterly pe un cont cu drawdown zilnic. - Înseamnă „2-3 ani în tranzacție" (04_MODUL_3/04_strategia_2_mp_patrat.md:30-31); - nu are ce căuta pe prop.
  • -
  • Pe un simbol nelichid. Filtrul de lichiditate se pune primul, înaintea setup-ului - (09_QA/09_2025-12-09.md:436-448).
  • -
  • Fără short, dacă instrumentul nu permite short. Pe BVB (și pe unele conturi de - prop) jumătatea short a strategiei cade — vezi Transfer.
  • +
  • Bară (candelă) — un dreptunghi care rezumă o perioadă. Are patru + prețuri: cu cât a deschis perioada (open), cu cât a închis (close), + cât de sus a urcat (high) și cât de jos a coborât (low). Corpul e + între open și close, fitilele merg până la high și low.
  • +
  • Timeframe (TF) — cât timp acoperă o bară: pe daily, o ședință; pe + weekly, o săptămână; pe 60 de minute, o oră. O ședință americană ține de + la 9:30 la 16:00, adică 6 ore și jumătate, deci are 7 bare de 60 de + minute, ultima de o jumătate de oră.
  • +
  • Pivot (PP) — prețul de referință al unei perioade încheiate: + PP = (High + Low + Close) / 3. Pivotul daily al zilei de azi se calculează + din ziua de ieri; cel weekly, din săptămâna trecută. În exemplul din + capitol: ziua a treia a avut high 588.80, low 584.20 și close 588.40, deci + pivotul zilei a patra e (588.80 + 584.20 + 588.40) / 3 = 587.13.
  • +
  • Pivotul mic și pivotul mare — „mic" e cel al perioadei scurte (daily), + „mare" e cel al perioadei lungi (weekly). Nu se referă la valoare: pivotul + mic poate fi numeric mai mare decât cel mare, și exact asta cauți la long.
  • +
  • M — condiția de poziție relativă: pivotul mic e peste cel mare + pentru long, sub el pentru short. În exemplu: 587.13 peste 584.00.
  • +
  • Crossing — pivotul mic tocmai a traversat pivotul mare: în perioada + dinainte era de cealaltă parte. În exemplu: 583.20 (dedesubt) în ziua a + treia, 587.13 (deasupra) în a patra. În scaner e valoarea +2 la long și + −2 la short.
  • +
  • Continuare — pivotul mic e de partea corectă, dar era acolo și înainte, + nimic nu s-a traversat. În scaner e +1 / −1. Nu e un semnal de căutare.
  • +
  • Buy the dip — cumperi o coborâre scurtă într-un trend care merge deja + în sus. Seamănă cu MP² pe grafic: și acolo o bară se închide peste pivotul + mic. Diferența e că pivotul mic n-a recăzut niciodată sub cel mare, deci + n-a fost nicio traversare. Panoul de jos al diagramei de la pasul 3 e exact + asta.
  • +
  • Trigger — evenimentul care îți dă voie să intri. Aici: o bară care se + închide peste (long) sau sub (short) pivotul mic, cu M îndeplinit.
  • +
  • Buy momentum (BIM) / sell momentum (SLM) — săgeata unui indicator + propriu al cursului, care se aprinde o singură dată, la schimbarea de + trend, când prețul trece cu forță printr-un nivel vechi. Când apare fix pe + bara care închide peste pivotul mic, ai două motive în loc de unul. Pe BVB + nu există; îi ține locul o bară obișnuită care închide peste pivot.
  • +
  • Long și short — „long" înseamnă că ai cumpărat și câștigi dacă prețul + urcă. „Short" e invers: vinzi acum acțiuni împrumutate de la broker și le + cumperi înapoi mai târziu, deci câștigi dacă prețul scade.
  • +
  • Swing și position — un swing ține câteva zile (MP² pe daily/weekly stă + 1-3 zile); o poziție de tip „position" ține luni sau ani (MP² pe + weekly/monthly sau monthly/quarterly).
  • +
  • Stop-loss (SL) — prețul la care ieși automat cu pierdere, pentru că + ideea s-a dovedit greșită. Îl pui în platformă odată cu intrarea.
  • +
  • 1R — cât pierzi pe acțiune dacă te lovește stopul. Intri la 592.00, + stopul e la 586.00, deci 1R = 6.00; „+1,30R" înseamnă 7.80 pe acțiune.
  • +
  • Take-profit (TP1) — prima țintă. Aici e la fix 1R deasupra intrării: + 592.00 + 6.00 = 598.00. Asta înseamnă „1:1".
  • +
  • Break-even (BE) — stopul mutat exact la prețul de intrare: de acolo + încolo, cel mai rău caz e să ieși pe zero.
  • +
  • Bull trail / bear trail — o linie care urcă (long) sau coboară (short) + în trepte în urma prețului și nu se întoarce niciodată. La long: low-ul + ultimei bare care a făcut un maxim nou. Ieși la prima bară care se + închide de partea greșită a liniei, nu la primul fitil care o atinge. + În exemplu, linia ajunge la 600.75, iar prima bară care se închide sub ea se închide la 599.80.
  • +
  • Bull reversal / bear reversal — chiar momentul în care o bară închide + de partea greșită a liniei de trail. Bear reversal (închidere sub bull + trail) e semnalul de ieșire pentru poziția rămasă la long.
  • +
  • Poziții (tranșe) — poziția împărțită în bucăți care se închid separat: + 40 de acțiuni cumpărate ca 20 + 20, ca să poți ieși cu exact jumătate la + prima țintă.
  • +
  • Swing low / swing high — minimul, respectiv maximul, al întregii + mișcări, nu doar al ultimelor bare. În exemplu, swing low-ul e 580.00, cu + 6.00 mai jos decât stopul din regulă.
  • +
  • Lichiditate — cât de ușor intri și ieși fără să miști prețul. Se + măsoară în acțiuni tranzacționate pe zi (în SUA) sau în bani rulați pe zi + (la BVB).
  • +
  • Gap — un gol între bare: prețul deschide mult peste sau sub închiderea + precedentă, fără să treacă prin prețurile dintre ele.
  • +
  • Spread — diferența dintre prețul la care poți cumpăra și cel la care + poți vinde în același moment. E un cost, și mănâncă direct din R.
+

Cei 6 pași

+

1. Perechea de TF și candidatul · +2. Cei doi pivoți și M · +3. Crossing, nu buy the dip · +4. Trigger-ul · +5. Stopul și mărimea · +6. Ieșirea · apoi oglinda pe short, +rafinările și checklist-ul.


-

Nivel 1 — Regulile

-

1.1 Filtrul de context (înainte să te uiți la grafic)

+

Nivelul 2 — Procedura mecanică, în 6 pași

+

Aici nu alegi nimic. Faci pașii în ordine. Dacă un pas nu trece, lași +simbolul și treci la următorul.

+

+

Pasul 1 — Alegi perechea de timeframe-uri și deschizi două grafice

+

Alegi perechea de pivoți și, odată cu ea, graficul pe care vei intra; apoi +păstrezi doar simbolurile lichide.

+

Cursul dă trei perechi, și fiecare vine la pachet cu TF-ul de execuție:

- - - - - + + + + - - - - - + + + + - - - - - + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + +
#CondițiePragUnde o citeștiSursăPerechea de pivoțiUnde intriCât ține pozițiaPivoții pe care îi tragi
C1M — poziția relativă a pivoțilorpivot mic peste pivot mare (long) / sub (short)scaner #MP_patrat_scan (ATM), valoarea ±2; manual din Excel04_MODUL_3/04_strategia_2_mp_patrat.md:35-36; 09_QA/01_2026-08-25.md:15-19daily / weekly (MP²-1)60 de minute1-3 zilesăptămânali
C2Crossing nou, nu continuarevaloarea +2/−2, nu +1/−1; pivotul mic a fost de partea cealaltă și tocmai traverseazăscaner / Radar Screen (verde = crossing bull, roșu = crossing bear)09_QA/09_2025-12-09.md:56-67,151-155; 09_QA/10_2025-12-02.md:719-730weekly / monthlydailylunilunari
C3Lichiditatedaily volume > 0.1 și average daily volume > 1 (milioane, cum le afișează indicatorul); ordine de mărime: 276.000 volum mediu/10 zile „are ceva"filtru în scaner09_QA/09_2025-12-09.md:445-448
C4Preț minimclose > 10$filtru în scaner09_QA/10_2025-12-02.md:759
C5Combinația de pivoți și TF-ul de execuțiedaily/weekly → trigger 60 min; weekly/monthly → daily; monthly/quarterly → weeklytabelul din curs04_MODUL_3/04_strategia_2_mp_patrat.md:24-31
C6Perechea notă-scaner ↔ TF prețnota 1-2 → preț 60 min; nota 3-6 → preț daily (condiție, nu recomandare)scaner09_QA/09_2025-12-09.md:19-48
C7Sectorfără prag în material (nu e o condiție a strategiei; apare doar în fluxul de selecție a simbolului)—08_ANALIZA_ZILNICA/11_selectia_simbolului.md:18-20monthly / quarterlyweekly2-3 anitrimestriali
-

1.2 Setup — ce trebuie să vezi pe grafic

+

Restul capitolului lucrează pe prima linie: pivot daily = mic, pivot weekly += mare, execuție pe 60 de minute.

+

Filtrele de simbol se pun înaintea setup-ului, nu după: volum zilnic peste +0,1 milioane de acțiuni și volum mediu peste 1 milion, preț de închidere +peste 10 $. Un simbol pe care nu poți ieși nu e un setup, e o capcană.

+ +

+ + Pasul 1 — perechea de timeframe-uri: pivoții stau pe daily, intrarea se face pe 60 min + Graficul din dreapta e aceeași bucată de piață, mărită: fiecare candelă daily din caseta punctată + e desfăcută în 7 bare de 60 de minute (ședința are 6 ore și jumătate, deci ultima bară a zilei e de 30 min). + daily: direcția + 60 min: ultimele 2 candele daily, desfăcute + + + + + + + + + + + + + + + + + + + + + + + + + + + + pivot weekly (mare) 584.00 + pivot daily (mic), în trepte + + stop 3,04 % + + + + același preț + + + + închide peste pivotul mic: aici intri + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + TP1 598.00 + + intrare 592.00 + + stop 586.00 + minimul ultimelor + 4 bare de 60 min + + pivot weekly + (mare) 584.00 + + stop 1,01 % + + același setup, stop de 3,0 ori mai mic + → de 3,0 ori mai multe acțiuni la același risc în bani + Pe daily ai fi intrat la close-ul zilei (598.20) cu stopul sub minimul ultimelor 4 zile (580.00). + Pe 60 de minute vezi unde s-a oprit coborârea, deci ai de unde măsura un stop mult mai strâns. +

+ + +

În stânga e graficul daily: acolo se vede că pivotul mic a trecut peste cel +mare. În dreapta e aceeași bucată de piață, mărită: fiecare candelă daily +din caseta punctată e desfăcută în cele 7 bare de 60 de minute din care e +făcută, cu același open, același close, același maxim și același minim. +Ghidajele leagă colțurile casetei de colțurile cadrului mic, iar pivotul +weekly, 584.00, e trasat pe amândouă panourile, cu același număr de ambele +părți; conectorul subțire dintre panouri leagă cele două înălțimi ale +aceluiași preț — nu se pot alinia, pentru că scările au pante diferite.

+

De ce te uiți acolo: pe daily vezi că s-a schimbat direcția, dar nu vezi +unde s-a oprit coborârea. Dacă ai intra pe daily, ai intra la închiderea +zilei, 598.20, cu stopul sub minimul ultimelor 4 zile, 580.00 — adică 3,04 % +risc. Pe 60 de minute intri la 592.00 cu stopul la 586.00, adică 1,01 %. La +același risc în bani, de trei ori mai multe acțiuni.

+

Treci mai departe doar dacă ai ales perechea, ai deschis graficul pe care +vei intra și simbolul trece filtrele de lichiditate și de preț.

+

+

Pasul 2 — Tragi cei doi pivoți și verifici M

+

Calculezi sau afișezi pivotul perioadei mici și pe al celei mari și te uiți +care e deasupra.

+

Formula e una singură, pentru orice perioadă: PP = (High + Low + Close) / 3, +al perioadei încheiate. Platforma îi desenează singură; la BVB îi +calculezi în Excel (mai jos, la transfer).

+ +

+ + 583.20 + 587.13 + Pasul 2 — cei doi pivoți: unde stă cel mic față de cel mare + + pivotul mic e SUB cel mare: M neîndeplinit, nu cauți long + + pivotul mic e PESTE cel mare: M îndeplinit + + pivot weekly (mare) 584.00 — nu se mișcă toată săptămâna + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Linia albastră în trepte e pivotul daily (mic), recalculat în fiecare ședință; linia gri e pivotul weekly (mare). + Pivotul mare, al săptămânii încheiate: PP = (High + Low + Close) / 3 = (588.00 + 580.00 + 584.00) / 3 = 584.00 + Pivotul mic al zilei a 4-a, din ziua a 3-a încheiată: (588.80 + 584.20 + 588.40) / 3 = 587.13 + 587.13 este peste 584.00, iar în ziua a 3-a era 583.20, adică dedesubt: M îndeplinit, printr-un crossing proaspăt. +

+ + +

Cât timp pivotul mic e sub cel mare, nu cauți long: prețul mediu al ultimei +zile e încă sub media săptămânii, adică cei care au cumpărat săptămâna +trecută sunt pe pierdere și vând la prima revenire. Când pivotul mic e +deasupra, rolurile se inversează și ai voie să cauți trigger.

+

Merge pe orice pereche de pivoți — zilnic/săptămânal, săptămânal/lunar, +lunar/trimestrial. Ce se schimbă e cât ții poziția, nu regula.

+

Treci mai departe doar dacă pivotul mic e peste cel mare (long) sau sub +el (short).

+

+

Pasul 3 — Verifici că e crossing proaspăt, nu continuare

+

Te uiți la perioada dinainte: pivotul mic trebuie să fi fost de cealaltă +parte a pivotului mare.

+

Ăsta e criteriul pe care cursul revine cel mai des, în patru sesiuni de +întrebări diferite: semnalele care au mers erau traversări, cele care n-au +mers erau intrări într-un trend deja pornit. În scaner e diferența dintre ++2 (crossing) și +1 (continuare).

- - pivot daily (cel MIC) + + pivot daily (cel MIC) DA — crossing (+2) pivot weekly (cel MARE) 62.00 - - crossing: 61.70 → 62.20 - intrare: trigger + + crossing: 61.70 → 62.20 + intrare: trigger @@ -356,8 +638,8 @@ candele, jumătate din poziție iese la 1:1, restul pe trail.

- - pivot daily (cel MIC) + + pivot daily (cel MIC) NU — continuare/buy the dip (+1) pivot weekly (cel MARE) 62.00 @@ -416,232 +698,434 @@ candele, jumătate din poziție iese la 1:1, restul pe trail.

+

Diagrama e pe alt simbol, deci are alte prețuri; regulile sunt aceleași. Sus, +pivotul mic urcă de la 61.70 la 62.20 și traversează pivotul mare, 62.00: +crossing. Jos, pivotul mic e de la bun început deasupra lui 62.00 și rămâne +acolo; prețul face închideri peste el, dar nu s-a re-încrucișat nimic, deci +fiecare astfel de închidere e buy the dip, nu MP². Arată aproape la fel și +au statistici diferite.

+

Continuarea nu e inutilă, dar are un singur context în care are sens: când +ai prins deja un bottom și ești într-un trend nou. Ca listă de scanare, +crossing.

+

Mai există o capcană de platformă: scanerul vede doar bara închisă, deci +îți dă setup-ul cu o bară întârziere. Pe intraday se compensează cu Radar +Screen.

+

Treci mai departe doar dacă pivotul mic era de cealaltă parte în perioada +precedentă. Dacă nu, ești pe altă strategie — lasă simbolul.

+

+

Pasul 4 — Aștepți bara care închide de partea corectă

+

Notezi pivotul mic și aștepți prima bară care se ÎNCHIDE peste el.

+

Nu contează cât de sus urcă bara în timpul ei, contează unde se închide. +Dacă indicatorul de buy momentum se aprinde pe bara aia, cu atât mai bine — +dar trigger-ul e închiderea, nu săgeata. Dacă ești deja într-un trend de +câteva zile și pivotul mic prinde din urmă pivotul mare fără nicio săgeată +nouă, trigger-ul rămâne tot prima închidere peste pivotul mic; altfel n-ai +avea niciodată semnal.

+ +

+ + pivot daily (mic) 587.13 + pivot daily (mic) 583.20 + Pasul 4 — aceeași linie de pivot, trei bare, un singur trigger + + pivot weekly (mare) 584.00 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + NU — prea devreme + închide peste pivotul mic, dar pivotul + mic (583.20) e încă SUB cel mare (584.00) + + + NU — n-a închis peste + urcă peste 587.13 în timpul barei, + dar se închide la 586.30, sub el + + + DA — trigger + prima ÎNCHIDERE (592.00) peste pivotul + mic 587.13, cu pivotul mic peste cel mare + Contează închiderea barei, nu cât de sus a urcat în timpul ei. +

+ + +

Trei bare, o singură intrare. Prima, verde, închide peste pivotul mic, dar +pivotul mic e încă la 583.20, sub cel mare: M nu e îndeplinit, deci nu e +trigger, oricât de convingătoare arată bara. A doua urcă peste 587.13 în +timpul ei, dar se închide la 586.30, sub el: nu e trigger. A treia se închide +la 592.00, peste 587.13, cu pivotul mic deja peste cel mare: acolo intri.

+

Dacă primul semnal te-a scos pe stop, ai voie să iei al doilea — dar primul e +cel bun statistic, și nu sări niciunul: probabilitățile strategiei se +calculează pe toate semnalele, nu pe cele pe care le-ai ales tu.

+

Treci mai departe doar dacă o bară s-a închis de partea corectă a +pivotului mic, cu M îndeplinit.

+

+

Pasul 5 — Pui stopul și calculezi mărimea poziției

+

Numeri 4 bare înapoi, începând cu bara de trigger, iei cel mai jos minim +dintre ele și acolo pui stopul.

+ +

+ 1 + 2 + 3 + 4 + Pasul 5 — numeri 4 bare înapoi de la trigger și iei cea mai joasă + + cele 4 bare pe care le numeri + + intrarea 592.00 + + stopul din regulă 586.00 — 1R = 6.00 + + swing low absolut 580.00 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + cea mai joasă dintre cele 4: 586.00 + acolo pui stopul, nu mai jos și nu mai aproape + + + minimul întregii mișcări: 580.00 + asta folosești DOAR la un bottom major, + când retesturile dese te-ar scoate degeaba — 1R devine 12.00 + + + bara de trigger: 592.00 + de aici numeri înapoi + Mărimea poziției: riscul în bani se împarte la distanța până la stop. + Cont 50.000 $ × 0.5 % = 250 $ de risc; 250 / 6.00 = 41.7 bucăți → 40 bucăți, adică două ordine de câte 20. + Risc real: 40 × 6.00 = 240 $, adică 0.48 % din cont — sub pragul de 0.5 %. +

+ + +

În exemplu, cele patru bare au minimele 586.60, 586.00, 586.10 și 586.50: +stopul e 586.00, deci 1R = 6.00, adică 1,01 % din preț. Regula e aceeași ca +la M2D, iar cursul nu-i dă o explicație; a mea, prin analogie cu +regula de trail, e că sub acel nivel valul de cumpărare care ținea mișcarea +s-a rupt, deci ideea nu mai e adevărată.

+

Nu există un procent fix: depinde de cât de volatil e simbolul. Pe SPY, +materialul dă un stop de 3,92 %; pe BRK.B, unul de 0.76 pe acțiune.

+

Două excepții:

    -
  1. Alege perechea. Pentru MP²-1 (swing, 1-3 zile): pivot daily = mic, pivot - weekly = mare, execuție pe 60 min (04_MODUL_3/04_strategia_2_mp_patrat.md:24-28; - 09_QA/10_2025-12-02.md:761-762).
  2. -
  3. Calculează/desenează cei doi pivoți. PP = (High + Low + Close) / 3 al perioadei - încheiate (03_MODUL_2/02_zone_cerere_oferta_support_resistance.md:42-45).
  4. -
  5. Confirmă M. Pivotul daily (mic) e deja deasupra pivotului weekly (mare) dacă - vrei long, sub dacă vrei short (04_MODUL_3/04_strategia_2_mp_patrat.md:35-36; - 09_QA/01_2026-08-25.md:15-19). Merge pe orice pereche: PPD/PPW, PPW/PPM, PPM/PPQ — - „nu contează că e PPD, PPV, PPM sau PPQ, orice variantă funcționează" - (09_QA/01_2026-08-25.md:45-48).
  6. -
  7. Confirmă că e crossing proaspăt. Pivotul mic a fost sub cel mare (long) în - perioada precedentă și tocmai l-a traversat. Dacă a rămas tot timpul deasupra, orice - intrare ulterioară e buy the dip (09_QA/16_2025-10-07.md:35-43).
  8. -
  9. Trigger (A). Primul Buy Momentum (BIM) sau prima candelă verde după BIM care - închide deasupra pivotului mic. Nu contează suportul/rezistența — doar linia de - pivot (04_MODUL_3/04_strategia_2_mp_patrat.md:38-40). BIM/SLM = săgeata buy/sell a - indicatorului propriu Buy/Sell Momentum Trigger (jbv2, două MA + săgeți), care apare - o singură dată, la schimbarea de trend (03_MODUL_2/10_buysell_momentum_trigger.md:4-9,29-30). - Pe short, oglindit: primul SLM - sau prima candelă roșie care închide sub pivotul mic (04_MODUL_3/04_strategia_2_mp_patrat.md:288-296).
  10. -
  11. Cazul „deja în Buy". Dacă ești deja în uptrend de câteva zile și pivotul mic - „prinde din urmă" pivotul mare fără BIM proaspăt, trigger-ul e prima candelă care - închide peste pivotul mic — altfel n-ai avea niciodată trigger - (04_MODUL_3/04_strategia_2_mp_patrat.md:97-103).
  12. +
  13. Trigger cu gap. Dacă bara de trigger deschide cu un gol față de + precedenta, stopul e minimul barei de trigger însăși. Varianta cu stopul + la jumătatea gap-ului e pentru cine are deja experiență.
  14. +
  15. Bottom sau top major. Acolo retesturile dese te scot degeaba din + poziție, iar stopul merge la swing low-ul absolut al mișcării — pe desen, + 580.00 în loc de 586.00, adică 1R devine 12.00 în loc de 6.00. E o regulă + alternativă a cursului, nu o a doua regulă de zi cu zi: o aplici doar când + știi că ești la un bottom major, și accepți că poziția se înjumătățește.
-

NU: o candelă verde puternică („BIM") care închide deasupra pivotului mic dar cu M -neîndeplinit (pivotul mic încă sub cel mare) nu e trigger (04_MODUL_3/04_strategia_2_mp_patrat.md:327-337).

-

1.3 Trigger

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
CondițieExemplu cu cifre
DAprimul BIM / SLM (sau prima candelă de culoare după el) care închide de partea corectă a pivotului mic, cu M îndeplinitLEG: pivot daily sub weekly → se deschide săptămâna și trece deasupra; prima candelă verde = trigger, SL sub low-ul de acolo (09_QA/10_2025-12-02.md:750-753)
DA — crossing fără BIM proaspăt (prețul deja în Buy; nu e „continuarea" ±1 din scaner)prima candelă care închide peste pivotul mic, chiar fără BIM „proaspăt", când pivotul mic tocmai trece peste cel mare, iar prețul e deja în trend„deja în uptrend, fără BIM nou" (04_MODUL_3/04_strategia_2_mp_patrat.md:97-103)
NU — prea devremecandelă verde puternică (BIM) dar M nu e îndeplinit (pivotul mic încă sub cel mare)punctul „NU" din diagrama cursului (04_MODUL_3/04_strategia_2_mp_patrat.md:327-337)
NU — invalidatînchideri peste pivotul mic după primul crossing, fără ca pivotul mic să fi recăzut sub cel mare = buy the dip, nu crossingHoneywell: primul semnal → SL, următoarele semnale erau buy-the-dip-uri (09_QA/16_2025-10-07.md:15-43)
NU„o candelă bullish care vine după un sell nu e trigger"TMO pe MP² 60 min (09_QA/26_2025-06-11.md:841)
-

Notă: dacă primul semnal nu e valid, poți lua al doilea — dar primul e cel bun -statistic (09_QA/01_2026-08-25.md:272-275).

-

1.4 Stop-loss

-

Unde: low-ul cel mai jos din ultimele 4 candele, calculat înapoi de la candela de -trigger (long) / high-ul cel mai sus din 4 candele (short) -(04_MODUL_3/04_strategia_2_mp_patrat.md:42-44,293-294).

-

De ce acolo: regula de 4 candele e aceeași ca la M2D (03_MODUL_2/14_strategia_1_m2d.md:57-58); -sursa nu dă motivul. Deducția mea, prin analogie cu explicația trail-ului -(03_MODUL_2/14_strategia_1_m2d.md:150-154): e nivelul care, dacă e violat, arată că valul -de cumpărare care ținea mișcarea s-a rupt.

-

Cât e în %/R: nu există un procent fix — depinde de volatilitatea simbolului (deducția -mea; cursul nu leagă stopul de ATR). Cifre reale din -material: SPY long, 1R = 22.60 = 3.92% (09_QA/01_2026-08-25.md:392,492); BRK.B, -risc 0.76 (09_QA/23_2025-07-29.md:563-564). La bottom/top major, stop-ul de 4 -candele se înlocuiește cu swing low/high-ul absolut al mișcării — asumat mult mai larg, -exemplu NVDA −23% (04_MODUL_3/04_strategia_2_mp_patrat.md:180-188).

-

Excepție gap: dacă trigger-ul vine cu gap, SL = low-ul (high-ul) candelei de trigger -însăși; variantă avansată, doar cu experiență: jumătatea gap-ului -(04_MODUL_3/04_strategia_2_mp_patrat.md:45-48,105-116). Caz înrudit, dar nu aceeași -situație: la AMD trigger-ul a venit la 19:30, iar gap-up-ul a venit după trigger, a -doua zi; low-uri citite 141.60 și 141.90 (09_QA/24_2025-07-15.md:463-466). Sursa nu -spune unde a fost pus SL-ul, deci nu e un exemplu al regulii de gap.

-

1.5 Take-profit și tranșe

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
TranșăIeșire laDe unde vine țintaCe faci cu stopul
Poziția 1 (1/2)TP1 = entry + (entry − SL)aceeași distanță ca riscul, risc/recompensă 1:1 (04_MODUL_3/04_strategia_2_mp_patrat.md:49)înainte de TP1: la 60% din drum muți SL la break-even; la 90% la 1:2 (04_MODUL_3/04_strategia_2_mp_patrat.md:278-286)
Poziția 2 (1/2)fără TP fix — bull trail (long) / bear trail (short), pe candelă închisăviolarea trail-ului = bear/bull reversal (04_MODUL_3/04_strategia_2_mp_patrat.md:50-53,317-325)după TP1 poziția rămasă e pe trail, nu pe SL fix (09_QA/01_2026-08-25.md:148-151)
Peste TP1 (opțional)euristică: încă o tranșă la ~dublul lui TP1, restul pe trailingde la TP2 în sus devine discreționar; euristica e generală, dată pe un exemplu Google cu intrare în trei bucăți, nu specifică MP² (09_QA/14_2025-10-21.md:264-280)trail pe swing low închis
-

Trail-ul poziției 2: bull trail = low-ul fiecărei candele care face un maxim nou (long); -bear trail = high-ul fiecărei candele care face un minim nou (short). Ieși la prima -candelă închisă de partea greșită a liniei, nu la wick -(04_MODUL_3/04_strategia_2_mp_patrat.md:317-325; 03_MODUL_2/14_strategia_1_m2d.md:150-159).

-

Două poziții înseamnă mărime totală multiplu de 2 (20 = 2×10; 100 = 50+50), ca să -poți închide exact jumătate. Verifică înainte de trade că platforma permite închiderea -parțială (09_QA/01_2026-08-25.md:60-73).

-

1.6 Mărimea poziției

-

Regula de risc: maxim 0.5% din cont per tranzacție pe cont prop, maxim 2% pe -cont personal; la volatilitate mare, 1% (04_MODUL_3/04_strategia_2_mp_patrat.md:52-54; -03_MODUL_2/14_strategia_1_m2d.md:66-68). Formula: bucăți = (cont × risc%) / (entry − SL), -rotunjit în jos, împărțit în două ordine egale.

-

Exemplu numeric (SPY, cifrele din material): entry 577.00, SL 554.40 → -1R = 22.60. Cont prop 50.000 $, risc 0.5% = 250 $ → 250 / 22.60 = 11.06 → -10 acțiuni (5 + 5). Risc real = 10 × 22.60 = 226 $ = 0.45% din cont. Dacă pierzi -două semnale în aceeași zi (rar la 29 de tranzacții/an), 2 × 0.5% = 1.0% — sub o -limită zilnică de 5% (prag presupus de mine, nu din curs; verifică-l pe contul tău). Observă că stopul larg (3.92%) taie poziția la 10 bucăți -dintr-un cont de 50.000 $ — asta e corect, nu o eroare (09_QA/01_2026-08-25.md:381-394,492).

-

După o serie de pierderi în parametrii normali, nu renunța la strategie: dacă știi că -poate avea, de exemplu, 6 pierderi consecutive și tocmai le-ai luat, following-ul e mai -probabil să apară tranzacția care recuperează, nu momentul să te retragi -(04_MODUL_3/04_strategia_2_mp_patrat.md:630-633).

-

1.7 Checklist de tipărit

-
    -
  • [ ] Perechea de pivoți aleasă și TF-ul de execuție e cel din tabel (C5).
  • -
  • [ ] Scanerul are nota și TF-ul prețului în pereche (C6).
  • -
  • [ ] Simbolul trece filtrul de lichiditate (C3) și de preț (C4).
  • -
  • [ ] M e îndeplinit: pivot mic peste (long) / sub (short) pivot mare.
  • -
  • [ ] E crossing nou — pivotul mic a recăzut/fost de partea cealaltă și tocmai traversează; nu e buy the dip.
  • -
  • [ ] Trigger: prima candelă (BIM/SLM sau următoarea) care închide de partea corectă a pivotului mic.
  • -
  • [ ] SL = low/high-ul ultimelor 4 candele de la trigger; la gap, low/high-ul candelei de trigger.
  • -
  • [ ] Mărimea totală e multiplu de 2, împărțită egal; risc ≤ 0.5% pe prop.
  • -
  • [ ] Ambele ordine au același SL; alerta de TP1 e pusă.
  • -
  • [ ] La bottom/top major: am înlocuit SL de 4 candele cu swing low/high-ul absolut (dacă e cazul).
  • -
+

Mărimea vine din regula de risc: cel mult 0,5 % din cont pe o tranzacție pe +un cont de prop, cel mult 2 % pe cont personal, 1 % când volatilitatea e +mare. Numărul de acțiuni e riscul în bani împărțit la distanța până la stop, +rotunjit în jos la un multiplu de 2, ca să poți închide exact jumătate.

+
+

Completare proprie (mărimea contului e a mea, pragul de 0,5 % e al +cursului): pe un cont de 50.000 $ riști cel mult 250 $. La 6.00 pe acțiune, +250 / 6.00 = 41,7, deci cumperi 40 de acțiuni, ca două ordine de câte 20. +Riscul real e 240 $, adică 0,48 % din cont. Ambele ordine au același +stop, deci cele 250 $ se împart între ele, nu se adună.

+
+

Treci mai departe doar dacă știi prețul exact al stopului, numărul de +acțiuni e un multiplu de 2 și pierderea maximă încape în regula ta de risc.

+

+

Pasul 6 — Ieși în două jumătăți: una la 1:1, una pe trail

+

Pui prima țintă la aceeași distanță deasupra intrării la care stă stopul +dedesubt, iar a doua jumătate o lași pe linia de trail.

+ +

+ + + stopul urcă la break-even + Pasul 6 — o jumătate la țintă fixă, cealaltă pe trail + + TP1 598.00 = intrarea + 1R + + 595.60 = 60 % din drum + + intrarea 592.00 + + stopul inițial 586.00 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + poziția 1 (jumătate) iese la 598.00 + exact cât riscai: 1:1, fără discuție + + + poziția 2 iese la 599.80 + prima ÎNCHIDERE sub linia de trail (600.75), + nu primul fitil care o atinge = +1.30R + Linia portocalie = bull trail: low-ul ultimei bare cu maxim nou. Rezultat: +1R pe o jumătate, +1.30R pe cealaltă. +

+ + +

Ordinea, pe exemplul din diagramă:

+
    +
  1. La 60 % din drumul spre țintă — 592.00 + 0,6 × 6.00 = 595.60 — muți + stopul la break-even, adică la 592.00. De acolo încolo nu mai poți pierde.
  2. +
  3. Prima jumătate iese la 598.00, exact cât ai riscat. Cursul e categoric + că ținta fixă e 1:1.
  4. +
  5. A doua jumătate merge pe bull trail. Linia urcă la low-ul fiecărei bare + care face un maxim nou; ajunge la 600.75, iar prima bară care se închide + sub ea se închide la 599.80. Acolo ieși, cu +1,30R.
  6. +
+

Pe tot trade-ul: ai riscat 6.00 și ai luat +1R pe o jumătate și +1,30R pe +cealaltă.

+

Două lucruri de verificat înainte, nu după: că platforma îți permite +închiderea parțială a unei poziții, și că alerta de la TP1 e pusă. Fără +prima, „două poziții" e doar o vorbă.

+

Treci la trade-ul următor doar după ce amândouă jumătățile au ieșit — la +țintă, pe trail sau la stop.


-

Nivel 2 — Nuanțele

-

2.1 Ce dă edge — ordonat după cât de des apare în material

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
#Criteriu / indicatorDe ce dă edgeCât de confirmatSursă
1Crossing (±2), nu continuare (±1)„Statistic am văzut din backtesting-urile noastre că sunt mai mari șanse să funcționeze cu crossing-ul" — continuarea e bună doar după un bottom deja prins4 ședințe Q&A distincte (oct. 2025 – apr. 2026); cel mai repetat criteriu09_QA/09_2025-12-09.md:85-94; 09_QA/10_2025-12-02.md:728-730; 09_QA/06_2026-04-28.md:14-16; 09_QA/16_2025-10-07.md:15-43
2Primul semnal, nu buy the dipaceeași strategie, statistică diferită; buy the dip duce la revenge trading3 ședințe Q&A distincte09_QA/01_2026-08-25.md:272-275; 09_QA/16_2025-10-07.md:10-79; 09_QA/06_2026-04-28.md:14-16
3Context de bottom/top major (+ confluență de niveluri, ca observație)bottom/topul major e spus de curs: MP² e „ideal pentru bottom-uri și topuri mari"; explicația cu confluența (trei niveluri = ordine de la participanți diferiți) nu e a lui Bogdan, e completarea rezumatului Q&Acontextul: 1 ședință Q&A + fișierul cursului; confluența: doar completarea rezumatului, pe un singur exemplu (SPY)09_QA/23_2025-07-29.md:1666-1668; 04_MODUL_3/04_strategia_2_mp_patrat.md:11-14; confluența: 09_QA/01_2026-08-25.md:501-507 („completarea mea")
4Nu adăuga filtre MP²-uluiorice filtru îl face discreționar, iar statisticile originale nu se mai aplicăo singură ședință, dar formulat ca interdicție explicită; se bate cu fluxul de selecție a simbolului din analiza zilnică, care pune filtre (sector, RS, relative volume) înainte de trigger (08_ANALIZA_ZILNICA/11_selectia_simbolului.md:18-20)09_QA/16_2025-10-07.md:83-106
5Volumul ca filtru opțional: ReVol > 100%„urcarea fără volum este pump before the dump"; cu trigger de buy momentum și ReVol peste 100% („nu mai zic dacă ai 150% sau 120%"), probabilitatea urcă la peste 70% de continuare a doua zi1 ședință + 1 document de analiză09_QA/09_2025-12-09.md:180-206; 08_ANALIZA_ZILNICA/11_selectia_simbolului.md:756-770
6Nu sări niciun semnalprobabilitățile se calculează pe eșantion complet; un semnal ratat poate fi cel care ducea 7 tranzacții obișnuite la profit1 sursă (fișierul cursului)04_MODUL_3/04_strategia_2_mp_patrat.md:622-625
7Continuarea (±1) are sens doar imediat după un bottom prinsdacă ești jos de tot într-un trend nou, continuările merg; nu ca semnal de căutare1 ședință09_QA/09_2025-12-09.md:85-98
8Semnal precursor: două închideri daily consecutive față de pivotla bottom, două zile cu închidere deasupra pivotului daily = schimbare bull; cu pivoții deja unul sub altul se poate ajunge la MP²1 ședință09_QA/25_2025-07-08.md:167-178
-

2.2 Setup A+ vs. setup mediocru

+

+

Oglinda — MP² pe short

+

Exemplul de mai jos e alt simbol, pe altă scară de preț (în jur de 128 $, nu +590 $); structura e aceeași, întoarsă. Pașii sunt aceiași, cu semnele opuse:

+
    +
  • M: pivotul mic e sub cel mare;
  • +
  • crossing: pivotul mic coboară prin cel mare, după ce fusese + deasupra;
  • +
  • trigger: prima bară care se închide sub pivotul mic;
  • +
  • stopul: cel mai sus maxim din ultimele 4 bare;
  • +
  • ținta: la aceeași distanță, în jos; a doua jumătate merge pe bear + trail, linia care coboară în trepte deasupra prețului.
  • +
+ +

+ + + 128.97: crossing bear + Oglinda — Sell / short: alt simbol, altă scară, aceleași reguli + + pivotul mic e deja SUB cel mare + + pivot weekly (mare) 129.60 + + stopul 129.20 + + intrarea (short) 128.00 + + TP1 126.80 = intrarea − 1R + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + aici intri short: 128.00 + prima bară care ÎNCHIDE sub pivotul mic + + + poziția 1 iese la 126.80 (1:1) + + + poziția 2 iese la 126.44, + prima închidere peste trail + Albastru în trepte = pivotul daily (mic); portocaliu = bear trail, high-ul ultimei bare cu minim nou. +

+ + +

Pe diagramă: pivotul mic coboară la 128.97, sub pivotul mare 129.60. Prima +bară care se închide sub 128.97 se închide la 128.00 — acolo intri short. +Stopul e la 129.20, cel mai sus maxim al ultimelor 4 bare, deci riști 1.20. +Prima jumătate iese la 126.80, la aceeași distanță în jos. A doua iese la +126.44, prima închidere peste linia de bear trail, tot +1,30R.

+

Ce se adaugă la short: pe BVB și pe multe conturi de prop nu poți shorta +deloc, deci jumătatea asta a strategiei pur și simplu dispare. Vezi +transferul.

+
+

+

Nivelul 3 — Rafinări

+

Astea se citesc după ce ai făcut 20 de trade-uri mecanic, nu înainte.

+

Ce face un setup A+

+

Regulile de la nivelul 2 sunt minimul. Ce separă un setup bun de unul doar +valid nu e un filtru pus în scaner, ci ce e dedesubt: dacă sub intrare +stau mai multe niveluri independente, prima corecție normală are unde se +opri; dacă nu stă nimic, între intrare și stop nu e nimic care să țină +prețul.

MP² crossing long — setup A+ vs. setup mediocru (aceeași strategie) A+ — crossing la confluență (SPY, aprilie) @@ -863,80 +1347,31 @@ probabil să apară tranzacția care recuperează, nu momentul să te retragi volum crossing (mijloc) exemplu construit, nu date reale — SL nu stă pe niciun pivot -Legendă: ce separă cele două sunt nivelurile independente dedesubte (suport quarterly + double bottom + neckline),nu un filtru pus în scaner. Panoul din dreapta e exemplu construit, nu date reale.Surse A+: 09_QA/01_2026-08-25.md:389-394, 485-490, 501-507.

+
Legendă: ce separă cele două sunt nivelurile independente dedesubte (suport quarterly + double bottom + neckline),nu un filtru pus în scaner. Panoul din dreapta e exemplu construit, nu date reale.Cifrele A+ sunt din material; trimiterile stau în fișa de surse a capitolului.

-

A+ (SPY, bottom aprilie): crossing-ul cade fix pe un suport quarterly 554.00, cu -double bottom și Inverted Head & Shoulders (umăr stâng 566 / head 555 / umăr -drept 568), neckline 578.00. Intrarea (577.00) e prima candelă verde după umărul drept; -SL 554.40 stă chiar peste suportul quarterly; 1R = 22.60; real +12% (~3R) într-o lună -(09_QA/01_2026-08-25.md:372-394,501-507).

-

Mediocru (construit, schematic): un crossing care se produce la mijlocul unui range, -fără niciun suport/pivot dedesubt și fără volum. Setup-ul e „valid" după regulile MP², -dar nu are decât structura lui: dacă vine prima corecție normală, nu există nimic care să -oprească prețul între intrare și SL.

-

Ce le separă (deducție, nu regula cursului): nu un filtru pus în scaner, ci ce e -dedesubt. Ideea că confluența de niveluri independente face diferența între un breakout -care ține și unul care eșuează e completarea autorului rezumatului Q&A, marcată acolo -„completarea mea" (09_QA/01_2026-08-25.md:501-507), nu spusa lui Bogdan. Atenție: asta e o observație despre context, nu o -regulă de adăugat — autorul spune explicit că MP² nu are filtre și că orice pui peste -devine discreționar (09_QA/16_2025-10-07.md:83-106). Practic: nu filtrezi scanerul cu -„confluență", dar când ai două semnale valide și alegi pe care pui risc, cel cu suport -major dedesubt e cel care merită.

-

2.3 Gotchas

-
    -
  1. Nu sări niciun semnal. Probabilitățile se calculează pe eșantion complet. Dacă - ratezi unul, aștepți următorul — un singur semnal ratat poate fi cel care ducea 7 - tranzacții obișnuite la profit (04_MODUL_3/04_strategia_2_mp_patrat.md:622-625).
  2. -
  3. La bottom-uri/topuri majore nu folosi stop-ul standard de 4 candele. Retesturile - dese te scot prea devreme; pune-l la swing low/high-ul absolut al mișcării - (04_MODUL_3/04_strategia_2_mp_patrat.md:626-627; 09_QA/23_2025-07-29.md:1666-1667).
  4. -
  5. Crossing vs. buy the dip. Dacă pivotul mic n-a recăzut sub cel mare, nu s-a - re-încrucișat nimic; intri pe altă strategie și îți schimbi statisticile - (09_QA/16_2025-10-07.md:35-43).
  6. -
  7. Nota scanerului și TF-ul prețului merg în pereche. Nota 1-2 → 60 min; nota 3-6 → - daily. Nepotrivirea nu dă eroare, dă rezultate false - (09_QA/09_2025-12-09.md:39-48).
  8. -
  9. Scanerul nu vede candela în formare — găsește setup-ul cu o candelă întârziere; - pe intraday se folosește Radar Screen (09_QA/09_2025-12-09.md:151-155).
  10. -
  11. „Și" vs. „sau" în scaner. Două condiții opuse (+2 și −2) în același scan = - zero rezultate; scanere separate (09_QA/09_2025-12-09.md:107-129).
  12. -
-

2.4 Contradicții și puncte neclare din material

-

1. Ce face poziția 2: bear reversal sau break-even? -- Fișierul principal spune: „Poziția 1 iese la TP1, poziția 2 iese la bear reversal - (violarea bull trail-ului)" (04_MODUL_3/04_strategia_2_mp_patrat.md:52-53). -- Q&A citează slide-ul oficial ca spunând: „poziția 1 la TP1, poziția 2 la BE" - (09_QA/01_2026-08-25.md:62-63). -- Sesiunea clarifică apoi că, după TP1, poziția rămasă e oricum pe trail, nu pe SL - fix (09_QA/01_2026-08-25.md:148-151) — deci formularea „la BE" din slide pare o - etichetare greșită, dar cele două surse nu coincid literal. -- Practic: până nu lămurești, nu trata poziția 2 ca având un TP fix. Fie o ții pe - trail (cum spune fișierul principal), fie, dacă ești set-and-forget, folosești - varianta cu SL mutat la BE după TP1 — regula e dată pentru MBAP, nu pentru MP²; - aplicarea ei la MP² e analogia mea (09_QA/09_2025-12-09.md:993-1006). Ambele te - scot din poziție diferit; alege-o pe cea pe care o poți executa disciplinat.

-

2. TP1 e 1:1 sau primul prag e la ~2R? -- Regula din fișierul principal: TP1 = aceeași distanță ca riscul → 1:1 - (04_MODUL_3/04_strategia_2_mp_patrat.md:49). -- Exemplul BRK.B raportează: risc 0.76, primul high 1.58, al doilea 2.21; - 2.21/0.76 ≈ 1:3. Primul prag (1.58) e la ~2R față de riscul 0.76 — fie TP1 din - exemplu nu e pragul 1:1, fie raportarea nu e pe unități de R. Transcrierea nu - precizează unitățile (09_QA/23_2025-07-29.md:563-566). -- Practic: nu folosi exemplul BRK.B ca sursă pentru nivelul lui TP1. Pentru regula - executabilă, folosește 1:1 (Cursul + exemplul SPY din 2.5, unde aritmetica iese exact).

-

3. „Doar ±2" vs. „continuările nu sunt inutile" (nuanță, nu contradicție dură). -- 02.12.2025: „Recomandarea lui e fermă: folosește doar ±2, crossing-urile" - (09_QA/10_2025-12-02.md:728-730). -- 09.12.2025: „continuările nu sunt inutile, doar că au sens într-un context anume — - imediat după un bottom deja identificat" (09_QA/09_2025-12-09.md:85-98). -- Practic: pentru semnal de căutare/când nu ai poziție, crossing. Continuarea e - permisă doar dacă ai deja un bottom confirmat — nu o folosi ca listă de scanare.

-

Punct neclar rămas deschis: echivalența „MP4-1 long" = „MP² 1" (uneori scris „MP -pătrat 1") nu e confirmată de fișierul principal al strategiei, care nu pomenește deloc -„MP4". Însuși documentul care le tratează o marchează ca „citirea mea" din context, -pentru că transcrierea scrie în ambele feluri (08_ANALIZA_ZILNICA/02_mbt10.md:225-241).

-

2.5 Exemplul complet, pas cu pas

+

Panoul din stânga e SPY, bottom-ul de aprilie, cu cifrele din material: +crossing-ul cade fix pe un suport trimestrial la 554.00, unde sunt și două +minime la același nivel (double bottom) și un Inverted Head & +Shoulders — un cap și doi umeri întorși cu susul în jos, cu umărul stâng la +566, capul la 555 și umărul drept la 568, iar linia care unește vârfurile +dintre ei (neckline) la 578.00. Intrarea, 577.00, e prima bară verde de +după umărul drept; stopul, 554.40, stă chiar peste suport; 1R = 22.60. +Panoul din dreapta e construit: un crossing la mijlocul unui interval, fără +nimic dedesubt.

+

Atenție la nuanță: asta e o observație despre context, nu o regulă de +adăugat. Autorul spune explicit că MP² nu are filtre și că orice pui +peste el îl face discreționar — iar dacă l-ai filtrat, nu mai poți invoca +statisticile strategiei de bază. Practic: nu filtrezi scanerul după +„confluență", dar când ai două semnale valide și trebuie să alegi pe care +pui risc, îl iei pe cel cu suport major dedesubt.

+

Un filtru de volum apare totuși ca opțional în material: ReVol (volumul +de azi față de media lui) peste 100 % pe bara de trigger. Motivul, în cuvinte +din curs, e că „urcarea fără volum este pump before the dump".

+

Alte lucruri citate mai rar: nu sări niciun semnal, pentru că probabilitățile +se calculează pe eșantion complet; și, la un bottom, două închideri daily +consecutive peste pivotul daily sunt un semn precursor că urmează crossing-ul.

+

Exemplul complet: SPY, bottom-ul de aprilie

SPY — daily @@ -1078,212 +1513,186 @@ pentru că transcrierea scrie în ambele feluri (08_ANALIZA_ZILNICA/02_mbt

-

SPY — LONG la bottom-ul de aprilie, grafic daily (Q&A 25.08.2026; sursa nu spune pe ce -combinație de pivoți). -- Context: suport quarterly la 554.00; double bottom și Inverted Head & - Shoulders (umăr stâng 566, head 555, umăr drept 568), neckline 578.00. -- M + A: pivotul mic închide deasupra pivotului mare (MP² long); trigger = prima - candelă verde după formarea umărului drept. -- Intrare: 577.00. -- SL: 554.40 — chiar peste suportul quarterly; risc 22.60 = 3.92%. -- Ținta: 4R = 667.00 (+16%). Rezultat real: 646.00 ≈ +12% (~3R), - într-o lună (început aprilie → început mai). -- De ce a mers (completarea rezumatului Q&A, nu explicația lui Bogdan): nu doar - patternul, ci trei niveluri independente suprapuse — - suport quarterly, double bottom, neckline I&S. -- Ce lipsește din material: componența exactă a celor două poziții și nivelul la care - s-a mutat stopul pe parcurs; cursul dă doar intrarea, SL și rezultatul. - (09_QA/01_2026-08-25.md:372-394,492-507.)

-

Mecanica celor 2 poziții, pe aceeași regulă (exemplu ilustrativ construit în rezumatul -Q&A, în diagramă; nu sunt cifre date de Bogdan): intrare -592.00, SL 586.00 (1R = 6.00) pe ambele poziții; TP1 598.00 (1:1) închide -poziția 1; la 595.60 (= 60% din drumul spre TP1) SL se mută la break-even; după TP1, -poziția 2 rămâne pe trail. Mărime totală 100 bucăți = 2 ordine × 50 -(09_QA/01_2026-08-25.md:75-146).

-
-

Transfer

-
-

Tot ce urmează în secțiunea asta e judecata mea, nu materialul cursului. -Unde cursul chiar spune ceva despre prop sau despre BVB, citatul e marcat -cu trimitere; restul e extrapolare și poate fi greșit.

-
-

Pe cont de prop

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Regulă de propCe stricăAjustarea
drawdown zilnic (presupun 5%, judecata mea — verifică contul tău), calculat și pe poziții deschiselimita se atinge pe pierderea flotantă; ți s-au închis tranzacții care erau pe profit (09_QA/26_2025-06-11.md:214-222)risc 0.5%/trade → chiar 2 pierderi în aceeași zi = 1%, cu marjă 5× sub limită; nu ține mai multe poziții MP² deschise simultan în aceeași zi
drawdown total (presupun 10%, judecata mea)seria de pierderi consecutive (strategia are 29 de tranzacții/an la crossing-only, deci puține, dar posibile grupate)0.5%/trade, ca să încapă o serie lungă de pierderi sub limită; nu te opri după o serie în parametrii normali — cursul cere explicit să nu renunți (04_MODUL_3/04_strategia_2_mp_patrat.md:630-633)
interdicție overnight / weekendMP²-1 stă 1-3 zile, deci are overnight (09_QA/10_2025-12-02.md:793; 09_QA/18_2025-09-23.md:78)nu poți rula MP²-1 pe un cont care interzice overnight; cursul spune că daily/weekly e „swing trading, uneori day trading" (04_MODUL_3/04_strategia_2_mp_patrat.md:26), dar nu dă reguli pentru varianta intraday; verifică regula contului înainte
news lockoutSL-ul de 4 candele e mic, iar un raport macro mișcă peste elnu deschide poziții MP²-1 cu 1-2 zile înainte de CPI/Fed/NFP; dacă ai TP1 atins, marchează măcar 1/2 (regulă generală de risc, judecata mea — nu o regulă MP²)
consistency rule (o zi nu poate fi > X% din profit)cu 29 de tranzacții/an, o singură zi bună poate deveni disproporționat de mare în totaldacă regula există, nu concentra; ține mărimea constantă, nu mări pe „ziua sigură"
-

Sizing-ul, calculat înapoi din limită: pe 50.000 $ prop, 0.5% = 250 $/tranzacție. -Exemplul SPY (entry 577.00, SL 554.40, 1R = 22.60) → 10 acțiuni. Cea mai proastă zi -realistă = 2 pierderi × 0.5% = 1.0%; chiar dublată (2.0%) rămâne ≤ 5%. Dacă stopul e -mai larg (ex. bottom major, −23% pe NVDA), poziția scade proporțional: 250 / (0.23 × -13.80) ≈ 78 acțiuni — riscul în bani rămâne 250 $, se schimbă doar mărimea. Regula -„2 poziții" nu dublează riscul: ambele ordine au același SL, deci cele 250 $ se -împart, nu se adună.

-

Verdict: merge cu ajustările de mai sus — doar MP²-1 (daily/weekly, trigger -60 min, poziție 1-3 zile, risc 0.5%). Combinațiile weekly/monthly și monthly/quarterly -(luni-ani în tranzacție) nu au ce căuta pe un cont cu drawdown zilnic și interdicție -de overnight.

-

Pe BVB (swing)

-

Ce cere strategia vs. ce există:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Ce cereExistă la BVB?Înlocuitorul concret
scaner #MP_patrat_scan (ATM)nulistă manuală de 8-10 nume BET (mai jos), verificată la închiderea zilei; pivoții se calculează în Excel
trigger Buy/Sell Momentum (jbv2, două MA + săgeți)nu — indicator propriu, „nu se poate replica" (09_QA/09_2025-12-09.md:1184-1186)nimic 1:1; folosești un trigger standard de candelă: prima candelă care închide peste pivotul mic, ideal confirmată cu buy doji/hammer; pierzi filtrul fin, nu semnalul
shortpractic nurămâi long-only; din strategie dispare simetricul short (M pe sub, SL pe high, TP în jos)
volum mediu > prag US (0.1M acțiuni / 1M acțiuni medie) și preț > 10$nu — praguri US, în acțiuni, fără sens la BVBrecalibrate pe valoare tranzacționată, nu număr de acțiuni: ceri rulaj mediu zilnic de ordinul a ~1-2 milioane RON și preț > ~5-10 RON (judecata mea, de verificat pe bvb.ro); rămâne principiul: lichiditatea e primul filtru (09_QA/09_2025-12-09.md:436-448)
date fundamentale trimestrialedaraportările periodice de pe bvb.ro; nu e condiție a strategiei, doar filtru de selecție (08_ANALIZA_ZILNICA/11_selectia_simbolului.md:5-9)
proiecții PPA și pivoți modificaținu — „nu se poate replica" (09_QA/09_2025-12-09.md:1184-1186)nu le folosești; rămâi la pivoții clasici, care „sunt 1 la 1" (09_QA/09_2025-12-09.md:1177-1178)
OBV și ATRda, standard pe orice platformăle folosești ca alternativă de volum, respectiv ca măsură a „sănătății" trendului (09_QA/09_2025-12-09.md:1181-1182)
-

Universul propus (judecata mea — ordinea de lichiditate trebuie verificată pe bvb.ro, -nu o lua ca dată):

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
SimbolDe ce e pe listăCe pierziDerivate
TLV (Banca Transilvania)cel mai lichid nume din BET, spread tipic micnimic notabilfutures pe BET, nu pe acțiune
SNP (OMV Petrom)rulaj mare, preț mic → bucăți multe, spread micmișcări lente, ATR mic—
H2O (Hidroelectrica)lichiditate bună, greutate mare în indicepreț mare pe unitate → poziții mici—
BRDlichid, spread rezonabilvolum mai mic decât primele 3—
SNG (Romgaz)lichid, mișcări pe știrigap-uri la raportări—
SNN (Nuclearelectrica)lichid, corelație cu energiespread ceva mai larg la volum mare—
EL (Electrica)lichid, volatilitate medieATR mic—
FP (Fondul Proprietatea)lichid, preț micdiscount de holding, mișcări independente—
DIGIlichid, dar spread mai larglichiditate mai subțire decât TLV/SNP—
M (MedLife)volatil, bun pentru swinglichiditate mică, spread poate sări—
-

Nu pune pe listă nume de sub ~1 milion RON rulaj mediu zilnic: acolo stopul e jucărie. -BVB nu are opțiuni listate pe acțiuni; există futures pe indici (BET, BET-TR) — util -doar dacă vrei să exprimi direcția pe indice, nu pe symbol.

-

Pivoții în Excel

-

Autorul a confirmat că pivoții clasici se calculează în Excel din OHLC, „sunt 1 la 1", iar -MP² e doar comparația a doi pivoți (09_QA/09_2025-12-09.md:1177-1180). Formula e cea -standard, predată în Modul 2 (03_MODUL_2/02_zone_cerere_oferta_support_resistance.md:42-54):

+

Ce e real: cifrele. Sursa nu spune pe ce combinație de pivoți a fost dat +semnalul.

+
    +
  • Contextul: suport trimestrial 554.00, double bottom, Inverted Head & + Shoulders cu neckline 578.00.
  • +
  • Intrarea: 577.00, prima bară verde după umărul drept, cu pivotul mic + închis peste cel mare.
  • +
  • Stopul: 554.40, chiar peste suport. Riscul, 22.60, adică 3,92 % — un + stop larg, care taie poziția la 10 acțiuni pe un cont de 50.000 $ cu risc + de 0,5 %. Asta e corect, nu o greșeală de calcul.
  • +
  • Ținta 1:1 ar fi fost 599.60; ținta declarată, de 4R, 667.00.
  • +
  • Rezultatul real: 646.00, adică circa +12 % (în jur de 3R), într-o lună.
  • +
  • Ce lipsește din material: cum au fost împărțite cele două poziții și + unde s-a mutat stopul pe parcurs.
  • +
+

Bottom major: NVDA, și de ce se schimbă stopul acolo

+ +

+ + + pivot weekly (mic) + pivot monthly (mare) + NVDA — weekly (pre-split 1:10) + + entry ~13.80 (după M+A) + + SL swing low absolut 10.63, −23% + + TP ~+25% (17.25), ~9 săpt. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + volum + minim absolut 10.63 + M+A + Bottom oct. 2022: entry ~13.80, −23%, ~+25% în ~9 săpt. Traseu și pivoți construiți (cursul nu dă valorile lor). +

+ + +

Diagrama e pe alt simbol și pe altă scară (cifre dinainte de split-ul 1:10), +iar traseul dintre niveluri e construit: cursul dă doar nivelurile. După un +downtrend masiv, pivotul mic trece peste cel mare, intrarea e la 13.80, iar +stopul nu e la minimul ultimelor 4 candele, ci la swing low-ul absolut al +mișcării, 10.63 — adică 23 % mai jos. Ținta a venit la 17.25, circa +25 % în +vreo nouă săptămâni.

+

E singurul loc din capitol unde stopul se măsoară altfel, și e o decizie +conștientă: la un bottom major retesturile dese ar mătura un stop de 4 +candele. Costul e că poziția se micșorează în aceeași proporție: riscul în +bani rămâne același, se schimbă numărul de acțiuni.

+

+

Transfer (judecata mea, nu a cursului)

+

Pe prop (cont de la o firmă, cu limită zilnică de pierdere): limita se +calculează și pe pozițiile deschise, nu doar pe cele închise, așa că o +pierdere flotantă poate să te scoată din tranzacții care erau pe profit. Cu +risc de 0,5 % pe tranzacție, chiar două pierderi în aceeași zi înseamnă 1 %, +adică mult sub o limită zilnică tipică. Problema reală e alta: MP²-1 stă 1-3 +zile, deci are overnight — poziție ținută peste noapte — iar multe +conturi de prop o interzic. Verifică regula înainte, pentru că varianta +intraday nu e descrisă în material. Combinațiile weekly/monthly și +monthly/quarterly, care înseamnă luni sau ani în tranzacție, n-au ce căuta +acolo. Și nu deschide poziții cu o zi-două înainte de un raport macro mare: +stopul de 4 bare e mai mic decât mișcarea pe care o face o astfel de știre.

+

Pe BVB: rămâi long-only, pe 8-10 nume lichide din BET verificate manual +(TLV, SNP, H2O, BRD, SNG, SNN, EL, FP, DIGI, M). Ce se poate replica 1 la 1 +sunt pivoții clasici, calculați în Excel — autorul a confirmat asta explicit. +Ce nu se poate: scanerul, indicatorul de buy/sell momentum și proiecțiile de +pivoți; le ții locul cu o listă manuală și cu trigger-ul de candelă simplu +(prima închidere peste pivotul mic). OBV și ATR există pe orice platformă.

@@ -1362,91 +1771,75 @@ standard, predată în Modul 2 (03_MODUL_2/02_zone_cerere_oferta_support_r PPD 21.57 > PPW 21.37 → CROSSING BULL (long) Cifrele sunt un exemplu construit, cu valori rotunde, pe TLV — nu sunt date reale de piață. -crossing = PPD trece deasupra PPW; dacă rămâne deasupra — continuare (09_QA/16:35-43). -Surse formule: 03_MODUL_2/02_zone_cerere_oferta_support_resistance.md:42-50 -Calcul Excel 1-la-1, MP² = comparația a doi pivoți: 09_QA/09_2025-12-09.md:1176-1180. +crossing = PPD trece deasupra PPW; dacă rămâne deasupra, e continuare, nu crossing. +Formula pivotului e cea predată în Modul 2; autorul a confirmat că se calculează 1 la 1 în Excel.

+

Pașii, pe scurt: aduni OHLC-ul perioadei încheiate, calculezi +PP = (H + L + C) / 3, repeți pentru săptămâna încheiată și compari cele două +valori. Crossing bull = pivotul zilnic a fost sub cel săptămânal și acum e +deasupra.

+

Ce se rupe din cauza lichidității, ca ordin de mărime: spread-ul de +0,5-1 % la numele medii mănâncă o bucată serioasă dintr-o țintă 1:1 de 1,5 %; +stopul de 4 bare cade des în zona zgomotului zilnic, iar soluția e să-l +lărgești și să micșorezi poziția, nu să-l apropii; iar licitația de +deschidere poate sări peste el cu un gap. Practic: merge degradat, +undeva la 60-70 % din strategie, doar pe long.

+

Unde se contrazice materialul

    -
  1. Adună OHLC perioadei încheiate. Pentru MP²-1 ai nevoie de două foi: una pentru - ziua încheiată (pivotul daily, PPD) și una pentru săptămâna încheiată (pivotul weekly, - PPW).
  2. -
  3. Calculează PP: PP = (High + Low + Close) / 3. În Excel, dacă H e în B2, L în C2, - C în D2: = (B2+C2+D2)/3.
  4. -
  5. Derivează nivelurile (opțional pentru MP², obligatoriu dacă le folosești ca - suport/rezistență): R1 = 2*PP − Low → =2*E2-C2; S1 = 2*PP − High → =2*E2-B2; - R2 = PP + (High − Low) → =E2+(B2-C2); S2 = PP − (High − Low) → =E2-(B2-C2).
  6. -
  7. Repetă pe weekly și adu PPW în aceeași foaie.
  8. -
  9. Compară PPD cu PPW. Crossing bull = PPD a fost sub PPW și acum e deasupra. - Crossing bear = invers. Continuare = PPD e deasupra, dar a rămas deasupra de mai - multe perioade — acela nu e crossing (09_QA/16_2025-10-07.md:35-43).
  10. +
  11. Ce face poziția 2. Fișierul principal spune că iese la bear reversal + (violarea bull trail-ului); un slide citat într-o sesiune de întrebări + spune „la break-even". Aceeași sesiune clarifică apoi că, după prima + țintă, poziția rămasă e oricum pe trail. Practic: nu-i da un TP fix. + Alege între trail și „stop la break-even, apoi las-o să meargă", și + ține-te de alegere.
  12. +
  13. Unde e primul prag. Regula scrisă e 1:1. Exemplul BRK.B raportează + risc 0.76 și un prim vârf la 1.58, adică aproape 2R — dar transcrierea nu + spune în ce unități e raportarea. Practic: folosește 1:1, și nu lua + exemplul BRK.B ca sursă pentru nivelul primei ținte.
  14. +
  15. „La 90 % la 1:2". Regula de mutare a stopului are două praguri: la + 60 % din drumul spre prima țintă, stopul merge la break-even — asta e + clar, e 595.60 în exemplul din capitol. Ce se întâmplă la 90 % (597.40) + nu e clar din material: „la 1:2" poate însemna și mutarea stopului, și o a + doua țintă. Până se lămurește, nu construi nimic pe pragul ăsta.
  16. +
  17. Doar crossing-uri, sau și continuări? O sesiune spune ferm „doar ±2"; + alta spune că și continuările au sens, dar numai imediat după un bottom + deja identificat. Practic: pentru căutare, crossing.
  18. +
  19. Punct rămas deschis: echivalența „MP4-1 long" = „MP² 1" nu e + confirmată de fișierul principal al strategiei, care nu pomenește deloc + „MP4".
-

Exemplu numeric construit (cifre rotunde, nu date reale de piață, ca să se vadă -geometria; simbol TLV): -- Săptămâna încheiată: H = 22.00, L = 20.50, C = 21.60 → PPW = (22.00+20.50+21.60)/3 - = 21.3667 ≈ 21.37. -- Ziua încheiată: H = 21.90, L = 21.00, C = 21.80 → PPD = (21.90+21.00+21.80)/3 - = 21.5667 ≈ 21.57. -- PPD (21.57) > PPW (21.37) → M îndeplinit. E crossing doar dacă în ziua precedentă - PPD era sub PPW (exemplul nu arată ziua precedentă; presupune-o). Trigger = prima candelă de - 60 min care închide peste PPD curent. SL = low-ul cel mai jos din ultimele 4 - candele de 60 min de la trigger. Dacă low-ul e 21.10, 1R = entry − 21.10; TP1 = entry - + 1R.

-

Ce se rupe din cauza lichidității (ordine de mărime — judecata mea): -- Spread-ul mănâncă din R. La numele mari (TLV, SNP) spread-ul tipic e de ordinul - a 1-2 tick-uri (~0.1-0.3%); la cele medii (M, DIGI) poate fi 0.5-1%. Un TP de 1:1 - la 2-3% supraviețuiește; un TP de 1:1 la ~1.5% e mâncat pe 20-40% de spread-ul - dus-întors. -- SL-ul de 4 candele e prins de zgomot. Range-ul zilnic tipic la numele BET mari - e ~1-2%; low-ul a 4 candele poate cădea la 2-4% sub intrare, adică exact în zona - zgomotului normal. Rezultatul: mai multe stop-uri pe wick, apoi revers. Soluția nu e - să apropii stopul, ci să-l lărgești și să micșorezi poziția. -- Gap-uri la deschidere. Licitația de la 10:00 și știrile locale pot deschide peste - SL-ul de 4 candele (1-3% gap); stopul se execută la deschidere, nu la nivelul dorit. -- Short-ul lipsește. Jumătate din simetrie (M pe sub, SL pe high, TP în jos) cade; - rămâne doar long. -- Fără scaner, screening-ul pe zeci-sute de simboluri dispare; rămâi cu 8-10 nume - verificate manual.

-

Verdict: merge degradat. Pivoții clasici și comparația celor doi pivoți se pot -replica 1:1 în Excel, iar OBV/ATR există peste tot. Ce nu se poate replica sunt -trigger-ele fine (buy/sell momentum) și detecția automată.

-

Cât din strategie supraviețuiește, în procente (judecata mea): ~60-70%, doar -long-only. Rămâne miezul logic — doi pivoți, crossing, close peste pivotul mic, SL la -4 candele (sau swing low la bottom major), TP1 1:1 și trail. Se pierde trigger-ul fin -(înlocuit cu un trigger standard de candelă), scanerul, short-ul și proiecțiile PPA.

-
-

Ce trebuie să exersezi ca s-o poți folosi

+

Ce trebuie să exersezi

    -
  1. Calculează 20 de pivoți în Excel, pe 5 simboluri, timp de 4 săptămâni. Verifică - că PPD și PPW concordă cu ce arată platforma (dacă o ai). Scop măsurabil: 20 de - perechi de pivoți calculate corect, la mână.
  2. -
  3. Marchează retroactiv 20 de crossing-uri pe grafice daily/weekly (le poți căuta - pe 2-3 ani de istoric). Pentru fiecare, notează: era crossing nou sau buy the dip? - Care a fost prima candelă de trigger? Unde era SL-ul la 4 candele?
  4. -
  5. Fă distincția crossing vs. buy the dip pe 20 de semnale, cu etichetele „DA - crossing" / „NU buy the dip". Scop: să refuzi un semnal care arată aproape identic.
  6. -
  7. Backtest manual ~100 de tranzacții (cursul cere ~300, cu durată realistă de ~2 - luni — 09_QA/16_2025-10-07.md:161-172; 100 e pragul meu de pornire, nu al cursului): crossing-only, primul semnal, SL la 4 candele, - TP1 1:1. Numără win rate-ul și câștigul mediu și compară cu 61.9% / ~8% (2025) - din material (09_QA/06_2026-04-28.md:18-21).
  8. -
  9. Ține un jurnal cu 3 coloane: a fost crossing sau buy the dip, a fost primul - semnal, a fost vreun filtru pus peste. După 20 de rânduri, ar trebui să vezi singur - de ce filtrul și buy-the-dip-ul strică statisticile.
  10. +
  11. Calculează 20 de perechi de pivoți în Excel, pe 5 simboluri, timp de 4 + săptămâni, și verifică-le față de ce arată platforma.
  12. +
  13. Marchează retroactiv 20 de crossing-uri pe grafice daily/weekly și + notează, pentru fiecare: era crossing sau buy the dip, care a fost prima + bară de trigger, unde cădea stopul de 4 bare.
  14. +
  15. Fă distincția crossing / buy the dip pe 20 de semnale, cu etichete „DA" și + „NU" — scopul e să refuzi un semnal care arată aproape identic.
  16. +
  17. Backtestează manual în jur de 100 de tranzacții (cursul cere vreo 300, cu + o durată realistă de două luni; 100 e pragul meu de pornire): numai + crossing-uri, numai primul semnal, stop la 4 bare, prima țintă 1:1. + Compară rezultatul cu 61,9 % și circa 8 % din material.
+

Legături: 03_m2d.md (același stop la 4 bare, același trail — +diferă doar sursa direcției), 01_buy_doji.md (MP² spune +unde, buy doji spune când), 04_selectia.md (filtrele +dinainte de strategie), A1_risc.md.


-

Legături

+

+

Checklist de tipărit

    -
  • Se leagă direct de M2D (03_m2d.md): același SL la 4 candele, același bull/bear - trail, aceeași regulă de poziții multiple (M2D permite 2-3, MP² 2 — 03_MODUL_2/14_strategia_1_m2d.md:64-66) — diferă doar sursa direcției (M2D = momentum pe - două TF-uri; MP² = doi pivoți). Când ai ambele semnale în același punct, le citesc ca - confirmări independente (judecata mea; la BRK.B au apărut împreună, M2D cu o candelă - înainte — 09_QA/23_2025-07-29.md:552-560).
  • -
  • Se completează cu Buy Doji / Sell Doji (01_buy_doji.md): pe BVB, MP² dă unde - (bottom-ul, crossing-ul), iar buy doji dă când (trigger-ul de candelă standard).
  • -
  • Filtrele dinainte de strategie: 04_selectia.md.
  • -
  • Risc și execuție: A1_risc.md.
  • -
  • Regula de trail și money management, integral: 03_MODUL_2/14_strategia_1_m2d.md.
  • -
+
  • [ ] (1) Perechea de pivoți aleasă; graficul de execuție e cel din tabel; simbol lichid, peste 10 $.
  • +
  • [ ] (2) Pivotul mic e peste cel mare (long) sau sub el (short).
  • +
  • [ ] (3) E crossing proaspăt — în perioada dinainte pivotul mic era de cealaltă parte.
  • +
  • [ ] (4) O bară s-a ÎNCHIS de partea corectă a pivotului mic.
  • +
  • [ ] (5) Stop la extrema ultimelor 4 bare; acțiuni = risc / distanță, rotunjit la multiplu de 2.
  • +
  • [ ] (6) Ambele ordine au același stop; alerta de la prima țintă e pusă; platforma permite închiderea parțială.
  • +
  • [ ] La bottom sau top major: am înlocuit stopul de 4 bare cu swing low-ul absolut.
  • +
  • [ ] Nu am pus niciun filtru peste strategie și nu sar niciun semnal.
  • + diff --git a/summaries/17_STRATEGII/02_mp2.md b/summaries/17_STRATEGII/02_mp2.md index bb316ed..c68a916 100644 --- a/summaries/17_STRATEGII/02_mp2.md +++ b/summaries/17_STRATEGII/02_mp2.md @@ -1,243 +1,572 @@ -# 2. MP2 (Strategia 2, pivoti dubli) +# 2. MP² (Strategia 2, pivoți dubli) -**Etichete:** `long` `short` · `swing` / `position` · `acțiuni US` / `futures` / `BVB` · -dificultate `3/5` (judecata mea) · `merge pe prop: da, cu ajustări (doar MP²-1)` · -`merge pe BVB: parțial — confirmat de autor` +**Etichete:** `long` `short` · `swing` / `position` · `acțiuni US` `futures` `BVB` · +dificultate `3/5` (judecata mea) · merge pe prop (cont finanțat de o firmă): da, cu ajustări · +merge pe BVB: parțial, doar long -**Surse:** [`04_MODUL_3/04_strategia_2_mp_patrat.md`](../04_MODUL_3/04_strategia_2_mp_patrat.md) -(fișierul principal al strategiei) · [`09_QA/09_2025-12-09.md`](../09_QA/09_2025-12-09.md) -(parametrii scanerului, lichiditate, BVB) · -[`09_QA/10_2025-12-02.md`](../09_QA/10_2025-12-02.md) (scaner, crossing vs. continuare, LEG) · -[`09_QA/16_2025-10-07.md`](../09_QA/16_2025-10-07.md) (crossing vs. buy the dip, fără filtre) · -[`09_QA/06_2026-04-28.md`](../09_QA/06_2026-04-28.md) (win rate real) · -[`09_QA/01_2026-08-25.md`](../09_QA/01_2026-08-25.md) (short, 2 poziții, exemplu SPY) · -[`09_QA/23_2025-07-29.md`](../09_QA/23_2025-07-29.md) (BRK.B, bottom-uri mari) · -[`09_QA/24_2025-07-15.md`](../09_QA/24_2025-07-15.md) (AMD) · -[`09_QA/26_2025-06-11.md`](../09_QA/26_2025-06-11.md) (TMO, prop) · -[`09_QA/14_2025-10-21.md`](../09_QA/14_2025-10-21.md) (TP2, timp la ecran) · -[`09_QA/18_2025-09-23.md`](../09_QA/18_2025-09-23.md) (overnight, Radar Screen) · -[`09_QA/25_2025-07-08.md`](../09_QA/25_2025-07-08.md) (două închideri, VXX) · -[`08_ANALIZA_ZILNICA/02_mbt10.md`](../08_ANALIZA_ZILNICA/02_mbt10.md) (MP4-1) · -[`08_ANALIZA_ZILNICA/11_selectia_simbolului.md`](../08_ANALIZA_ZILNICA/11_selectia_simbolului.md) (scaner, ReVol) · -[`03_MODUL_2/14_strategia_1_m2d.md`](../03_MODUL_2/14_strategia_1_m2d.md) (bull/bear trail, money management) · -[`03_MODUL_2/02_zone_cerere_oferta_support_resistance.md`](../03_MODUL_2/02_zone_cerere_oferta_support_resistance.md) (formula pivotului). +**Cum citești capitolul:** textul e explicația mea a materialului de curs și +nu adaugă reguli peste el; acolo unde materialul nu spune, completez, iar +bucata aceea începe cu **Completare proprie**. Diagramele de la nivelurile 1 +și 2 sunt un exemplu construit, fără ticker: traseul e desenat ca cifrele +din material să iasă din serie, iar pivoții se calculează din ea cu formula +cursului. Exemplele cu ticker (SPY, NVDA) au cifrele din curs. Trimiterile +la lecțiile din care vine fiecare pas stau separat, în +[`fise/02_mp2_surse.md`](fise/02_mp2_surse.md). ---- +# Nivelul 1 — Din avion -## Nivel 0 — Ideea +## Ce face strategia -### Ce exploatează +MP² nu se uită la niciun nivel desenat cu mâna. Se uită la **doi pivoți** — +doi „prețuri medii" calculate, unul pe o perioadă scurtă și unul pe o +perioadă lungă — și la ce poziție are cel scurt față de cel lung. Când cel +scurt trece de deasupra celui lung, prețul mediu al ultimei zile a urcat +peste prețul mediu al ultimei săptămâni: cine a cumpărat săptămâna trecută e +acum, în medie, pe profit, iar cine a vândut e pe pierdere și trebuie să +cumpere înapoi. Asta e traversarea, **crossing-ul**. -Mulțimea se uită la **un singur** nivel desenat cu ochiul (un suport, un pattern) sau la -momentum-ul prețului. MP² nu se uită la niciunul: direcția o dă **poziția relativă a doi -pivoți** din două perioade diferite — pivotul mic (daily) față de cel mare (weekly). Când -pivotul daily trece deasupra celui weekly, înseamnă că prețul mediu al ultimei zile a -urcat peste prețul mediu al ultimei săptămâni. Sursa explică mecanismul pe cazul invers -(pivot daily sub weekly): „cumpărătorii care au intrat săptămâna trecută sunt acum, în -medie, pe pierdere. Ei devin vânzători la prima revenire spre breakeven" -(`09_QA/01_2026-08-25.md:50-56`); pentru long, oglinda mecanică (deducția mea — sursa -explică doar cazul invers) e că vânzătorii de săptămâna trecută sunt cei prinși în pierdere. +Crossing-ul nu e semnal de intrare. E permisiunea. Intri abia la prima bară +care se **închide** de partea corectă a pivotului scurt, pui stopul la +extrema ultimelor 4 bare, iei jumătate din poziție la o țintă egală cu +riscul și lași cealaltă jumătate pe o linie care urcă în urma prețului. -A doua ineficiență, cea asupra căreia cursul revine cel mai des: majoritatea confundă -**crossing-ul** (pivotul mic traversează pivotul mare) cu **buy the dip** (pivotul mic a -rămas deasupra și doar prețul mai face o candelă peste el). Arată aproape la fel pe -grafic, dar au statistici diferite: semnalele care au mers erau crossing-uri, cele care -n-au mers erau buy-the-dip-uri (`09_QA/16_2025-10-07.md:35-43`). -Cursul insistă că e cea mai bună strategie a lui tocmai pentru **schimbări majore de -trend** (topuri/bottom-uri), pentru că un crossing two-timeframe e o confirmare mai -puternică decât un pattern vizual izolat (`04_MODUL_3/04_strategia_2_mp_patrat.md:4-14`). +Dă puține semnale — de ordinul a 29 de tranzacții pe an dacă iei numai +crossing-uri — iar cifra raportată în material pentru 2025 e 61,9 % semnale +câștigătoare, cu un câștig mediu de circa 8 %. Deci aproape patru din zece +pierd, și stopul nu e opțional. -### Diagrama de ansamblu +Tot trade-ul, pe un exemplu construit: - - - - pivot weekly (mic) - pivot monthly (mare) - NVDA — weekly (pre-split 1:10) - - entry ~13.80 (după M+A) - - SL swing low absolut 10.63, −23% - - TP ~+25% (17.25), ~9 săpt. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - volum - minim absolut 10.63 - M+A - Bottom oct. 2022: entry ~13.80, −23%, ~+25% în ~9 săpt. Traseu și pivoți construiți (cursul nu dă valorile lor). + + + pivot daily (mic) + + crossing + Exemplu construit — bare de 60 de minute, 5 ședințe + + ziua a 4-a: pivotul mic e deja peste cel mare + + TP1 598.00 — poziția 1 + + intrarea 592.00 + + stopul 586.00 + + pivot weekly (mare) 584.00 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + volum + + + aici intri: 592.00 + prima bară care ÎNCHIDE + peste pivotul mic + + + stopul: 586.00 + minimul ultimelor 4 bare — + sub el, cumpărătorii nu mai au controlul + + + poziția 1 iese la 598.00: + exact cât ai riscat (1:1) + + + poziția 2 iese la 599.80, + prima închidere sub trail + Crossing: pivotul mic urcă de la 583.20 la 587.13, peste cel mare (584.00) — de-abia de acolo cauți trigger-ul. -*Exemplul din curs: NVDA, bottom octombrie 2022, combinația weekly/monthly (cifre -pre-split 1:10) — downtrend masiv → crossing → intrare, SL și țintă pe același grafic.* +De la stânga la dreapta: patru ședințe de câte șapte bare de 60 de minute. +Linia gri e pivotul weekly (cel mare), 584.00, care nu se mișcă toată +săptămâna. Linia albastră în trepte e pivotul daily (cel mic), recalculat +în fiecare ședință: 583.20 în ziua a treia, apoi 587.13 în a patra — acolo +trece peste cel mare, acolo e crossing-ul. Prima bară care se închide peste +587.13 se închide la 592.00: acolo intri. Stopul merge la 586.00, cel mai +jos minim al ultimelor patru bare, deci riști 6.00 pe acțiune. Jumătate din +poziție iese la 598.00, tot la 6.00 distanță. Cealaltă jumătate iese la +599.80, la prima închidere sub linia de trail. -### Fraza de decizie +## Fraza de decizie -> Când pivotul mic traversează pivotul mare (crossing, nu continuare), intru pe prima -> candelă care închide de partea corectă a pivotului mic; stop la extrema ultimelor 4 -> candele, jumătate din poziție iese la 1:1, restul pe trail. +> Cumpăr când pivotul mic tocmai a trecut peste cel mare (crossing, nu +> continuare) și o bară se închide peste pivotul mic; stopul e la cel mai +> jos minim al ultimelor 4 bare, jumătate din poziție iese la o țintă egală +> cu riscul, iar restul pe trail. -### Când NU o folosești +Pe short: vând în lipsă când pivotul mic tocmai a trecut **sub** cel mare și +o bară se închide **sub** pivotul mic, cu stopul deasupra celui mai înalt +maxim al ultimelor 4 bare și cu ținta la aceeași distanță în jos. -- **Când nu ai un crossing nou.** Dacă pivotul mic a rămas tot timpul deasupra (long) și - doar prețul a mai făcut o închidere peste el, e buy the dip — altă strategie, cu altă - statistică (`09_QA/16_2025-10-07.md:35-43`). -- **Când ai pus un filtru peste ea.** „Pe MP pătrat n-am scris nimic de niciun filtru. […] - Tot ce pui peste este discreționar" (`09_QA/16_2025-10-07.md:88-89`). Filtrată, nu mai - poți invoca win rate-ul strategiei de bază. -- **Pe combinațiile weekly/monthly și monthly/quarterly pe un cont cu drawdown zilnic.** - Înseamnă „2-3 ani în tranzacție" (`04_MODUL_3/04_strategia_2_mp_patrat.md:30-31`); - nu are ce căuta pe prop. -- **Pe un simbol nelichid.** Filtrul de lichiditate se pune primul, înaintea setup-ului - (`09_QA/09_2025-12-09.md:436-448`). -- **Fără short, dacă instrumentul nu permite short.** Pe BVB (și pe unele conturi de - prop) jumătatea short a strategiei cade — vezi Transfer. +## Mini-glosar + +- **Bară (candelă)** — un dreptunghi care rezumă o perioadă. Are patru + prețuri: cu cât a deschis perioada (**open**), cu cât a închis (**close**), + cât de sus a urcat (**high**) și cât de jos a coborât (**low**). Corpul e + între open și close, fitilele merg până la high și low. +- **Timeframe (TF)** — cât timp acoperă o bară: pe daily, o ședință; pe + weekly, o săptămână; pe 60 de minute, o oră. O ședință americană ține de + la 9:30 la 16:00, adică 6 ore și jumătate, deci are 7 bare de 60 de + minute, ultima de o jumătate de oră. +- **Pivot (PP)** — prețul de referință al unei perioade **încheiate**: + PP = (High + Low + Close) / 3. Pivotul daily al zilei de azi se calculează + din ziua de ieri; cel weekly, din săptămâna trecută. În exemplul din + capitol: ziua a treia a avut high 588.80, low 584.20 și close 588.40, deci + pivotul zilei a patra e (588.80 + 584.20 + 588.40) / 3 = 587.13. +- **Pivotul mic și pivotul mare** — „mic" e cel al perioadei scurte (daily), + „mare" e cel al perioadei lungi (weekly). Nu se referă la valoare: pivotul + mic poate fi numeric mai mare decât cel mare, și exact asta cauți la long. +- **M** — condiția de poziție relativă: pivotul mic e **peste** cel mare + pentru long, **sub** el pentru short. În exemplu: 587.13 peste 584.00. +- **Crossing** — pivotul mic tocmai a traversat pivotul mare: în perioada + dinainte era de cealaltă parte. În exemplu: 583.20 (dedesubt) în ziua a + treia, 587.13 (deasupra) în a patra. În scaner e valoarea `+2` la long și + `−2` la short. +- **Continuare** — pivotul mic e de partea corectă, dar era acolo și înainte, + nimic nu s-a traversat. În scaner e `+1` / `−1`. Nu e un semnal de căutare. +- **Buy the dip** — cumperi o coborâre scurtă într-un trend care merge deja + în sus. Seamănă cu MP² pe grafic: și acolo o bară se închide peste pivotul + mic. Diferența e că pivotul mic n-a recăzut niciodată sub cel mare, deci + n-a fost nicio traversare. Panoul de jos al diagramei de la pasul 3 e exact + asta. +- **Trigger** — evenimentul care îți dă voie să intri. Aici: o bară care se + **închide** peste (long) sau sub (short) pivotul mic, cu M îndeplinit. +- **Buy momentum (BIM) / sell momentum (SLM)** — săgeata unui indicator + propriu al cursului, care se aprinde o singură dată, la schimbarea de + trend, când prețul trece cu forță printr-un nivel vechi. Când apare fix pe + bara care închide peste pivotul mic, ai două motive în loc de unul. Pe BVB + nu există; îi ține locul o bară obișnuită care închide peste pivot. +- **Long și short** — „long" înseamnă că ai cumpărat și câștigi dacă prețul + urcă. „Short" e invers: vinzi acum acțiuni împrumutate de la broker și le + cumperi înapoi mai târziu, deci câștigi dacă prețul scade. +- **Swing și position** — un swing ține câteva zile (MP² pe daily/weekly stă + 1-3 zile); o poziție de tip „position" ține luni sau ani (MP² pe + weekly/monthly sau monthly/quarterly). +- **Stop-loss (SL)** — prețul la care ieși automat cu pierdere, pentru că + ideea s-a dovedit greșită. Îl pui în platformă odată cu intrarea. +- **1R** — cât pierzi pe acțiune dacă te lovește stopul. Intri la 592.00, + stopul e la 586.00, deci 1R = 6.00; „+1,30R" înseamnă 7.80 pe acțiune. +- **Take-profit (TP1)** — prima țintă. Aici e la fix 1R deasupra intrării: + 592.00 + 6.00 = 598.00. Asta înseamnă „1:1". +- **Break-even (BE)** — stopul mutat exact la prețul de intrare: de acolo + încolo, cel mai rău caz e să ieși pe zero. +- **Bull trail / bear trail** — o linie care urcă (long) sau coboară (short) + în trepte în urma prețului și nu se întoarce niciodată. La long: low-ul + ultimei bare care a făcut un maxim nou. Ieși la prima bară care se + **închide** de partea greșită a liniei, nu la primul fitil care o atinge. + În exemplu, linia ajunge la 600.75, iar prima bară care se închide sub ea se închide la 599.80. +- **Bull reversal / bear reversal** — chiar momentul în care o bară închide + de partea greșită a liniei de trail. Bear reversal (închidere sub bull + trail) e semnalul de ieșire pentru poziția rămasă la long. +- **Poziții (tranșe)** — poziția împărțită în bucăți care se închid separat: + 40 de acțiuni cumpărate ca 20 + 20, ca să poți ieși cu exact jumătate la + prima țintă. +- **Swing low / swing high** — minimul, respectiv maximul, al întregii + mișcări, nu doar al ultimelor bare. În exemplu, swing low-ul e 580.00, cu + 6.00 mai jos decât stopul din regulă. +- **Lichiditate** — cât de ușor intri și ieși fără să miști prețul. Se + măsoară în acțiuni tranzacționate pe zi (în SUA) sau în bani rulați pe zi + (la BVB). +- **Gap** — un gol între bare: prețul deschide mult peste sau sub închiderea + precedentă, fără să treacă prin prețurile dintre ele. +- **Spread** — diferența dintre prețul la care poți cumpăra și cel la care + poți vinde în același moment. E un cost, și mănâncă direct din R. + +## Cei 6 pași + +[1. Perechea de TF și candidatul](#pasul-1) · +[2. Cei doi pivoți și M](#pasul-2) · +[3. Crossing, nu buy the dip](#pasul-3) · +[4. Trigger-ul](#pasul-4) · +[5. Stopul și mărimea](#pasul-5) · +[6. Ieșirea](#pasul-6) · apoi [oglinda pe short](#oglinda-short), +[rafinările](#nivelul-3) și [checklist-ul](#checklist). --- -## Nivel 1 — Regulile +# Nivelul 2 — Procedura mecanică, în 6 pași -### 1.1 Filtrul de context (înainte să te uiți la grafic) +Aici nu alegi nimic. Faci pașii în ordine. Dacă un pas nu trece, lași +simbolul și treci la următorul. -| # | Condiție | Prag | Unde o citești | Sursă | -|---|---|---|---|---| -| C1 | **M — poziția relativă a pivoților** | pivot mic **peste** pivot mare (long) / **sub** (short) | scaner `#MP_patrat_scan (ATM)`, valoarea `±2`; manual din Excel | `04_MODUL_3/04_strategia_2_mp_patrat.md:35-36`; `09_QA/01_2026-08-25.md:15-19` | -| C2 | **Crossing nou, nu continuare** | valoarea `+2`/`−2`, nu `+1`/`−1`; pivotul mic a fost de partea cealaltă și tocmai traversează | scaner / Radar Screen (verde = crossing bull, roșu = crossing bear) | `09_QA/09_2025-12-09.md:56-67,151-155`; `09_QA/10_2025-12-02.md:719-730` | -| C3 | **Lichiditate** | `daily volume > 0.1` și `average daily volume > 1` (milioane, cum le afișează indicatorul); ordine de mărime: 276.000 volum mediu/10 zile „are ceva" | filtru în scaner | `09_QA/09_2025-12-09.md:445-448` | -| C4 | **Preț minim** | `close > 10$` | filtru în scaner | `09_QA/10_2025-12-02.md:759` | -| C5 | **Combinația de pivoți și TF-ul de execuție** | daily/weekly → trigger 60 min; weekly/monthly → daily; monthly/quarterly → weekly | tabelul din curs | `04_MODUL_3/04_strategia_2_mp_patrat.md:24-31` | -| C6 | **Perechea notă-scaner ↔ TF preț** | nota 1-2 → preț 60 min; nota 3-6 → preț daily (condiție, nu recomandare) | scaner | `09_QA/09_2025-12-09.md:19-48` | -| C7 | **Sector** | fără prag în material (nu e o condiție a strategiei; apare doar în fluxul de selecție a simbolului) | — | `08_ANALIZA_ZILNICA/11_selectia_simbolului.md:18-20` | + +## Pasul 1 — Alegi perechea de timeframe-uri și deschizi două grafice -### 1.2 Setup — ce trebuie să vezi pe grafic +**Alegi perechea de pivoți și, odată cu ea, graficul pe care vei intra; apoi +păstrezi doar simbolurile lichide.** + +Cursul dă trei perechi, și fiecare vine la pachet cu TF-ul de execuție: + +| Perechea de pivoți | Unde intri | Cât ține poziția | Pivoții pe care îi tragi | +|---|---|---|---| +| daily / weekly (MP²-1) | 60 de minute | 1-3 zile | săptămânali | +| weekly / monthly | daily | luni | lunari | +| monthly / quarterly | weekly | 2-3 ani | trimestriali | + +Restul capitolului lucrează pe prima linie: pivot daily = mic, pivot weekly += mare, execuție pe 60 de minute. + +Filtrele de simbol se pun înaintea setup-ului, nu după: volum zilnic peste +0,1 milioane de acțiuni și volum mediu peste 1 milion, preț de închidere +peste 10 $. Un simbol pe care nu poți ieși nu e un setup, e o capcană. + + + + + Pasul 1 — perechea de timeframe-uri: pivoții stau pe daily, intrarea se face pe 60 min + Graficul din dreapta e aceeași bucată de piață, mărită: fiecare candelă daily din caseta punctată + e desfăcută în 7 bare de 60 de minute (ședința are 6 ore și jumătate, deci ultima bară a zilei e de 30 min). + daily: direcția + 60 min: ultimele 2 candele daily, desfăcute + + + + + + + + + + + + + + + + + + + + + + + + + + + + pivot weekly (mare) 584.00 + pivot daily (mic), în trepte + + stop 3,04 % + + + + același preț + + + + închide peste pivotul mic: aici intri + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + TP1 598.00 + + intrare 592.00 + + stop 586.00 + minimul ultimelor + 4 bare de 60 min + + pivot weekly + (mare) 584.00 + + stop 1,01 % + + același setup, stop de 3,0 ori mai mic + → de 3,0 ori mai multe acțiuni la același risc în bani + Pe daily ai fi intrat la close-ul zilei (598.20) cu stopul sub minimul ultimelor 4 zile (580.00). + Pe 60 de minute vezi unde s-a oprit coborârea, deci ai de unde măsura un stop mult mai strâns. + + + +În stânga e graficul daily: acolo se vede că pivotul mic a trecut peste cel +mare. În dreapta e aceeași bucată de piață, mărită: fiecare candelă daily +din caseta punctată e desfăcută în cele 7 bare de 60 de minute din care e +făcută, cu același open, același close, același maxim și același minim. +Ghidajele leagă colțurile casetei de colțurile cadrului mic, iar pivotul +weekly, 584.00, e trasat pe amândouă panourile, cu același număr de ambele +părți; conectorul subțire dintre panouri leagă cele două înălțimi ale +aceluiași preț — nu se pot alinia, pentru că scările au pante diferite. + +De ce te uiți acolo: pe daily vezi **că** s-a schimbat direcția, dar nu vezi +**unde** s-a oprit coborârea. Dacă ai intra pe daily, ai intra la închiderea +zilei, 598.20, cu stopul sub minimul ultimelor 4 zile, 580.00 — adică 3,04 % +risc. Pe 60 de minute intri la 592.00 cu stopul la 586.00, adică 1,01 %. La +același risc în bani, de trei ori mai multe acțiuni. + +**Treci mai departe doar dacă** ai ales perechea, ai deschis graficul pe care +vei intra și simbolul trece filtrele de lichiditate și de preț. + + +## Pasul 2 — Tragi cei doi pivoți și verifici M + +**Calculezi sau afișezi pivotul perioadei mici și pe al celei mari și te uiți +care e deasupra.** + +Formula e una singură, pentru orice perioadă: PP = (High + Low + Close) / 3, +al perioadei **încheiate**. Platforma îi desenează singură; la BVB îi +calculezi în Excel (mai jos, la transfer). + + + + + 583.20 + 587.13 + Pasul 2 — cei doi pivoți: unde stă cel mic față de cel mare + + pivotul mic e SUB cel mare: M neîndeplinit, nu cauți long + + pivotul mic e PESTE cel mare: M îndeplinit + + pivot weekly (mare) 584.00 — nu se mișcă toată săptămâna + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Linia albastră în trepte e pivotul daily (mic), recalculat în fiecare ședință; linia gri e pivotul weekly (mare). + Pivotul mare, al săptămânii încheiate: PP = (High + Low + Close) / 3 = (588.00 + 580.00 + 584.00) / 3 = 584.00 + Pivotul mic al zilei a 4-a, din ziua a 3-a încheiată: (588.80 + 584.20 + 588.40) / 3 = 587.13 + 587.13 este peste 584.00, iar în ziua a 3-a era 583.20, adică dedesubt: M îndeplinit, printr-un crossing proaspăt. + + + +Cât timp pivotul mic e sub cel mare, nu cauți long: prețul mediu al ultimei +zile e încă sub media săptămânii, adică cei care au cumpărat săptămâna +trecută sunt pe pierdere și vând la prima revenire. Când pivotul mic e +deasupra, rolurile se inversează și ai voie să cauți trigger. + +Merge pe orice pereche de pivoți — zilnic/săptămânal, săptămânal/lunar, +lunar/trimestrial. Ce se schimbă e cât ții poziția, nu regula. + +**Treci mai departe doar dacă** pivotul mic e peste cel mare (long) sau sub +el (short). + + +## Pasul 3 — Verifici că e crossing proaspăt, nu continuare + +**Te uiți la perioada dinainte: pivotul mic trebuie să fi fost de cealaltă +parte a pivotului mare.** + +Ăsta e criteriul pe care cursul revine cel mai des, în patru sesiuni de +întrebări diferite: semnalele care au mers erau traversări, cele care n-au +mers erau intrări într-un trend deja pornit. În scaner e diferența dintre +`+2` (crossing) și `+1` (continuare). - - pivot daily (cel MIC) + + pivot daily (cel MIC) DA — crossing (+2) pivot weekly (cel MARE) 62.00 - - crossing: 61.70 → 62.20 - intrare: trigger + + crossing: 61.70 → 62.20 + intrare: trigger @@ -284,8 +613,8 @@ pre-split 1:10) — downtrend masiv → crossing → intrare, SL și țintă pe - - pivot daily (cel MIC) + + pivot daily (cel MIC) NU — continuare/buy the dip (+1) pivot weekly (cel MARE) 62.00 @@ -344,139 +673,462 @@ pre-split 1:10) — downtrend masiv → crossing → intrare, SL și țintă pe -1. **Alege perechea.** Pentru MP²-1 (swing, 1-3 zile): pivot **daily** = mic, pivot - **weekly** = mare, execuție pe 60 min (`04_MODUL_3/04_strategia_2_mp_patrat.md:24-28`; - `09_QA/10_2025-12-02.md:761-762`). -2. **Calculează/desenează cei doi pivoți.** PP = (High + Low + Close) / 3 al perioadei - **încheiate** (`03_MODUL_2/02_zone_cerere_oferta_support_resistance.md:42-45`). -3. **Confirmă M.** Pivotul daily (mic) e deja **deasupra** pivotului weekly (mare) dacă - vrei long, **sub** dacă vrei short (`04_MODUL_3/04_strategia_2_mp_patrat.md:35-36`; - `09_QA/01_2026-08-25.md:15-19`). Merge pe orice pereche: PPD/PPW, PPW/PPM, PPM/PPQ — - „nu contează că e PPD, PPV, PPM sau PPQ, orice variantă funcționează" - (`09_QA/01_2026-08-25.md:45-48`). -4. **Confirmă că e crossing *proaspăt*.** Pivotul mic a fost sub cel mare (long) în - perioada precedentă și tocmai l-a traversat. Dacă a rămas tot timpul deasupra, orice - intrare ulterioară e buy the dip (`09_QA/16_2025-10-07.md:35-43`). -5. **Trigger (A).** Primul **Buy Momentum (BIM)** sau prima candelă verde după BIM care - **închide** deasupra pivotului mic. Nu contează suportul/rezistența — doar linia de - pivot (`04_MODUL_3/04_strategia_2_mp_patrat.md:38-40`). BIM/SLM = săgeata buy/sell a - indicatorului propriu Buy/Sell Momentum Trigger (`jbv2`, două MA + săgeți), care apare - o singură dată, la schimbarea de trend (`03_MODUL_2/10_buysell_momentum_trigger.md:4-9,29-30`). - Pe short, oglindit: primul SLM - sau prima candelă roșie care închide sub pivotul mic (`04_MODUL_3/04_strategia_2_mp_patrat.md:288-296`). -6. **Cazul „deja în Buy".** Dacă ești deja în uptrend de câteva zile și pivotul mic - „prinde din urmă" pivotul mare fără BIM proaspăt, trigger-ul e **prima candelă care - închide peste pivotul mic** — altfel n-ai avea niciodată trigger - (`04_MODUL_3/04_strategia_2_mp_patrat.md:97-103`). +Diagrama e pe alt simbol, deci are alte prețuri; regulile sunt aceleași. Sus, +pivotul mic urcă de la 61.70 la 62.20 și traversează pivotul mare, 62.00: +crossing. Jos, pivotul mic e de la bun început deasupra lui 62.00 și rămâne +acolo; prețul face închideri peste el, dar nu s-a re-încrucișat nimic, deci +fiecare astfel de închidere e buy the dip, nu MP². Arată aproape la fel și +au statistici diferite. -**NU:** o candelă verde puternică („BIM") care închide deasupra pivotului mic dar cu **M -neîndeplinit** (pivotul mic încă sub cel mare) nu e trigger (`04_MODUL_3/04_strategia_2_mp_patrat.md:327-337`). +Continuarea nu e inutilă, dar are un singur context în care are sens: când +ai prins deja un bottom și ești într-un trend nou. Ca listă de scanare, +crossing. -### 1.3 Trigger +Mai există o capcană de platformă: scanerul vede doar bara **închisă**, deci +îți dă setup-ul cu o bară întârziere. Pe intraday se compensează cu Radar +Screen. -| | Condiție | Exemplu cu cifre | -|---|---|---| -| **DA** | primul BIM / SLM (sau prima candelă de culoare după el) care **închide** de partea corectă a pivotului mic, cu M îndeplinit | LEG: pivot daily sub weekly → se deschide săptămâna și trece deasupra; prima candelă verde = trigger, SL sub low-ul de acolo (`09_QA/10_2025-12-02.md:750-753`) | -| **DA — crossing fără BIM proaspăt** (prețul deja în Buy; nu e „continuarea" ±1 din scaner) | prima candelă care închide peste pivotul mic, chiar fără BIM „proaspăt", când pivotul mic tocmai trece peste cel mare, iar prețul e deja în trend | „deja în uptrend, fără BIM nou" (`04_MODUL_3/04_strategia_2_mp_patrat.md:97-103`) | -| **NU — prea devreme** | candelă verde puternică (BIM) dar M nu e îndeplinit (pivotul mic încă sub cel mare) | punctul „NU" din diagrama cursului (`04_MODUL_3/04_strategia_2_mp_patrat.md:327-337`) | -| **NU — invalidat** | închideri peste pivotul mic după primul crossing, fără ca pivotul mic să fi recăzut sub cel mare = buy the dip, nu crossing | Honeywell: primul semnal → SL, următoarele semnale erau buy-the-dip-uri (`09_QA/16_2025-10-07.md:15-43`) | -| **NU** | „o candelă bullish care vine după un sell nu e trigger" | TMO pe MP² 60 min (`09_QA/26_2025-06-11.md:841`) | +**Treci mai departe doar dacă** pivotul mic era de cealaltă parte în perioada +precedentă. Dacă nu, ești pe altă strategie — lasă simbolul. -Notă: dacă primul semnal nu e valid, poți lua al doilea — dar **primul e cel bun -statistic** (`09_QA/01_2026-08-25.md:272-275`). + +## Pasul 4 — Aștepți bara care închide de partea corectă -### 1.4 Stop-loss +**Notezi pivotul mic și aștepți prima bară care se ÎNCHIDE peste el.** -**Unde:** low-ul cel mai jos din ultimele **4 candele**, calculat înapoi de la candela de -trigger (long) / high-ul cel mai sus din 4 candele (short) -(`04_MODUL_3/04_strategia_2_mp_patrat.md:42-44,293-294`). +Nu contează cât de sus urcă bara în timpul ei, contează unde se închide. +Dacă indicatorul de buy momentum se aprinde pe bara aia, cu atât mai bine — +dar trigger-ul e închiderea, nu săgeata. Dacă ești deja într-un trend de +câteva zile și pivotul mic prinde din urmă pivotul mare fără nicio săgeată +nouă, trigger-ul rămâne tot prima închidere peste pivotul mic; altfel n-ai +avea niciodată semnal. -**De ce acolo:** regula de 4 candele e aceeași ca la M2D (`03_MODUL_2/14_strategia_1_m2d.md:57-58`); -sursa nu dă motivul. Deducția mea, prin analogie cu explicația trail-ului -(`03_MODUL_2/14_strategia_1_m2d.md:150-154`): e nivelul care, dacă e violat, arată că valul -de cumpărare care ținea mișcarea s-a rupt. + + + + pivot daily (mic) 587.13 + pivot daily (mic) 583.20 + Pasul 4 — aceeași linie de pivot, trei bare, un singur trigger + + pivot weekly (mare) 584.00 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + NU — prea devreme + închide peste pivotul mic, dar pivotul + mic (583.20) e încă SUB cel mare (584.00) + + + NU — n-a închis peste + urcă peste 587.13 în timpul barei, + dar se închide la 586.30, sub el + + + DA — trigger + prima ÎNCHIDERE (592.00) peste pivotul + mic 587.13, cu pivotul mic peste cel mare + Contează închiderea barei, nu cât de sus a urcat în timpul ei. + + -**Cât e în %/R:** nu există un procent fix — depinde de volatilitatea simbolului (deducția -mea; cursul nu leagă stopul de ATR). Cifre reale din -material: SPY long, 1R = **22.60** = 3.92% (`09_QA/01_2026-08-25.md:392,492`); BRK.B, -risc **0.76** (`09_QA/23_2025-07-29.md:563-564`). La bottom/top major, stop-ul de 4 -candele se înlocuiește cu swing low/high-ul absolut al mișcării — asumat mult mai larg, -exemplu NVDA **−23%** (`04_MODUL_3/04_strategia_2_mp_patrat.md:180-188`). +Trei bare, o singură intrare. Prima, verde, închide peste pivotul mic, dar +pivotul mic e încă la 583.20, sub cel mare: M nu e îndeplinit, deci nu e +trigger, oricât de convingătoare arată bara. A doua urcă peste 587.13 în +timpul ei, dar se închide la 586.30, sub el: nu e trigger. A treia se închide +la 592.00, peste 587.13, cu pivotul mic deja peste cel mare: acolo intri. -**Excepție gap:** dacă trigger-ul vine cu gap, SL = low-ul (high-ul) candelei de trigger -însăși; variantă avansată, doar cu experiență: jumătatea gap-ului -(`04_MODUL_3/04_strategia_2_mp_patrat.md:45-48,105-116`). Caz înrudit, dar nu aceeași -situație: la AMD trigger-ul a venit la 19:30, iar gap-up-ul a venit **după** trigger, a -doua zi; low-uri citite 141.60 și 141.90 (`09_QA/24_2025-07-15.md:463-466`). Sursa nu -spune unde a fost pus SL-ul, deci nu e un exemplu al regulii de gap. +Dacă primul semnal te-a scos pe stop, ai voie să iei al doilea — dar primul e +cel bun statistic, și nu sări niciunul: probabilitățile strategiei se +calculează pe toate semnalele, nu pe cele pe care le-ai ales tu. -### 1.5 Take-profit și tranșe +**Treci mai departe doar dacă** o bară s-a închis de partea corectă a +pivotului mic, cu M îndeplinit. -| Tranșă | Ieșire la | De unde vine ținta | Ce faci cu stopul | -|---|---|---|---| -| **Poziția 1** (1/2) | TP1 = entry + (entry − SL) | aceeași distanță ca riscul, risc/recompensă **1:1** (`04_MODUL_3/04_strategia_2_mp_patrat.md:49`) | înainte de TP1: la **60%** din drum muți SL la break-even; la **90%** la 1:2 (`04_MODUL_3/04_strategia_2_mp_patrat.md:278-286`) | -| **Poziția 2** (1/2) | fără TP fix — **bull trail** (long) / **bear trail** (short), pe candelă **închisă** | violarea trail-ului = bear/bull reversal (`04_MODUL_3/04_strategia_2_mp_patrat.md:50-53,317-325`) | după TP1 poziția rămasă e pe trail, nu pe SL fix (`09_QA/01_2026-08-25.md:148-151`) | -| **Peste TP1** (opțional) | euristică: încă o tranșă la ~dublul lui TP1, restul pe trailing | de la TP2 în sus devine discreționar; euristica e generală, dată pe un exemplu Google cu intrare în trei bucăți, nu specifică MP² (`09_QA/14_2025-10-21.md:264-280`) | trail pe swing low închis | + +## Pasul 5 — Pui stopul și calculezi mărimea poziției -**Trail-ul poziției 2:** bull trail = low-ul fiecărei candele care face un maxim nou (long); -bear trail = high-ul fiecărei candele care face un minim nou (short). Ieși la prima -candelă **închisă** de partea greșită a liniei, nu la wick -(`04_MODUL_3/04_strategia_2_mp_patrat.md:317-325`; `03_MODUL_2/14_strategia_1_m2d.md:150-159`). +**Numeri 4 bare înapoi, începând cu bara de trigger, iei cel mai jos minim +dintre ele și acolo pui stopul.** -Două poziții înseamnă **mărime totală multiplu de 2** (20 = 2×10; 100 = 50+50), ca să -poți închide exact jumătate. Verifică înainte de trade că platforma permite închiderea -parțială (`09_QA/01_2026-08-25.md:60-73`). + + + 1 + 2 + 3 + 4 + Pasul 5 — numeri 4 bare înapoi de la trigger și iei cea mai joasă + + cele 4 bare pe care le numeri + + intrarea 592.00 + + stopul din regulă 586.00 — 1R = 6.00 + + swing low absolut 580.00 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + cea mai joasă dintre cele 4: 586.00 + acolo pui stopul, nu mai jos și nu mai aproape + + + minimul întregii mișcări: 580.00 + asta folosești DOAR la un bottom major, + când retesturile dese te-ar scoate degeaba — 1R devine 12.00 + + + bara de trigger: 592.00 + de aici numeri înapoi + Mărimea poziției: riscul în bani se împarte la distanța până la stop. + Cont 50.000 $ × 0.5 % = 250 $ de risc; 250 / 6.00 = 41.7 bucăți → 40 bucăți, adică două ordine de câte 20. + Risc real: 40 × 6.00 = 240 $, adică 0.48 % din cont — sub pragul de 0.5 %. + + -### 1.6 Mărimea poziției +În exemplu, cele patru bare au minimele 586.60, 586.00, 586.10 și 586.50: +stopul e 586.00, deci 1R = 6.00, adică 1,01 % din preț. Regula e aceeași ca +la [M2D](03_m2d.md), iar cursul nu-i dă o explicație; a mea, prin analogie cu +regula de trail, e că sub acel nivel valul de cumpărare care ținea mișcarea +s-a rupt, deci ideea nu mai e adevărată. -**Regula de risc:** maxim **0.5% din cont per tranzacție pe cont prop**, maxim **2% pe -cont personal**; la volatilitate mare, **1%** (`04_MODUL_3/04_strategia_2_mp_patrat.md:52-54`; -`03_MODUL_2/14_strategia_1_m2d.md:66-68`). Formula: `bucăți = (cont × risc%) / (entry − SL)`, -rotunjit **în jos**, împărțit în două ordine egale. +Nu există un procent fix: depinde de cât de volatil e simbolul. Pe SPY, +materialul dă un stop de 3,92 %; pe BRK.B, unul de 0.76 pe acțiune. -**Exemplu numeric (SPY, cifrele din material):** entry **577.00**, SL **554.40** → -1R = 22.60. Cont prop **50.000 $**, risc 0.5% = **250 $** → 250 / 22.60 = **11.06** → -**10 acțiuni** (5 + 5). Risc real = 10 × 22.60 = **226 $** = 0.45% din cont. Dacă pierzi -două semnale în aceeași zi (rar la 29 de tranzacții/an), 2 × 0.5% = **1.0%** — sub o -limită zilnică de 5% (prag presupus de mine, nu din curs; verifică-l pe contul tău). Observă că stopul larg (3.92%) taie poziția la 10 bucăți -dintr-un cont de 50.000 $ — asta e corect, nu o eroare (`09_QA/01_2026-08-25.md:381-394,492`). +Două excepții: -După o serie de pierderi în parametrii normali, **nu renunța** la strategie: dacă știi că -poate avea, de exemplu, 6 pierderi consecutive și tocmai le-ai luat, following-ul e mai -probabil să apară tranzacția care recuperează, nu momentul să te retragi -(`04_MODUL_3/04_strategia_2_mp_patrat.md:630-633`). +1. **Trigger cu gap.** Dacă bara de trigger deschide cu un gol față de + precedenta, stopul e minimul barei de trigger însăși. Varianta cu stopul + la jumătatea gap-ului e pentru cine are deja experiență. +2. **Bottom sau top major.** Acolo retesturile dese te scot degeaba din + poziție, iar stopul merge la swing low-ul absolut al mișcării — pe desen, + 580.00 în loc de 586.00, adică 1R devine 12.00 în loc de 6.00. E o regulă + alternativă a cursului, nu o a doua regulă de zi cu zi: o aplici doar când + știi că ești la un bottom major, și accepți că poziția se înjumătățește. -### 1.7 Checklist de tipărit +Mărimea vine din regula de risc: cel mult 0,5 % din cont pe o tranzacție pe +un cont de prop, cel mult 2 % pe cont personal, 1 % când volatilitatea e +mare. Numărul de acțiuni e riscul în bani împărțit la distanța până la stop, +rotunjit în jos la un **multiplu de 2**, ca să poți închide exact jumătate. -- [ ] Perechea de pivoți aleasă și TF-ul de execuție e cel din tabel (C5). -- [ ] Scanerul are nota și TF-ul prețului în pereche (C6). -- [ ] Simbolul trece filtrul de lichiditate (C3) și de preț (C4). -- [ ] **M** e îndeplinit: pivot mic peste (long) / sub (short) pivot mare. -- [ ] E **crossing nou** — pivotul mic a recăzut/fost de partea cealaltă și tocmai traversează; nu e buy the dip. -- [ ] Trigger: prima candelă (BIM/SLM sau următoarea) care **închide** de partea corectă a pivotului mic. -- [ ] SL = low/high-ul ultimelor 4 candele de la trigger; la gap, low/high-ul candelei de trigger. -- [ ] Mărimea totală e multiplu de 2, împărțită egal; risc ≤ 0.5% pe prop. -- [ ] Ambele ordine au același SL; alerta de TP1 e pusă. -- [ ] La bottom/top major: am înlocuit SL de 4 candele cu swing low/high-ul absolut (dacă e cazul). +> **Completare proprie** (mărimea contului e a mea, pragul de 0,5 % e al +> cursului): pe un cont de 50.000 $ riști cel mult 250 $. La 6.00 pe acțiune, +> 250 / 6.00 = 41,7, deci cumperi 40 de acțiuni, ca două ordine de câte 20. +> Riscul real e 240 $, adică 0,48 % din cont. Ambele ordine au **același** +> stop, deci cele 250 $ se împart între ele, nu se adună. + +**Treci mai departe doar dacă** știi prețul exact al stopului, numărul de +acțiuni e un multiplu de 2 și pierderea maximă încape în regula ta de risc. + + +## Pasul 6 — Ieși în două jumătăți: una la 1:1, una pe trail + +**Pui prima țintă la aceeași distanță deasupra intrării la care stă stopul +dedesubt, iar a doua jumătate o lași pe linia de trail.** + + + + + + stopul urcă la break-even + Pasul 6 — o jumătate la țintă fixă, cealaltă pe trail + + TP1 598.00 = intrarea + 1R + + 595.60 = 60 % din drum + + intrarea 592.00 + + stopul inițial 586.00 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + poziția 1 (jumătate) iese la 598.00 + exact cât riscai: 1:1, fără discuție + + + poziția 2 iese la 599.80 + prima ÎNCHIDERE sub linia de trail (600.75), + nu primul fitil care o atinge = +1.30R + Linia portocalie = bull trail: low-ul ultimei bare cu maxim nou. Rezultat: +1R pe o jumătate, +1.30R pe cealaltă. + + + +Ordinea, pe exemplul din diagramă: + +1. **La 60 % din drumul spre țintă** — 592.00 + 0,6 × 6.00 = 595.60 — muți + stopul la break-even, adică la 592.00. De acolo încolo nu mai poți pierde. +2. **Prima jumătate iese la 598.00**, exact cât ai riscat. Cursul e categoric + că ținta fixă e 1:1. +3. **A doua jumătate merge pe bull trail.** Linia urcă la low-ul fiecărei bare + care face un maxim nou; ajunge la 600.75, iar prima bară care se **închide** + sub ea se închide la 599.80. Acolo ieși, cu +1,30R. + +Pe tot trade-ul: ai riscat 6.00 și ai luat +1R pe o jumătate și +1,30R pe +cealaltă. + +Două lucruri de verificat înainte, nu după: că platforma îți permite +închiderea parțială a unei poziții, și că alerta de la TP1 e pusă. Fără +prima, „două poziții" e doar o vorbă. + +**Treci la trade-ul următor doar după ce** amândouă jumătățile au ieșit — la +țintă, pe trail sau la stop. --- -## Nivel 2 — Nuanțele + +# Oglinda — MP² pe short -### 2.1 Ce dă edge — ordonat după cât de des apare în material +Exemplul de mai jos e alt simbol, pe altă scară de preț (în jur de 128 $, nu +590 $); structura e aceeași, întoarsă. Pașii sunt aceiași, cu semnele opuse: -| # | Criteriu / indicator | De ce dă edge | Cât de confirmat | Sursă | -|---|---|---|---|---| -| 1 | **Crossing (±2), nu continuare (±1)** | „Statistic am văzut din backtesting-urile noastre că sunt mai mari șanse să funcționeze cu crossing-ul" — continuarea e bună doar după un bottom deja prins | 4 ședințe Q&A distincte (oct. 2025 – apr. 2026); cel mai repetat criteriu | `09_QA/09_2025-12-09.md:85-94`; `09_QA/10_2025-12-02.md:728-730`; `09_QA/06_2026-04-28.md:14-16`; `09_QA/16_2025-10-07.md:15-43` | -| 2 | **Primul semnal, nu buy the dip** | aceeași strategie, statistică diferită; buy the dip duce la revenge trading | 3 ședințe Q&A distincte | `09_QA/01_2026-08-25.md:272-275`; `09_QA/16_2025-10-07.md:10-79`; `09_QA/06_2026-04-28.md:14-16` | -| 3 | **Context de bottom/top major** (+ confluență de niveluri, ca observație) | bottom/topul major e spus de curs: MP² e „ideal pentru bottom-uri și topuri mari"; explicația cu confluența (trei niveluri = ordine de la participanți diferiți) **nu e a lui Bogdan**, e completarea rezumatului Q&A | contextul: 1 ședință Q&A + fișierul cursului; confluența: doar completarea rezumatului, pe un singur exemplu (SPY) | `09_QA/23_2025-07-29.md:1666-1668`; `04_MODUL_3/04_strategia_2_mp_patrat.md:11-14`; confluența: `09_QA/01_2026-08-25.md:501-507` („completarea mea") | -| 4 | **Nu adăuga filtre MP²-ului** | orice filtru îl face discreționar, iar statisticile originale nu se mai aplică | o singură ședință, dar formulat ca interdicție explicită; se bate cu fluxul de selecție a simbolului din analiza zilnică, care pune filtre (sector, RS, relative volume) înainte de trigger (`08_ANALIZA_ZILNICA/11_selectia_simbolului.md:18-20`) | `09_QA/16_2025-10-07.md:83-106` | -| 5 | **Volumul ca filtru opțional: ReVol > 100%** | „urcarea fără volum este pump before the dump"; cu trigger de buy momentum și ReVol peste 100% („nu mai zic dacă ai 150% sau 120%"), probabilitatea urcă la peste 70% de continuare a doua zi | 1 ședință + 1 document de analiză | `09_QA/09_2025-12-09.md:180-206`; `08_ANALIZA_ZILNICA/11_selectia_simbolului.md:756-770` | -| 6 | **Nu sări niciun semnal** | probabilitățile se calculează pe eșantion complet; un semnal ratat poate fi cel care ducea 7 tranzacții obișnuite la profit | 1 sursă (fișierul cursului) | `04_MODUL_3/04_strategia_2_mp_patrat.md:622-625` | -| 7 | **Continuarea (±1) are sens doar imediat după un bottom prins** | dacă ești jos de tot într-un trend nou, continuările merg; nu ca semnal de căutare | 1 ședință | `09_QA/09_2025-12-09.md:85-98` | -| 8 | **Semnal precursor: două închideri daily consecutive față de pivot** | la bottom, două zile cu închidere deasupra pivotului daily = schimbare bull; cu pivoții deja unul sub altul se poate ajunge la MP² | 1 ședință | `09_QA/25_2025-07-08.md:167-178` | +- **M**: pivotul mic e **sub** cel mare; +- **crossing**: pivotul mic coboară **prin** cel mare, după ce fusese + deasupra; +- **trigger**: prima bară care se **închide sub** pivotul mic; +- **stopul**: cel mai **sus** maxim din ultimele 4 bare; +- **ținta**: la aceeași distanță, în **jos**; a doua jumătate merge pe bear + trail, linia care coboară în trepte deasupra prețului. -### 2.2 Setup A+ vs. setup mediocru + + + + + 128.97: crossing bear + Oglinda — Sell / short: alt simbol, altă scară, aceleași reguli + + pivotul mic e deja SUB cel mare + + pivot weekly (mare) 129.60 + + stopul 129.20 + + intrarea (short) 128.00 + + TP1 126.80 = intrarea − 1R + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + aici intri short: 128.00 + prima bară care ÎNCHIDE sub pivotul mic + + + poziția 1 iese la 126.80 (1:1) + + + poziția 2 iese la 126.44, + prima închidere peste trail + Albastru în trepte = pivotul daily (mic); portocaliu = bear trail, high-ul ultimei bare cu minim nou. + + + +Pe diagramă: pivotul mic coboară la 128.97, sub pivotul mare 129.60. Prima +bară care se închide sub 128.97 se închide la 128.00 — acolo intri short. +Stopul e la 129.20, cel mai sus maxim al ultimelor 4 bare, deci riști 1.20. +Prima jumătate iese la 126.80, la aceeași distanță în jos. A doua iese la +126.44, prima închidere peste linia de bear trail, tot +1,30R. + +Ce se adaugă la short: pe BVB și pe multe conturi de prop nu poți shorta +deloc, deci jumătatea asta a strategiei pur și simplu dispare. Vezi +[transferul](#transfer). + +--- + + +# Nivelul 3 — Rafinări + +**Astea se citesc după ce ai făcut 20 de trade-uri mecanic, nu înainte.** + +## Ce face un setup A+ + +Regulile de la nivelul 2 sunt minimul. Ce separă un setup bun de unul doar +valid nu e un filtru pus în scaner, ci **ce e dedesubt**: dacă sub intrare +stau mai multe niveluri independente, prima corecție normală are unde se +opri; dacă nu stă nimic, între intrare și stop nu e nimic care să țină +prețul. MP² crossing long — setup A+ vs. setup mediocru (aceeași strategie) @@ -699,88 +1351,35 @@ probabil să apară tranzacția care recuperează, nu momentul să te retragi volum crossing (mijloc) exemplu construit, nu date reale — SL nu stă pe niciun pivot -Legendă: ce separă cele două sunt nivelurile independente dedesubte (suport quarterly + double bottom + neckline),nu un filtru pus în scaner. Panoul din dreapta e exemplu construit, nu date reale.Surse A+: 09_QA/01_2026-08-25.md:389-394, 485-490, 501-507. +Legendă: ce separă cele două sunt nivelurile independente dedesubte (suport quarterly + double bottom + neckline),nu un filtru pus în scaner. Panoul din dreapta e exemplu construit, nu date reale.Cifrele A+ sunt din material; trimiterile stau în fișa de surse a capitolului. -**A+ (SPY, bottom aprilie):** crossing-ul cade fix pe un **suport quarterly 554.00**, cu -**double bottom** și **Inverted Head & Shoulders** (umăr stâng 566 / head 555 / umăr -drept 568), neckline 578.00. Intrarea (577.00) e prima candelă verde după umărul drept; -SL 554.40 stă chiar peste suportul quarterly; 1R = 22.60; real +12% (~3R) într-o lună -(`09_QA/01_2026-08-25.md:372-394,501-507`). +Panoul din stânga e SPY, bottom-ul de aprilie, cu cifrele din material: +crossing-ul cade fix pe un suport trimestrial la 554.00, unde sunt și două +minime la același nivel (**double bottom**) și un **Inverted Head & +Shoulders** — un cap și doi umeri întorși cu susul în jos, cu umărul stâng la +566, capul la 555 și umărul drept la 568, iar linia care unește vârfurile +dintre ei (**neckline**) la 578.00. Intrarea, 577.00, e prima bară verde de +după umărul drept; stopul, 554.40, stă chiar peste suport; 1R = 22.60. +Panoul din dreapta e construit: un crossing la mijlocul unui interval, fără +nimic dedesubt. -**Mediocru (construit, schematic):** un crossing care se produce la mijlocul unui range, -fără niciun suport/pivot dedesubt și fără volum. Setup-ul e „valid" după regulile MP², -dar nu are decât structura lui: dacă vine prima corecție normală, nu există nimic care să -oprească prețul între intrare și SL. +Atenție la nuanță: asta e o observație despre context, nu o regulă de +adăugat. Autorul spune explicit că MP² **nu are filtre** și că orice pui +peste el îl face discreționar — iar dacă l-ai filtrat, nu mai poți invoca +statisticile strategiei de bază. Practic: nu filtrezi scanerul după +„confluență", dar când ai două semnale valide și trebuie să alegi pe care +pui risc, îl iei pe cel cu suport major dedesubt. -**Ce le separă (deducție, nu regula cursului):** nu un filtru pus în scaner, ci **ce e -dedesubt**. Ideea că confluența de niveluri independente face diferența între un breakout -care ține și unul care eșuează e completarea autorului rezumatului Q&A, marcată acolo -„completarea mea" (`09_QA/01_2026-08-25.md:501-507`), nu spusa lui Bogdan. Atenție: asta e o observație despre context, nu o -regulă de adăugat — autorul spune explicit că MP² nu are filtre și că orice pui peste -devine discreționar (`09_QA/16_2025-10-07.md:83-106`). Practic: nu filtrezi scanerul cu -„confluență", dar când ai două semnale valide și alegi pe care pui risc, cel cu suport -major dedesubt e cel care merită. +Un filtru de volum apare totuși ca opțional în material: **ReVol** (volumul +de azi față de media lui) peste 100 % pe bara de trigger. Motivul, în cuvinte +din curs, e că „urcarea fără volum este pump before the dump". -### 2.3 Gotchas +Alte lucruri citate mai rar: nu sări niciun semnal, pentru că probabilitățile +se calculează pe eșantion complet; și, la un bottom, două închideri daily +consecutive peste pivotul daily sunt un semn precursor că urmează crossing-ul. -1. **Nu sări niciun semnal.** Probabilitățile se calculează pe eșantion complet. Dacă - ratezi unul, aștepți următorul — un singur semnal ratat poate fi cel care ducea 7 - tranzacții obișnuite la profit (`04_MODUL_3/04_strategia_2_mp_patrat.md:622-625`). -2. **La bottom-uri/topuri majore nu folosi stop-ul standard de 4 candele.** Retesturile - dese te scot prea devreme; pune-l la swing low/high-ul absolut al mișcării - (`04_MODUL_3/04_strategia_2_mp_patrat.md:626-627`; `09_QA/23_2025-07-29.md:1666-1667`). -3. **Crossing vs. buy the dip.** Dacă pivotul mic n-a recăzut sub cel mare, nu s-a - re-încrucișat nimic; intri pe altă strategie și îți schimbi statisticile - (`09_QA/16_2025-10-07.md:35-43`). -4. **Nota scanerului și TF-ul prețului merg în pereche.** Nota 1-2 → 60 min; nota 3-6 → - daily. Nepotrivirea nu dă eroare, dă rezultate false - (`09_QA/09_2025-12-09.md:39-48`). -5. **Scanerul nu vede candela în formare** — găsește setup-ul cu o candelă întârziere; - pe intraday se folosește Radar Screen (`09_QA/09_2025-12-09.md:151-155`). -6. **„Și" vs. „sau" în scaner.** Două condiții opuse (`+2` și `−2`) în același scan = - zero rezultate; scanere separate (`09_QA/09_2025-12-09.md:107-129`). - -### 2.4 Contradicții și puncte neclare din material - -**1. Ce face poziția 2: bear reversal sau break-even?** -- Fișierul principal spune: „Poziția 1 iese la TP1, poziția 2 iese la bear reversal - (violarea bull trail-ului)" (`04_MODUL_3/04_strategia_2_mp_patrat.md:52-53`). -- Q&A citează slide-ul oficial ca spunând: „poziția 1 la TP1, poziția 2 la BE" - (`09_QA/01_2026-08-25.md:62-63`). -- Sesiunea clarifică apoi că, după TP1, poziția rămasă e oricum pe **trail**, nu pe SL - fix (`09_QA/01_2026-08-25.md:148-151`) — deci formularea „la BE" din slide pare o - etichetare greșită, dar cele două surse nu coincid literal. -- **Practic:** până nu lămurești, nu trata poziția 2 ca având un TP fix. Fie o ții pe - trail (cum spune fișierul principal), fie, dacă ești set-and-forget, folosești - varianta cu SL mutat la BE după TP1 — regula e dată pentru **MBAP**, nu pentru MP²; - aplicarea ei la MP² e analogia mea (`09_QA/09_2025-12-09.md:993-1006`). Ambele te - scot din poziție diferit; alege-o pe cea pe care o poți executa disciplinat. - -**2. TP1 e 1:1 sau primul prag e la ~2R?** -- Regula din fișierul principal: TP1 = aceeași distanță ca riscul → **1:1** - (`04_MODUL_3/04_strategia_2_mp_patrat.md:49`). -- Exemplul BRK.B raportează: risc **0.76**, primul high **1.58**, al doilea **2.21**; - 2.21/0.76 ≈ 1:3. Primul prag (1.58) e la ~2R față de riscul 0.76 — fie TP1 din - exemplu nu e pragul 1:1, fie raportarea nu e pe unități de R. Transcrierea nu - precizează unitățile (`09_QA/23_2025-07-29.md:563-566`). -- **Practic:** nu folosi exemplul BRK.B ca sursă pentru nivelul lui TP1. Pentru regula - executabilă, folosește 1:1 (Cursul + exemplul SPY din 2.5, unde aritmetica iese exact). - -**3. „Doar ±2" vs. „continuările nu sunt inutile" (nuanță, nu contradicție dură).** -- 02.12.2025: „Recomandarea lui e fermă: folosește doar ±2, crossing-urile" - (`09_QA/10_2025-12-02.md:728-730`). -- 09.12.2025: „continuările nu sunt inutile, doar că au sens într-un context anume — - imediat după un bottom deja identificat" (`09_QA/09_2025-12-09.md:85-98`). -- **Practic:** pentru semnal de căutare/când nu ai poziție, crossing. Continuarea e - permisă doar dacă ai deja un bottom confirmat — nu o folosi ca listă de scanare. - -**Punct neclar rămas deschis:** echivalența „MP4-1 long" = „MP² 1" (uneori scris „MP -pătrat 1") nu e confirmată de fișierul principal al strategiei, care nu pomenește deloc -„MP4". Însuși documentul care le tratează o marchează ca „citirea mea" din context, -pentru că transcrierea scrie în ambele feluri (`08_ANALIZA_ZILNICA/02_mbt10.md:225-241`). - -### 2.5 Exemplul complet, pas cu pas +## Exemplul complet: SPY, bottom-ul de aprilie @@ -923,100 +1522,191 @@ pentru că transcrierea scrie în ambele feluri (`08_ANALIZA_ZILNICA/02_mbt10.md -**SPY — LONG la bottom-ul de aprilie, grafic daily** (Q&A 25.08.2026; sursa nu spune pe ce -combinație de pivoți). -- **Context:** suport quarterly la **554.00**; double bottom și **Inverted Head & - Shoulders** (umăr stâng **566**, head **555**, umăr drept **568**), neckline **578.00**. -- **M + A:** pivotul mic închide deasupra pivotului mare (MP² long); trigger = prima - candelă verde după formarea umărului drept. -- **Intrare:** **577.00**. -- **SL:** **554.40** — chiar peste suportul quarterly; risc **22.60** = **3.92%**. -- **Ținta:** 4R = **667.00** (+16%). **Rezultat real:** **646.00** ≈ **+12% (~3R)**, - într-o lună (început aprilie → început mai). -- **De ce a mers** (completarea rezumatului Q&A, nu explicația lui Bogdan): nu doar - patternul, ci trei niveluri independente suprapuse — - suport quarterly, double bottom, neckline I&S. -- **Ce lipsește din material:** componența exactă a celor două poziții și nivelul la care - s-a mutat stopul pe parcurs; cursul dă doar intrarea, SL și rezultatul. - (`09_QA/01_2026-08-25.md:372-394,492-507`.) +**Ce e real:** cifrele. Sursa nu spune pe ce combinație de pivoți a fost dat +semnalul. -**Mecanica celor 2 poziții, pe aceeași regulă (exemplu ilustrativ construit în rezumatul -Q&A, în diagramă; nu sunt cifre date de Bogdan):** intrare -**592.00**, SL **586.00** (1R = 6.00) pe ambele poziții; TP1 **598.00** (1:1) închide -poziția 1; la **595.60** (= 60% din drumul spre TP1) SL se mută la break-even; după TP1, -poziția 2 rămâne pe trail. Mărime totală **100 bucăți = 2 ordine × 50** -(`09_QA/01_2026-08-25.md:75-146`). +- **Contextul:** suport trimestrial 554.00, double bottom, Inverted Head & + Shoulders cu neckline 578.00. +- **Intrarea:** 577.00, prima bară verde după umărul drept, cu pivotul mic + închis peste cel mare. +- **Stopul:** 554.40, chiar peste suport. Riscul, 22.60, adică 3,92 % — un + stop larg, care taie poziția la 10 acțiuni pe un cont de 50.000 $ cu risc + de 0,5 %. Asta e corect, nu o greșeală de calcul. +- **Ținta 1:1** ar fi fost 599.60; ținta declarată, de 4R, 667.00. +- **Rezultatul real:** 646.00, adică circa +12 % (în jur de 3R), într-o lună. +- **Ce lipsește din material:** cum au fost împărțite cele două poziții și + unde s-a mutat stopul pe parcurs. ---- +## Bottom major: NVDA, și de ce se schimbă stopul acolo -## Transfer + + + + + pivot weekly (mic) + pivot monthly (mare) + NVDA — weekly (pre-split 1:10) + + entry ~13.80 (după M+A) + + SL swing low absolut 10.63, −23% + + TP ~+25% (17.25), ~9 săpt. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + volum + minim absolut 10.63 + M+A + Bottom oct. 2022: entry ~13.80, −23%, ~+25% în ~9 săpt. Traseu și pivoți construiți (cursul nu dă valorile lor). + + -> **Tot ce urmează în secțiunea asta e judecata mea, nu materialul cursului.** -> Unde cursul chiar spune ceva despre prop sau despre BVB, citatul e marcat -> cu trimitere; restul e extrapolare și poate fi greșit. +Diagrama e pe alt simbol și pe altă scară (cifre dinainte de split-ul 1:10), +iar traseul dintre niveluri e construit: cursul dă doar nivelurile. După un +downtrend masiv, pivotul mic trece peste cel mare, intrarea e la 13.80, iar +stopul **nu** e la minimul ultimelor 4 candele, ci la swing low-ul absolut al +mișcării, 10.63 — adică 23 % mai jos. Ținta a venit la 17.25, circa +25 % în +vreo nouă săptămâni. -### Pe cont de prop +E singurul loc din capitol unde stopul se măsoară altfel, și e o decizie +conștientă: la un bottom major retesturile dese ar mătura un stop de 4 +candele. Costul e că poziția se micșorează în aceeași proporție: riscul în +bani rămâne același, se schimbă numărul de acțiuni. -| Regulă de prop | Ce strică | Ajustarea | -|---|---|---| -| drawdown zilnic (presupun 5%, judecata mea — verifică contul tău), calculat **și pe poziții deschise** | limita se atinge pe pierderea flotantă; ți s-au închis tranzacții care erau pe profit (`09_QA/26_2025-06-11.md:214-222`) | risc 0.5%/trade → chiar 2 pierderi în aceeași zi = 1%, cu marjă 5× sub limită; nu ține mai multe poziții MP² deschise simultan în aceeași zi | -| drawdown total (presupun 10%, judecata mea) | seria de pierderi consecutive (strategia are 29 de tranzacții/an la crossing-only, deci puține, dar posibile grupate) | 0.5%/trade, ca să încapă o serie lungă de pierderi sub limită; **nu** te opri după o serie în parametrii normali — cursul cere explicit să nu renunți (`04_MODUL_3/04_strategia_2_mp_patrat.md:630-633`) | -| interdicție overnight / weekend | MP²-1 stă **1-3 zile**, deci are overnight (`09_QA/10_2025-12-02.md:793`; `09_QA/18_2025-09-23.md:78`) | nu poți rula MP²-1 pe un cont care interzice overnight; cursul spune că daily/weekly e „swing trading, uneori day trading" (`04_MODUL_3/04_strategia_2_mp_patrat.md:26`), dar nu dă reguli pentru varianta intraday; verifică regula contului înainte | -| news lockout | SL-ul de 4 candele e mic, iar un raport macro mișcă peste el | nu deschide poziții MP²-1 cu 1-2 zile înainte de CPI/Fed/NFP; dacă ai TP1 atins, marchează măcar 1/2 (regulă generală de risc, judecata mea — nu o regulă MP²) | -| consistency rule (o zi nu poate fi > X% din profit) | cu 29 de tranzacții/an, o singură zi bună poate deveni disproporționat de mare în total | dacă regula există, nu concentra; ține mărimea constantă, nu mări pe „ziua sigură" | + +## Transfer (judecata mea, nu a cursului) -**Sizing-ul, calculat înapoi din limită:** pe **50.000 $** prop, 0.5% = **250 $/tranzacție**. -Exemplul SPY (entry 577.00, SL 554.40, 1R = 22.60) → 10 acțiuni. Cea mai proastă zi -realistă = 2 pierderi × 0.5% = **1.0%**; chiar dublată (2.0%) rămâne ≤ 5%. Dacă stopul e -mai larg (ex. bottom major, −23% pe NVDA), poziția scade proporțional: 250 / (0.23 × -13.80) ≈ **78 acțiuni** — riscul în bani rămâne 250 $, se schimbă doar mărimea. Regula -„2 poziții" nu dublează riscul: ambele ordine au același SL, deci cele 250 $ se -împart, nu se adună. +**Pe prop** (cont de la o firmă, cu limită zilnică de pierdere): limita se +calculează și pe pozițiile deschise, nu doar pe cele închise, așa că o +pierdere flotantă poate să te scoată din tranzacții care erau pe profit. Cu +risc de 0,5 % pe tranzacție, chiar două pierderi în aceeași zi înseamnă 1 %, +adică mult sub o limită zilnică tipică. Problema reală e alta: MP²-1 stă 1-3 +zile, deci are **overnight** — poziție ținută peste noapte — iar multe +conturi de prop o interzic. Verifică regula înainte, pentru că varianta +intraday nu e descrisă în material. Combinațiile weekly/monthly și +monthly/quarterly, care înseamnă luni sau ani în tranzacție, n-au ce căuta +acolo. Și nu deschide poziții cu o zi-două înainte de un raport macro mare: +stopul de 4 bare e mai mic decât mișcarea pe care o face o astfel de știre. -**Verdict:** merge **cu ajustările de mai sus** — doar **MP²-1** (daily/weekly, trigger -60 min, poziție 1-3 zile, risc 0.5%). Combinațiile weekly/monthly și monthly/quarterly -(luni-ani în tranzacție) nu au ce căuta pe un cont cu drawdown zilnic și interdicție -de overnight. - -### Pe BVB (swing) - -**Ce cere strategia vs. ce există:** - -| Ce cere | Există la BVB? | Înlocuitorul concret | -|---|---|---| -| scaner `#MP_patrat_scan (ATM)` | nu | listă manuală de 8-10 nume BET (mai jos), verificată la închiderea zilei; pivoții se calculează în Excel | -| trigger Buy/Sell Momentum (`jbv2`, două MA + săgeți) | nu — indicator propriu, „nu se poate replica" (`09_QA/09_2025-12-09.md:1184-1186`) | nimic 1:1; folosești un trigger standard de candelă: prima candelă care **închide** peste pivotul mic, ideal confirmată cu buy doji/hammer; pierzi filtrul fin, nu semnalul | -| short | practic nu | rămâi long-only; din strategie dispare simetricul short (M pe sub, SL pe high, TP în jos) | -| volum mediu > prag US (0.1M acțiuni / 1M acțiuni medie) și preț > 10$ | nu — praguri US, în acțiuni, fără sens la BVB | recalibrate pe **valoare tranzacționată**, nu număr de acțiuni: ceri rulaj mediu zilnic de ordinul a ~1-2 milioane RON și preț > ~5-10 RON (judecata mea, de verificat pe bvb.ro); rămâne principiul: lichiditatea e primul filtru (`09_QA/09_2025-12-09.md:436-448`) | -| date fundamentale trimestriale | da | raportările periodice de pe bvb.ro; nu e condiție a strategiei, doar filtru de selecție (`08_ANALIZA_ZILNICA/11_selectia_simbolului.md:5-9`) | -| proiecții PPA și pivoți modificați | nu — „nu se poate replica" (`09_QA/09_2025-12-09.md:1184-1186`) | nu le folosești; rămâi la pivoții clasici, care „sunt 1 la 1" (`09_QA/09_2025-12-09.md:1177-1178`) | -| OBV și ATR | da, standard pe orice platformă | le folosești ca alternativă de volum, respectiv ca măsură a „sănătății" trendului (`09_QA/09_2025-12-09.md:1181-1182`) | - -**Universul propus (judecata mea — ordinea de lichiditate trebuie verificată pe bvb.ro, -nu o lua ca dată):** - -| Simbol | De ce e pe listă | Ce pierzi | Derivate | -|---|---|---|---| -| **TLV** (Banca Transilvania) | cel mai lichid nume din BET, spread tipic mic | nimic notabil | futures pe BET, nu pe acțiune | -| **SNP** (OMV Petrom) | rulaj mare, preț mic → bucăți multe, spread mic | mișcări lente, ATR mic | — | -| **H2O** (Hidroelectrica) | lichiditate bună, greutate mare în indice | preț mare pe unitate → poziții mici | — | -| **BRD** | lichid, spread rezonabil | volum mai mic decât primele 3 | — | -| **SNG** (Romgaz) | lichid, mișcări pe știri | gap-uri la raportări | — | -| **SNN** (Nuclearelectrica) | lichid, corelație cu energie | spread ceva mai larg la volum mare | — | -| **EL** (Electrica) | lichid, volatilitate medie | ATR mic | — | -| **FP** (Fondul Proprietatea) | lichid, preț mic | discount de holding, mișcări independente | — | -| **DIGI** | lichid, dar spread mai larg | lichiditate mai subțire decât TLV/SNP | — | -| **M** (MedLife) | volatil, bun pentru swing | lichiditate mică, spread poate sări | — | - -Nu pune pe listă nume de sub ~1 milion RON rulaj mediu zilnic: acolo stopul e jucărie. -BVB nu are opțiuni listate pe acțiuni; există futures pe indici (BET, BET-TR) — util -doar dacă vrei să exprimi direcția pe indice, nu pe symbol. - -**Pivoții în Excel** - -Autorul a confirmat că pivoții clasici se calculează în Excel din OHLC, „sunt 1 la 1", iar -MP² e doar comparația a doi pivoți (`09_QA/09_2025-12-09.md:1177-1180`). Formula e cea -standard, predată în Modul 2 (`03_MODUL_2/02_zone_cerere_oferta_support_resistance.md:42-54`): +**Pe BVB:** rămâi long-only, pe 8-10 nume lichide din BET verificate manual +(TLV, SNP, H2O, BRD, SNG, SNN, EL, FP, DIGI, M). Ce se poate replica 1 la 1 +sunt pivoții clasici, calculați în Excel — autorul a confirmat asta explicit. +Ce nu se poate: scanerul, indicatorul de buy/sell momentum și proiecțiile de +pivoți; le ții locul cu o listă manuală și cu trigger-ul de candelă simplu +(prima închidere peste pivotul mic). OBV și ATR există pe orice platformă. @@ -1096,93 +1786,76 @@ standard, predată în Modul 2 (`03_MODUL_2/02_zone_cerere_oferta_support_resist PPD 21.57 > PPW 21.37 → CROSSING BULL (long) Cifrele sunt un exemplu construit, cu valori rotunde, pe TLV — nu sunt date reale de piață. -crossing = PPD trece deasupra PPW; dacă rămâne deasupra — continuare (09_QA/16:35-43). -Surse formule: 03_MODUL_2/02_zone_cerere_oferta_support_resistance.md:42-50 -Calcul Excel 1-la-1, MP² = comparația a doi pivoți: 09_QA/09_2025-12-09.md:1176-1180. +crossing = PPD trece deasupra PPW; dacă rămâne deasupra, e continuare, nu crossing. +Formula pivotului e cea predată în Modul 2; autorul a confirmat că se calculează 1 la 1 în Excel. -1. **Adună OHLC perioadei încheiate.** Pentru MP²-1 ai nevoie de două foi: una pentru - ziua încheiată (pivotul daily, PPD) și una pentru săptămâna încheiată (pivotul weekly, - PPW). -2. **Calculează PP:** `PP = (High + Low + Close) / 3`. În Excel, dacă H e în B2, L în C2, - C în D2: `= (B2+C2+D2)/3`. -3. **Derivează nivelurile** (opțional pentru MP², obligatoriu dacă le folosești ca - suport/rezistență): `R1 = 2*PP − Low` → `=2*E2-C2`; `S1 = 2*PP − High` → `=2*E2-B2`; - `R2 = PP + (High − Low)` → `=E2+(B2-C2)`; `S2 = PP − (High − Low)` → `=E2-(B2-C2)`. -4. **Repetă pe weekly** și adu PPW în aceeași foaie. -5. **Compară PPD cu PPW.** Crossing bull = PPD a fost sub PPW și acum e deasupra. - Crossing bear = invers. Continuare = PPD e deasupra, dar a rămas deasupra de mai - multe perioade — acela **nu** e crossing (`09_QA/16_2025-10-07.md:35-43`). +Pașii, pe scurt: aduni OHLC-ul perioadei încheiate, calculezi +PP = (H + L + C) / 3, repeți pentru săptămâna încheiată și compari cele două +valori. Crossing bull = pivotul zilnic a fost sub cel săptămânal și acum e +deasupra. -**Exemplu numeric construit** (cifre rotunde, **nu date reale de piață**, ca să se vadă -geometria; simbol TLV): -- Săptămâna încheiată: H = 22.00, L = 20.50, C = 21.60 → **PPW = (22.00+20.50+21.60)/3 - = 21.3667 ≈ 21.37**. -- Ziua încheiată: H = 21.90, L = 21.00, C = 21.80 → **PPD = (21.90+21.00+21.80)/3 - = 21.5667 ≈ 21.57**. -- PPD (21.57) > PPW (21.37) → M îndeplinit. E **crossing** doar dacă în ziua precedentă - PPD era sub PPW (exemplul nu arată ziua precedentă; presupune-o). Trigger = prima candelă de - 60 min care **închide** peste PPD curent. SL = low-ul cel mai jos din ultimele 4 - candele de 60 min de la trigger. Dacă low-ul e 21.10, 1R = entry − 21.10; TP1 = entry - + 1R. +Ce se rupe din cauza lichidității, ca ordin de mărime: spread-ul de +0,5-1 % la numele medii mănâncă o bucată serioasă dintr-o țintă 1:1 de 1,5 %; +stopul de 4 bare cade des în zona zgomotului zilnic, iar soluția e să-l +lărgești și să micșorezi poziția, nu să-l apropii; iar licitația de +deschidere poate sări peste el cu un gap. Practic: **merge degradat**, +undeva la 60-70 % din strategie, doar pe long. -**Ce se rupe din cauza lichidității** (ordine de mărime — judecata mea): -- **Spread-ul mănâncă din R.** La numele mari (TLV, SNP) spread-ul tipic e de ordinul - a 1-2 tick-uri (~0.1-0.3%); la cele medii (M, DIGI) poate fi 0.5-1%. Un TP de 1:1 - la 2-3% supraviețuiește; un TP de 1:1 la ~1.5% e mâncat pe 20-40% de spread-ul - dus-întors. -- **SL-ul de 4 candele e prins de zgomot.** Range-ul zilnic tipic la numele BET mari - e ~1-2%; low-ul a 4 candele poate cădea la 2-4% sub intrare, adică exact în zona - zgomotului normal. Rezultatul: mai multe stop-uri pe wick, apoi revers. Soluția nu e - să apropii stopul, ci să-l lărgești și să micșorezi poziția. -- **Gap-uri la deschidere.** Licitația de la 10:00 și știrile locale pot deschide peste - SL-ul de 4 candele (1-3% gap); stopul se execută la deschidere, nu la nivelul dorit. -- **Short-ul lipsește.** Jumătate din simetrie (M pe sub, SL pe high, TP în jos) cade; - rămâne doar long. -- **Fără scaner**, screening-ul pe zeci-sute de simboluri dispare; rămâi cu 8-10 nume - verificate manual. +## Unde se contrazice materialul -**Verdict:** **merge degradat.** Pivoții clasici și comparația celor doi pivoți se pot -replica 1:1 în Excel, iar OBV/ATR există peste tot. Ce nu se poate replica sunt -trigger-ele fine (buy/sell momentum) și detecția automată. +1. **Ce face poziția 2.** Fișierul principal spune că iese la bear reversal + (violarea bull trail-ului); un slide citat într-o sesiune de întrebări + spune „la break-even". Aceeași sesiune clarifică apoi că, după prima + țintă, poziția rămasă e oricum pe trail. **Practic:** nu-i da un TP fix. + Alege între trail și „stop la break-even, apoi las-o să meargă", și + ține-te de alegere. +2. **Unde e primul prag.** Regula scrisă e 1:1. Exemplul BRK.B raportează + risc 0.76 și un prim vârf la 1.58, adică aproape 2R — dar transcrierea nu + spune în ce unități e raportarea. **Practic:** folosește 1:1, și nu lua + exemplul BRK.B ca sursă pentru nivelul primei ținte. +3. **„La 90 % la 1:2".** Regula de mutare a stopului are două praguri: la + 60 % din drumul spre prima țintă, stopul merge la break-even — asta e + clar, e 595.60 în exemplul din capitol. Ce se întâmplă la 90 % (597.40) + nu e clar din material: „la 1:2" poate însemna și mutarea stopului, și o a + doua țintă. Până se lămurește, nu construi nimic pe pragul ăsta. +4. **Doar crossing-uri, sau și continuări?** O sesiune spune ferm „doar ±2"; + alta spune că și continuările au sens, dar numai imediat după un bottom + deja identificat. **Practic:** pentru căutare, crossing. +5. **Punct rămas deschis:** echivalența „MP4-1 long" = „MP² 1" nu e + confirmată de fișierul principal al strategiei, care nu pomenește deloc + „MP4". -**Cât din strategie supraviețuiește, în procente** (judecata mea): **~60-70%**, doar -long-only. Rămâne miezul logic — doi pivoți, crossing, close peste pivotul mic, SL la -4 candele (sau swing low la bottom major), TP1 1:1 și trail. Se pierde trigger-ul fin -(înlocuit cu un trigger standard de candelă), scanerul, short-ul și proiecțiile PPA. +## Ce trebuie să exersezi + +1. Calculează 20 de perechi de pivoți în Excel, pe 5 simboluri, timp de 4 + săptămâni, și verifică-le față de ce arată platforma. +2. Marchează retroactiv 20 de crossing-uri pe grafice daily/weekly și + notează, pentru fiecare: era crossing sau buy the dip, care a fost prima + bară de trigger, unde cădea stopul de 4 bare. +3. Fă distincția crossing / buy the dip pe 20 de semnale, cu etichete „DA" și + „NU" — scopul e să refuzi un semnal care arată aproape identic. +4. Backtestează manual în jur de 100 de tranzacții (cursul cere vreo 300, cu + o durată realistă de două luni; 100 e pragul meu de pornire): numai + crossing-uri, numai primul semnal, stop la 4 bare, prima țintă 1:1. + Compară rezultatul cu 61,9 % și circa 8 % din material. + +Legături: [`03_m2d.md`](03_m2d.md) (același stop la 4 bare, același trail — +diferă doar sursa direcției), [`01_buy_doji.md`](01_buy_doji.md) (MP² spune +*unde*, buy doji spune *când*), [`04_selectia.md`](04_selectia.md) (filtrele +dinainte de strategie), [`A1_risc.md`](A1_risc.md). --- -## Ce trebuie să exersezi ca s-o poți folosi + +## Checklist de tipărit -1. **Calculează 20 de pivoți în Excel, pe 5 simboluri, timp de 4 săptămâni.** Verifică - că PPD și PPW concordă cu ce arată platforma (dacă o ai). Scop măsurabil: 20 de - perechi de pivoți calculate corect, la mână. -2. **Marchează retroactiv 20 de crossing-uri** pe grafice daily/weekly (le poți căuta - pe 2-3 ani de istoric). Pentru fiecare, notează: era crossing nou sau buy the dip? - Care a fost prima candelă de trigger? Unde era SL-ul la 4 candele? -3. **Fă distincția crossing vs. buy the dip pe 20 de semnale**, cu etichetele „DA - crossing" / „NU buy the dip". Scop: să refuzi un semnal care arată aproape identic. -4. **Backtest manual ~100 de tranzacții** (cursul cere ~300, cu durată realistă de ~2 - luni — `09_QA/16_2025-10-07.md:161-172`; 100 e pragul meu de pornire, nu al cursului): crossing-only, primul semnal, SL la 4 candele, - TP1 1:1. Numără win rate-ul și câștigul mediu și compară cu 61.9% / ~8% (2025) - din material (`09_QA/06_2026-04-28.md:18-21`). -5. **Ține un jurnal cu 3 coloane:** a fost crossing sau buy the dip, a fost primul - semnal, a fost vreun filtru pus peste. După 20 de rânduri, ar trebui să vezi singur - de ce filtrul și buy-the-dip-ul strică statisticile. - ---- - -## Legături - -- Se leagă direct de **M2D** ([`03_m2d.md`](03_m2d.md)): același SL la 4 candele, același bull/bear - trail, aceeași regulă de poziții multiple (M2D permite 2-3, MP² 2 — `03_MODUL_2/14_strategia_1_m2d.md:64-66`) — diferă doar sursa direcției (M2D = momentum pe - două TF-uri; MP² = doi pivoți). Când ai ambele semnale în același punct, le citesc ca - confirmări independente (judecata mea; la BRK.B au apărut împreună, M2D cu o candelă - înainte — `09_QA/23_2025-07-29.md:552-560`). -- Se completează cu **Buy Doji / Sell Doji** ([`01_buy_doji.md`](01_buy_doji.md)): pe BVB, MP² dă *unde* - (bottom-ul, crossing-ul), iar buy doji dă *când* (trigger-ul de candelă standard). -- Filtrele dinainte de strategie: [`04_selectia.md`](04_selectia.md). -- Risc și execuție: [`A1_risc.md`](A1_risc.md). -- Regula de trail și money management, integral: [`03_MODUL_2/14_strategia_1_m2d.md`](../03_MODUL_2/14_strategia_1_m2d.md). +- [ ] (1) Perechea de pivoți aleasă; graficul de execuție e cel din tabel; simbol lichid, peste 10 $. +- [ ] (2) Pivotul mic e peste cel mare (long) sau sub el (short). +- [ ] (3) E crossing proaspăt — în perioada dinainte pivotul mic era de cealaltă parte. +- [ ] (4) O bară s-a ÎNCHIS de partea corectă a pivotului mic. +- [ ] (5) Stop la extrema ultimelor 4 bare; acțiuni = risc / distanță, rotunjit la multiplu de 2. +- [ ] (6) Ambele ordine au același stop; alerta de la prima țintă e pusă; platforma permite închiderea parțială. +- [ ] La bottom sau top major: am înlocuit stopul de 4 bare cu swing low-ul absolut. +- [ ] Nu am pus niciun filtru peste strategie și nu sar niciun semnal. diff --git a/summaries/17_STRATEGII/fise/02_mp2_surse.md b/summaries/17_STRATEGII/fise/02_mp2_surse.md new file mode 100644 index 0000000..ea68ca3 --- /dev/null +++ b/summaries/17_STRATEGII/fise/02_mp2_surse.md @@ -0,0 +1,77 @@ +# Surse — 2. MP² (pivoți dubli) + +Trimiterile la material pentru [`02_mp2.md`](../02_mp2.md). Stau aici, nu în +capitol: în corpul tutorialului îngreunează cititul, dar fără ele nu se mai +poate verifica nimic. Cifrele sunt linii din fișierele de sumarizare, nu din +transcrieri. + +Textul fără trimitere e explicația mea și nu adaugă reguli; ce completez eu +începe cu **Completare proprie**. Diagramele de la Nivelul 1 și Nivelul 2 +sunt un exemplu construit, fără ticker: traseul e desenat ca cifrele din +material (intrare 592.00, stop 586.00, 1R = 6.00, TP1 598.00) să iasă din +serie, iar pivoții se calculează din ea. Exemplele cu ticker (SPY, NVDA) au +cifrele din curs. + +**Prescurtări:** +`mp2` = [`04_strategia_2_mp_patrat.md`](../../04_MODUL_3/04_strategia_2_mp_patrat.md) +(fișierul principal al strategiei) · +`m2d` = [`14_strategia_1_m2d.md`](../../03_MODUL_2/14_strategia_1_m2d.md) +(bull/bear trail, money management) · +`zone` = [`02_zone_cerere_oferta_support_resistance.md`](../../03_MODUL_2/02_zone_cerere_oferta_support_resistance.md) +(formula pivotului) · +`bim` = [`10_buysell_momentum_trigger.md`](../../03_MODUL_2/10_buysell_momentum_trigger.md) +(indicatorul de buy/sell momentum) · +`mbt10` = [`02_mbt10.md`](../../08_ANALIZA_ZILNICA/02_mbt10.md) (MP4-1) · +`selectia` = [`11_selectia_simbolului.md`](../../08_ANALIZA_ZILNICA/11_selectia_simbolului.md) +(scaner, ReVol) · +fișierele datate sunt sesiuni Q&A din [`../../09_QA/`](../../09_QA/). + +**Nivelul 1** — `mp2`: 4-14, 24-31, 35-36, 49-53 · `01_2026-08-25`: 15-19, +50-56 · `16_2025-10-07`: 35-43 · `06_2026-04-28`: 14-21. + +**Pasul 1 (perechea de TF, lichiditatea)** — `mp2`: 24-31 · +`09_2025-12-09`: 19-48, 436-448 · `10_2025-12-02`: 759, 761-762, 793 · +`18_2025-09-23`: 78 · `selectia`: 18-20. + +**Pasul 2 (cei doi pivoți, M)** — `mp2`: 35-36 · `zone`: 42-54 · +`01_2026-08-25`: 15-19, 45-48 · `09_2025-12-09`: 1177-1180. + +**Pasul 3 (crossing, nu buy the dip)** — `mp2`: 11-14 · `09_2025-12-09`: +56-67, 85-98, 107-129, 151-155 · `10_2025-12-02`: 719-730 · +`16_2025-10-07`: 15-43 · `06_2026-04-28`: 14-16 · `25_2025-07-08`: 167-178. + +**Pasul 4 (trigger)** — `mp2`: 38-40, 97-103, 288-296, 327-337 · `bim`: +4-9, 29-30 · `10_2025-12-02`: 750-753 · `26_2025-06-11`: 841 · +`01_2026-08-25`: 272-275. + +**Pasul 5 (stopul, mărimea)** — `mp2`: 42-48, 52-54, 105-116, 180-188, +293-294, 626-627 · `m2d`: 57-58, 66-68, 150-154 · `01_2026-08-25`: 381-394, +492 · `23_2025-07-29`: 563-564, 1666-1667 · `24_2025-07-15`: 463-466. + +**Pasul 6 (ieșirea)** — `mp2`: 49-53, 278-286, 317-325 · `m2d`: 150-159 · +`01_2026-08-25`: 60-73, 75-146, 148-151 · `14_2025-10-21`: 264-280 · +`09_2025-12-09`: 993-1006. + +**Oglinda (short)** — `mp2`: 288-296 · `01_2026-08-25`: 15-19, 45-48. + +**A+ și ce dă edge** — `mp2`: 11-14, 622-625, 630-633 · `09_2025-12-09`: +85-98, 180-206 · `10_2025-12-02`: 728-730 · `16_2025-10-07`: 15-43, 83-106, +161-172 · `01_2026-08-25`: 272-275, 372-394, 501-507 · `23_2025-07-29`: +1666-1668 · `06_2026-04-28`: 14-21 · `selectia`: 756-770. + +**Exemplul SPY** — `01_2026-08-25`: 372-394, 485-494, 501-507. + +**Bottom major (NVDA)** — `mp2`: 180-188, 326-335, 341-357, 435, 626-627 · +`23_2025-07-29`: 1666-1668. + +**Transfer (prop, BVB)** — `mp2`: 26, 30-31, 630-633 · `09_2025-12-09`: +436-448, 1177-1186 · `10_2025-12-02`: 793 · `18_2025-09-23`: 78 · +`26_2025-06-11`: 214-222 · `zone`: 42-54 · `selectia`: 5-9. + +**Contradicțiile** — (1) `mp2`: 52-53 · `01_2026-08-25`: 62-63, 148-151 · +`09_2025-12-09`: 993-1006; (2) `mp2`: 49 · `23_2025-07-29`: 563-566; +(3) `mp2`: 278-286; (4) `10_2025-12-02`: 728-730 · `09_2025-12-09`: 85-98; +(5) `mbt10`: 225-241. + +**Legături** — `m2d`: 64-66, 150-159 · `23_2025-07-29`: 552-560 · +`09_2025-12-09`: 1181-1186.