diff --git a/gen/strategii/hammer_mbt10_bh_aplus.py b/gen/strategii/hammer_mbt10_bh_aplus.py index 9a7a513..dc8bfd4 100644 --- a/gen/strategii/hammer_mbt10_bh_aplus.py +++ b/gen/strategii/hammer_mbt10_bh_aplus.py @@ -11,7 +11,8 @@ Același pattern ca formă (downtrend → hammer → confirmare), context opus: peste media ultimelor 10 bare — „acumulare"; - dreapta (NU): fără downtrend real (range lateral 44–46), hammer-ul în mijlocul intervalului (o=45.00, c=h=45.10, l=44.10), departe de orice - nivel (suportul construit 42.50 e la 3,6 % sub low), confirmarea închide + nivel (suportul construit 42.50 e la 3,8 % sub nivel, cu aceeași convenție + de măsurare ca la pasul A2: diferența împărțită la nivel), confirmarea închide tot 45.15 peste 45.10, dar pe volum slab — context invalid. Nivelurile 42.00 / 42.50 și cifrele de preț sunt construite (materialul nu @@ -34,6 +35,8 @@ import sys from pathlib import Path sys.path.insert(0, "/workspace/atm-curs-dl") +sys.path.insert(0, "/workspace/atm-curs-dl/gen") +from eticheta_libera import eticheta_libera # noqa: E402 from svg_candles import Chart, Level, Mark, from_closes # noqa: E402 OUT = Path(__file__).resolve().parent / "hammer_mbt10_bh_aplus.svg" @@ -115,9 +118,16 @@ assert cds_a[HAM_A].c < cds_a[0].c - 5, "downtrendul A+ nu e vizibil" # 5. NU: (low[12] - 42.50) / 42.50 > 0.02 (hammer-ul NU e departe de nivel) dist_n = (ham_n.l - SUPORT_N) / SUPORT_N assert dist_n > 0.02, f"low hammer NU {ham_n.l} prea aproape de 42.50 ({dist_n:.1%})" -# eticheta „la -3,6 %" din spec: (44.10 - 42.50) / 44.10 -pct_n = (ham_n.l - SUPORT_N) / ham_n.l * 100 -assert round(pct_n, 1) == 3.6, f"procentul NU e {pct_n:.2f} %, nu 3,6 %" +# „cât de departe e nivelul" se măsoară la fel în tot capitolul: diferența +# împărțită la NIVEL, nu la low-ul hammer-ului (pasul A2 face așa, iar +# eticheta de aici împărțea la low și dădea alt număr — 3,6 % în loc de 3,8 %) +pct_n = (ham_n.l - SUPORT_N) / SUPORT_N * 100 +assert round(pct_n, 1) == 3.8, f"procentul NU e {pct_n:.2f} %, nu 3,8 %" +# aceeași convenție pe panoul A+: 0,24 % = (42.00 - 41.90) / 42.00 +assert round(abs(ham_a.l - SUPORT_A) / SUPORT_A * 100, 2) == 0.24 +ET_NIVEL_N = ("fără nivel apropiat (suport 42.50 la −" + + f"{pct_n:.1f}".replace(".", ",") + " %)") + # 6. NU: close[13] > high[12] (tehnic valid) assert conf_n.c > ham_n.h, f"NU close {conf_n.c} <= high hammer {ham_n.h}" assert abs(conf_n.c - 45.15) < 1e-9 @@ -160,7 +170,7 @@ ch_a = Chart( ) ch_n = Chart( candles=cds_n, - levels=[Level(SUPORT_N, "fără nivel apropiat (suport 42.50 la −3,6 %)", GRAY, + levels=[Level(SUPORT_N, ET_NIVEL_N, GRAY, label_at="left")], marks=[Mark(HAM_N, "hammer în mijloc de range", ORANGE, "below", dy=0), Mark(CONF_N, "volum slab", RED, "above", dy=0)], @@ -188,6 +198,16 @@ svg_a, svg_n = ch_a.render(), ch_n.render() HA, HN = vb_height(svg_a), vb_height(svg_n) assert svg_a.count("\n\n") == 0 and svg_n.count("\n\n") == 0, "linie goală în panou" +# pe fiecare panou separat: wrapper-ul le mută cu , iar +# `eticheta_libera` citește coordonate brute, deci nu merge pe el. +# Etichetele de nivel stau lipite de linia lor prin construcție (segmente=False); +# ce nu au voie e să cadă peste candele sau peste barele de volum. +eticheta_libera(svg_a, "bh_aplus/A+", + {"suport monthly 42.00", "hammer la nivel (low 41.90)", "acumulare"}, + rects=True, segmente=False) +eticheta_libera(svg_n, "bh_aplus/NU", + {ET_NIVEL_N, "hammer în mijloc de range", "volum slab"}, + rects=True, segmente=False) TOTAL_W = PAD + PW + PANEL_GAP + PW + PAD TOTAL_H = PAD + TITLE_H + max(HA, HN) + FOOTER_H + PAD @@ -269,7 +289,7 @@ for i in range(len(all_txt)): # etichetele cerute de spec există în desen for cheie in ("suport monthly 42.00", "hammer la nivel", "acumulare", - "fără nivel apropiat (suport 42.50 la −3,6 %)", "volum slab", + ET_NIVEL_N, "volum slab", "A+ — hammer la suport monthly", "Mediocru — hammer fără nivel"): assert cheie in wrapper, f"lipsește din desen: {cheie!r}" diff --git a/gen/strategii/hammer_mbt10_bh_aplus.svg b/gen/strategii/hammer_mbt10_bh_aplus.svg index 04131cf..44a7e6e 100644 --- a/gen/strategii/hammer_mbt10_bh_aplus.svg +++ b/gen/strategii/hammer_mbt10_bh_aplus.svg @@ -1,7 +1,7 @@ Buy hammer A+ vs. mediocru (două panouri, exemple construite) A+ — hammer la suport monthly - - suport monthly 42.00 + + suport monthly 42.00 @@ -69,8 +69,8 @@ bara 13: 42.95 peste 42.90, volum bun. Mediocru — hammer fără nivel - - fără nivel apropiat (suport 42.50 la −3,6 %) + + fără nivel apropiat (suport 42.50 la −3,8 %) diff --git a/gen/strategii/hammer_mbt10_bh_labu.py b/gen/strategii/hammer_mbt10_bh_labu.py index a8e5789..1022622 100644 --- a/gen/strategii/hammer_mbt10_bh_labu.py +++ b/gen/strategii/hammer_mbt10_bh_labu.py @@ -11,7 +11,8 @@ intrare. REAL din curs (`18_2025-09-23.md:721-726`): că e buy hammer la suportul monthly și că a dat +20 % în jumătate de lună. CONSTRUITE de sumarizator: suportul 80.00, cifrele hammer-ului (80.80/80.90/79.60), intrarea 81.30, SL -79.60 și seria de prețuri — materialul nu dă entry, SL sau TP pentru cazul +79.55 (low − 5 cenți, regula proprie a capitolului) și seria de prețuri — +materialul nu dă entry, SL sau TP pentru cazul ăsta. Legenda din desen spune exact asta. Rulare: python3 gen/strategii/hammer_mbt10_bh_labu.py @@ -21,6 +22,8 @@ import sys from pathlib import Path sys.path.insert(0, "/workspace/atm-curs-dl") +sys.path.insert(0, "/workspace/atm-curs-dl/gen") +from eticheta_libera import eticheta_libera # noqa: E402 from svg_candles import Chart, Level, MA, Mark, from_closes # noqa: E402 OUT = Path(__file__).with_suffix(".svg") @@ -28,9 +31,9 @@ OUT = Path(__file__).with_suffix(".svg") # --- nivelurile din specificație (toate CONSTRUITE) ------------------------ SUPPORT = 80.00 # suport monthly (construit) HAMMER_H = 80.90 # high-ul hammer-ului = close (H=C) -HAMMER_L = 79.60 # low-ul hammer-ului = SL propus +HAMMER_L = 79.60 # low-ul hammer-ului ENTRY = 81.30 # intrare = close-ul confirmării, peste 80.90 (construit) -SL = 79.60 # SL sub low-ul hammer-ului (construit) +SL = 79.55 # low 79.60 − 5 cenți: marja folosită în tot capitolul PEAK = 97.56 # max close de după intrare: 97.56 / 81.30 = +20,0 % (real) # --- seria de close-uri din specificație (38 bare, o = close precedent) ---- @@ -89,10 +92,14 @@ assert cds[23].c == cds[23].h == HAMMER_H, "close[23] != high[23] == 80.90" assert abs(cds[24].c - ENTRY) < 1e-9, f"close[24]={cds[24].c} != intrare 81.30" assert cds[24].c > cds[23].h == HAMMER_H, "confirmarea nu închide peste 80.90" -# 4. SL = min(low[22:25]) = low-ul hammer-ului = 79.60 +# 4. SL = low-ul hammer-ului (cel mai jos din 22:25) minus marja de 5 cenți. +# Prețurile LABU sunt construite, deci se aplică regula proprie din capitol +# (summaries/17_STRATEGII/06_hammer_mbt10.md, pasul A4): stopul nu stă +# exact pe low, ci cu 5 cenți sub el. min_22_25 = min(c.l for c in cds[22:25]) -assert abs(min_22_25 - SL) < 1e-9, f"min low[22:25]={min_22_25} != SL {SL}" -assert abs(SL - cds[23].l) < 1e-9, "SL nu e low-ul hammer-ului" +assert abs(min_22_25 - cds[23].l) < 1e-9, f"min low[22:25]={min_22_25} != low[23]" +assert abs(SL - (cds[23].l - 0.05)) < 1e-9, f"SL {SL} nu e low 79.60 − 5 cenți" +assert SL < min_22_25, "linia stopului trebuie să stea sub toate fitilele" # 5. procentul REAL al cursului: +20,0 % de la intrare la vârf peak = max(c.c for c in cds[25:38]) @@ -115,7 +122,7 @@ ch = Chart( levels=[ Level(SUPPORT, "suport monthly 80.00", "#777", dash="4 3", label_at="left"), - Level(SL, "SL sub low-ul hammer-ului 79.60 (construit)", "#c00", + Level(SL, "SL 79.55 = low 79.60 − 5 cenți (construit)", "#c00", label_at="right"), Level(ENTRY, "intrare 81.30 (construit)", "#188a3e", label_at="right"), ], @@ -140,6 +147,11 @@ cds[2].note = ("Procentul (+20 % în jumătate de lună) și contextul (suport " svg = ch.render() assert "\n\n" not in svg and "]*)>(.*?)', re.S) @@ -171,7 +183,7 @@ assert xs[-1] + ch.body_w / 2 < w, f"ultima candelă iese din panză (x={xs[-1]} assert all(xs[i + 1] - xs[i] == ch.gap for i in range(len(xs) - 1)), "serie cu goluri" print(f"LABU: {len(cds)} bare, hammer {cds[23].l:.2f}/{cds[23].h:.2f} pe suport " - f"{SUPPORT:.2f}, intrare {entry:.2f}, SL {cds[23].l:.2f}, vârf {peak:.2f}") + f"{SUPPORT:.2f}, intrare {entry:.2f}, SL {SL:.2f}, vârf {peak:.2f}") print(f"procent: {peak:.2f} / {entry:.2f} - 1 = +{pct:.1f} % (cifra cursului)") print(f"scris {OUT} ({w}x{H:.0f}); {len(labels)} etichete verificate, fără suprapuneri") OUT.write_text(svg, encoding="utf-8") diff --git a/gen/strategii/hammer_mbt10_bh_labu.svg b/gen/strategii/hammer_mbt10_bh_labu.svg index e287a1a..8e26237 100644 --- a/gen/strategii/hammer_mbt10_bh_labu.svg +++ b/gen/strategii/hammer_mbt10_bh_labu.svg @@ -1,10 +1,10 @@ LABU — daily - - suport monthly 80.00 - - SL sub low-ul hammer-ului 79.60 (construit) - + + suport monthly 80.00 + + SL 79.55 = low 79.60 − 5 cenți (construit) + intrare 81.30 (construit) SMA-20 @@ -84,50 +84,50 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - volum - hammer 80.90 / 79.60 (construit) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + volum + hammer 80.90 / 79.60 (construit) +20 % (cifra cursului): 97.56 / 81.30 - bara 23 = hammer: o 80.80, h 80.90, l 79.60, c 80.90 — corp 0.10, fitil jos 1.20 (H=C), pe suportul 80.00 - bara 24 = confirmare: close 81.30 — close peste high-ul hammer-ului 80.90 = intrare 81.30 (construit) - Procentul (+20 % în jumătate de lună) și contextul (suport monthly) sunt ale cursului; + bara 23 = hammer: o 80.80, h 80.90, l 79.60, c 80.90 — corp 0.10, fitil jos 1.20 (H=C), pe suportul 80.00 + bara 24 = confirmare: close 81.30 — close peste high-ul hammer-ului 80.90 = intrare 81.30 (construit) + Procentul (+20 % în jumătate de lună) și contextul (suport monthly) sunt ale cursului; nivelurile de preț sunt construite de sumarizator. \ No newline at end of file diff --git a/gen/strategii/hammer_mbt10_bh_locatie.py b/gen/strategii/hammer_mbt10_bh_locatie.py index b7f82ee..7883671 100644 --- a/gen/strategii/hammer_mbt10_bh_locatie.py +++ b/gen/strategii/hammer_mbt10_bh_locatie.py @@ -3,8 +3,9 @@ Două panouri alăturate cu ACEEAȘI serie de 12 bare, pe aceeași scară și aceeași axă de preț (candelele stau la aceleași y). Stânga: suport monthly -62.00, la 0,16 % sub low-ul hammer-ului. Dreapta: cel mai apropiat nivel de -sub el e la 58.00, adică un gol de 7,07 %. Nivelurile se desenează de mână, +62.00, la 0,16 % de low-ul hammer-ului (diferența împărțită la nivel, ca în +tot capitolul). Dreapta: cel mai apropiat nivel de sub el e la 58.00, adică un +gol de 7,07 %. Nivelurile se desenează de mână, cu coordonate absolute (liniile din Chart pornesc de la x=24 și ar trece peste panoul vecin). @@ -90,7 +91,7 @@ def zone(px, p_top, p_bot, label, color, label_at_bottom=False): PCT_DA, PCT_NU = f"{d_da:.2f}".replace(".", ","), f"{d_nu:.2f}".replace(".", ",") y_bot = y(SUP_NU) parts = [ - f'', 'Hammer la un nivel vs. hammer ' 'în mijlocul range-ului — daily, exemplu construit', @@ -112,9 +113,11 @@ parts = [ f'Completare proprie: materialul cere ' '„un nivel major (weekly / monthly / quarterly), nu mijlocul', f'range-ului", dar nu dă un prag numeric. ' - f'Pragul de 1-2 % e împrumutat de la buy doji, ca să ai ce', - f'măsura: aici {PCT_DA} % în stânga, ' - f'{PCT_NU} % în dreapta.', + f'Cursul dă 0,5 %, la buy doji și pe 60 de minute; 1-2 % pe', + f'daily e adaptarea mea, ca să ai ce ' + f'măsura: aici {PCT_DA} % în stânga, {PCT_NU} % în dreapta.', + f'Distanța se împarte la nivel, nu la ' + f'low-ul hammer-ului — aceeași convenție în tot capitolul.', "", ] svg = "\n ".join(parts).replace("\n ", "\n") @@ -122,4 +125,4 @@ assert "\n\n" not in svg, "linie goală în SVG" for m in re.finditer(r']*>(.*?)', body_da): assert float(m.group(1)) < PX[1] - 14, f"text din DA trece în NU: {m.group(2)}" OUT.write_text(svg, encoding="utf-8") -print(f"scris {OUT.name} ({W}x{y_bot + 80:.0f}); DA {d_da}% NU {d_nu}% (rezistență {d_rez}%)") +print(f"scris {OUT.name} ({W}x{y_bot + 96:.0f}); DA {d_da}% NU {d_nu}% (rezistență {d_rez}%)") diff --git a/gen/strategii/hammer_mbt10_bh_locatie.svg b/gen/strategii/hammer_mbt10_bh_locatie.svg index d5f3342..9ea06f1 100644 --- a/gen/strategii/hammer_mbt10_bh_locatie.svg +++ b/gen/strategii/hammer_mbt10_bh_locatie.svg @@ -1,4 +1,4 @@ - + Hammer la un nivel vs. hammer în mijlocul range-ului — daily, exemplu construit DA — hammer pe suportul monthly NU — hammer în mijlocul range-ului @@ -75,6 +75,7 @@ fitilul n-a fost oprit de un nivel, ci s-a oprit singur Completare proprie: materialul cere „un nivel major (weekly / monthly / quarterly), nu mijlocul - range-ului", dar nu dă un prag numeric. Pragul de 1-2 % e împrumutat de la buy doji, ca să ai ce - măsura: aici 0,16 % în stânga, 7,07 % în dreapta. + range-ului", dar nu dă un prag numeric. Cursul dă 0,5 %, la buy doji și pe 60 de minute; 1-2 % pe + daily e adaptarea mea, ca să ai ce măsura: aici 0,16 % în stânga, 7,07 % în dreapta. + Distanța se împarte la nivel, nu la low-ul hammer-ului — aceeași convenție în tot capitolul. \ No newline at end of file diff --git a/gen/strategii/hammer_mbt10_mbt_confluente.py b/gen/strategii/hammer_mbt10_mbt_confluente.py index 9f2a2c1..6c19458 100644 --- a/gen/strategii/hammer_mbt10_mbt_confluente.py +++ b/gen/strategii/hammer_mbt10_mbt_confluente.py @@ -1,53 +1,64 @@ #!/usr/bin/env python3 -"""MBT-10, pasul „unde": ideea de bottom cu confluențe (exemplu construit). +"""MBT-10, pasul „unde": ideea de bottom, pe exemplul materialului. Seria de aici e SURSA UNICĂ a trade-ului MBT-10 din Nivelul 2: `hammer_mbt10_mbt_ppd`, `_mbt_stop` și `_mbt_iesire` importă `serie()` și -pornesc din aceleași bare. Nivelurile 89.90 (intrare la close), 87.30 (SL) și -95.20 (ținta, vârful de unde a pornit coborârea) sunt cifrele exemplului -construit din fișierul principal; suportul weekly 87.50 și pivotul daily -89.60 sunt puse de mine, ca acele cifre să aibă de unde ieși. +pornesc din aceleași bare. -Diagrama asta arată doar contextul: double bottom pe suportul weekly, cu -volum mai mic pe al doilea picior. Nicio intrare desenată — intrarea vine la -pasul următor. +Exemplul e al materialului (`08_ANALIZA_ZILNICA/02_mbt10.md:440-455`) și e pe +**60 de minute**, nu pe daily: suport weekly **88.00**, testat de **trei ori**, +cu vârfuri tot mai mici între teste (compresie); intrare **89.90** la close-ul +barei în MBT-10; **SL 87.30** sub suport; **țintă 95.20**, vârful de unde a +pornit coborârea. Materialul spune și de ce nu pe daily: „o bară daily în +suport weekly poate avea un low cu 2-3 % sub suport, deci stopul ar sta +departe". + +Ale mele sunt doar forma exactă a barelor, volumul și pivotul daily 89.60 (pus +ca să aibă ce verifica pasul B3). Nu există aici nici double bottom, nici +divergență de volum: alea sunt din alt exemplu al materialului (gap up, cu +picioarele 32.10 / 30.90) și nu se fuzionează cu ăsta. Rulare: python3 gen/strategii/hammer_mbt10_mbt_confluente.py """ import re import sys; sys.path.insert(0, "/workspace/atm-curs-dl") +sys.path.insert(0, "/workspace/atm-curs-dl/gen") from pathlib import Path -from svg_candles import Arrow, Chart, Level, Zone, from_closes +from eticheta_libera import eticheta_libera +from svg_candles import Chart, Level, Mark, Zone, from_closes OUT = Path(__file__).with_suffix(".svg") GREEN, RED, BLUE, ORANGE, GREY = "#188a3e", "#c00", "#1a5fb4", "#b06000", "#555" -SUP_W, PPD = 87.50, 89.60 # suport weekly, pivotul daily +SUP_W, PPD = 88.00, 89.60 # suport weekly (materialul), pivotul daily (al meu) INTRARE, SL, TP = 89.90, 87.30, 95.20 R = round(INTRARE - SL, 2) -FUND1, FUND2 = 10, 15 # cele două picioare ale double bottom-ului +TESTE = (9, 12, 15) # cele trei atingeri ale suportului weekly +VARFURI = (10, 13) # vârfurile dintre teste: tot mai mici (compresie) VARF = 3 # ultimul maxim înainte de coborâre: high 95.20 = ținta CLOSE_I = 19 # bara care se închide peste pivotul daily +BARE_PE_ZI = 7 # 60 de minute, sesiune US: 7 bare pe zi +ZI_INTRARE = (14, 20) # barele zilei în care vine trigger-ul CLOSES = [96.00, 95.00, 94.20, 95.00, 93.10, 92.00, 91.20, 90.10, 89.00, # 0-8 - 88.20, 87.70, 88.40, 89.10, # 9-12 - 88.60, 88.00, 87.65, 88.30, # 13-16 - 88.90, 89.40, 89.90, # 17-19 - 90.60, 91.40, 92.20, 91.80, 93.00, 94.10, 95.40] # 20-26 + 88.20, 89.00, 88.60, # 9-11 + 88.20, 89.00, 88.50, # 12-14 + 88.20, 88.60, 89.00, 89.40, 89.90, # 15-19 + 90.60, 91.40, 92.20, 91.80, 93.00, 94.10, 95.40] # 20-26 VOLS = [60, 58, 55, 50, 62, 66, 70, 74, 80, - 86, 94, 62, 58, - 55, 60, 66, 54, # piciorul 2: volum vizibil mai mic - 58, 62, 96, + 86, 62, 58, + 84, 60, 56, + 82, 58, 62, 66, 96, 70, 66, 64, 58, 68, 72, 80] def serie(): w = [(0.20, 0.25)] * len(CLOSES) - w[FUND1] = (0.20, 0.10) # low 87.60 - w[FUND2] = (0.20, 0.10) # low 87.55 - # barele imediat de după picioare pornesc din același preț: fără fitil lung - # în jos, altfel ele ar face minimul, nu picioarele - w[FUND1 + 1] = w[FUND2 + 1] = (0.20, 0.05) + for t in TESTE: + w[t] = (0.20, 0.20) # low exact pe 88.00: suportul ține, nu cedează + w[t + 1] = (0.20, 0.05) # bara de după pornește din 88.20: fără fitil lung în jos + w[VARFURI[0]] = (0.50, 0.05) # high 89.50 + w[VARFURI[1]] = (0.10, 0.05) # high 89.10 — vârf mai mic # bara 18 atinge pivotul intraday, dar se închide sub el: contraexemplul # de la pasul cu condiția de preț w[CLOSE_I - 1] = (0.30, 0.25) @@ -58,20 +69,30 @@ def serie(): assert len(cds) == len(VOLS) == 27 for i in range(1, len(cds)): assert abs(cds[i].o - cds[i - 1].c) < 1e-9, f"open[{i}] != close[{i-1}]" - l1, l2 = round(cds[FUND1].l, 2), round(cds[FUND2].l, 2) - assert (l1, l2) == (87.60, 87.55), (l1, l2) - assert abs(l1 - l2) <= 0.05 and l2 < l1, "double bottom: al doilea picior, puțin mai jos" - assert round(min(c.l for c in cds), 2) == l2, "cel mai jos low nu e al piciorului 2" - assert l2 > SUP_W > SL, "picioarele trebuie să stea peste suport, iar stopul sub el" - assert VOLS[FUND2] < VOLS[FUND1], "fără divergență de volum pe piciorul 2" - # de la al doilea picior încoace, nicio bară nu închide peste pivotul zilei + # suportul weekly e atins de exact trei ori și ține de fiecare dată + atingeri = [i for i, c in enumerate(cds) if round(c.l, 2) <= SUP_W] + assert atingeri == list(TESTE), atingeri + for t in TESTE: + assert round(cds[t].l, 2) == SUP_W, (t, cds[t].l) + assert SUP_W > SL, "stopul trebuie să stea sub suport" + # compresie: vârfurile dintre teste scad + v1, v2 = (round(cds[i].h, 2) for i in VARFURI) + assert v1 > v2, f"vârfurile dintre teste nu scad: {v1} > {v2}" + assert (v1, v2) == (89.50, 89.10), (v1, v2) + # de la primul test încoace, nicio bară nu închide peste pivotul zilei # intrării — altfel trigger-ul ar fi venit mai devreme - assert max(c.c for c in cds[FUND2:CLOSE_I]) < PPD < cds[CLOSE_I].c, \ + assert max(c.c for c in cds[TESTE[0]:CLOSE_I]) < PPD < cds[CLOSE_I].c, \ "o bară dinaintea trigger-ului închide deja peste pivotul daily" assert round(cds[CLOSE_I].c, 2) == INTRARE assert cds[CLOSE_I - 1].h > PPD > cds[CLOSE_I - 1].c, \ "bara 18 trebuie să atingă pivotul intraday, dar să închidă sub el" assert min(c.l for c in cds[CLOSE_I:]) > SL, "stopul ar fi fost atins după intrare" + # trigger-ul și contraexemplul lui stau în aceeași zi: pe 60 de minute + # pivotul daily e un singur nivel pe toată ziua, dar se schimbă mâine + assert ZI_INTRARE[0] <= CLOSE_I - 1 and CLOSE_I <= ZI_INTRARE[1] + assert ZI_INTRARE[1] - ZI_INTRARE[0] + 1 == BARE_PE_ZI + assert all(i // BARE_PE_ZI == ZI_INTRARE[0] // BARE_PE_ZI + for i in range(*ZI_INTRARE)), "ziua intrării nu e un bloc de 7 bare" prim_tp = next(i for i in range(CLOSE_I + 1, len(cds)) if cds[i].h >= TP) assert prim_tp == 26, prim_tp # ținta 95.20 nu e un număr ales: e high-ul ultimului maxim dinaintea coborârii @@ -83,34 +104,32 @@ def serie(): if __name__ == "__main__": cds = serie() - pct1 = round((cds[FUND1].l - SUP_W) / SUP_W * 100, 2) - pct2 = round((cds[FUND2].l - SUP_W) / SUP_W * 100, 2) - assert pct1 < 0.2 and pct2 < 0.2, (pct1, pct2) vis = cds[:CLOSE_I] # contextul, fără bara de trigger ch = Chart( candles=vis, - levels=[Level(SUP_W, "suport weekly 87.50", BLUE, label_at="left")], - zones=[Zone(FUND1, FUND2, "double bottom: 87.60 și 87.55", ORANGE)], - arrows=[ - Arrow(FUND1, "piciorul 1: low 87.60,\nla 0,11 % peste suport", - where="below", color=GREY, dx=-150, dy=26), - Arrow(FUND2, "piciorul 2: low 87.55, cu 5 cenți mai jos,\ndar cu volum mai mic decât " - "la piciorul 1 —\nvânzarea a slăbit (divergență de volum)", - where="below", color=RED, dx=-40, dy=64), - ], + levels=[Level(SUP_W, "suport weekly 88.00", BLUE, label_at="left")], + zones=[Zone(TESTE[0], TESTE[-1], "", ORANGE)], + marks=[Mark(t, f"test {n}", ORANGE, "above", dy=-34) + for n, t in enumerate(TESTE, 1)], scale=30.0, gap=22, body_w=12, left=54, width=700, vol_h=70, vol_label="volum", - title="MBT-10, pasul „unde\" — double bottom pe suportul weekly (exemplu construit)", + title="MBT-10, pasul „unde\" — suport weekly testat de trei ori, pe 60 de minute", ) svg = ch.render() + eticheta_libera(svg, "mbt_confluente", {"test 1", "test 2", "test 3"}, rects=True) m = re.search(r'viewBox="0 0 (\d+) (\d+)"', svg) W, H = int(m.group(1)), int(m.group(2)) linii = [ ("Aici nu intri încă: diagrama arată doar ideea de bottom. MBT-10 e ultima piesă, și " "vine abia la close-ul unei bare.", "#333"), - ("Cifrele 89.90 / 87.30 / 95.20 ale trade-ului sunt din exemplul construit al " - "materialului;", GREY), - ("suportul weekly 87.50, pivotul daily 89.60 și structura barelor sunt ale mele.", GREY), + ("Suportul 88.00 ține de trei ori, iar între teste vârfurile scad — 89.50, apoi " + "89.10: compresie.", "#333"), + ("Exemplul e al materialului și e pe 60 de minute: suport 88.00, intrare 89.90, " + "SL 87.30, țintă 95.20.", GREY), + ("Nu e double bottom și nu e divergență de volum — alea sunt din alt exemplu al lui " + "(gap up, picioarele 32.10 / 30.90).", GREY), + ("Forma exactă a barelor și volumul sunt ale mele; la fel pivotul daily 89.60, pus ca " + "să aibă ce verifica pasul B3.", GREY), ] add = 16 * len(linii) + 10 svg = svg.replace(f'viewBox="0 0 {W} {H}"', f'viewBox="0 0 {W} {H + add}"') @@ -119,4 +138,4 @@ if __name__ == "__main__": for i, (t, c) in enumerate(linii)) + "") assert "\n\n" not in svg, "linie goală în SVG" OUT.write_text(svg, encoding="utf-8") - print(f"scris {OUT.name} ({W}x{H + add}); picioare {pct1}% / {pct2}% peste suport, R={R}") + print(f"scris {OUT.name} ({W}x{H + add}); teste {TESTE} pe {SUP_W}, R={R}") diff --git a/gen/strategii/hammer_mbt10_mbt_confluente.svg b/gen/strategii/hammer_mbt10_mbt_confluente.svg index 6e4020a..953272b 100644 --- a/gen/strategii/hammer_mbt10_mbt_confluente.svg +++ b/gen/strategii/hammer_mbt10_mbt_confluente.svg @@ -1,9 +1,8 @@ - - MBT-10, pasul „unde" — double bottom pe suportul weekly (exemplu construit) - - double bottom: 87.60 și 87.55 - - suport weekly 87.50 + + MBT-10, pasul „unde" — suport weekly testat de trei ori, pe 60 de minute + + + suport weekly 88.00 @@ -22,54 +21,48 @@ - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - volum - - - piciorul 1: low 87.60, - la 0,11 % peste suport - - - piciorul 2: low 87.55, cu 5 cenți mai jos, - dar cu volum mai mic decât la piciorul 1 — - vânzarea a slăbit (divergență de volum) -Aici nu intri încă: diagrama arată doar ideea de bottom. MBT-10 e ultima piesă, și vine abia la close-ul unei bare.Cifrele 89.90 / 87.30 / 95.20 ale trade-ului sunt din exemplul construit al materialului;suportul weekly 87.50, pivotul daily 89.60 și structura barelor sunt ale mele. \ No newline at end of file + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + volum + test 1 + test 2 + test 3 +Aici nu intri încă: diagrama arată doar ideea de bottom. MBT-10 e ultima piesă, și vine abia la close-ul unei bare.Suportul 88.00 ține de trei ori, iar între teste vârfurile scad — 89.50, apoi 89.10: compresie.Exemplul e al materialului și e pe 60 de minute: suport 88.00, intrare 89.90, SL 87.30, țintă 95.20.Nu e double bottom și nu e divergență de volum — alea sunt din alt exemplu al lui (gap up, picioarele 32.10 / 30.90).Forma exactă a barelor și volumul sunt ale mele; la fel pivotul daily 89.60, pus ca să aibă ce verifica pasul B3. \ No newline at end of file diff --git a/gen/strategii/hammer_mbt10_mbt_gapdown.py b/gen/strategii/hammer_mbt10_mbt_gapdown.py index 3d323a5..b89aaf9 100644 --- a/gen/strategii/hammer_mbt10_mbt_gapdown.py +++ b/gen/strategii/hammer_mbt10_mbt_gapdown.py @@ -20,7 +20,8 @@ cu două excepții impuse de exemplu: o=c=66.40, wu=0.30 => high 66.70, wd=0.30 => low 66.10. Wick-urile speciale: bara 16 wd=0.20 (low 64.60), bara 18 wd=0.20 (low -63.20), bara 21 wd=0.20 (low 62.00); restul (0.30, 0.40). +63.20), bara 21 wd=1.60 (low 60.60 = noul low al coborârii, ca SL-ul 60.40 din +material să stea sub o structură desenată); restul (0.30, 0.40). Rulează: python3 gen/strategii/hammer_mbt10_mbt_gapdown.py Scrie: gen/strategii/hammer_mbt10_mbt_gapdown.svg @@ -30,6 +31,8 @@ import sys from pathlib import Path sys.path.insert(0, "/workspace/atm-curs-dl") +sys.path.insert(0, "/workspace/atm-curs-dl/gen") +from eticheta_libera import eticheta_libera # noqa: E402 from svg_candles import Candle, Chart, Level, Mark, from_closes # noqa: E402 OUT = Path(__file__).resolve().parent / "hammer_mbt10_mbt_gapdown.svg" @@ -62,7 +65,10 @@ WICKS[13] = (0.40, 0.00) # high 71.00, low 70.60 WICKS[14] = (0.30, 0.30) # high 66.70, low 66.10 (bara de gap) WICKS[16] = (0.30, 0.20) # low 64.60 WICKS[18] = (0.30, 0.20) # low 63.20 -WICKS[21] = (0.30, 0.20) # low 62.00 +# bara lui MBT-10 #2 face și noul low al coborârii: flush la 60.60, închidere +# înapoi la 62.20. Fără el, SL-ul 60.40 din material (`mbt`:729-732) ar pluti +# sub orice structură desenată — exact reproșul din verificare. +WICKS[21] = (0.30, 1.60) # low 60.60 = noul low; SL 60.40 stă sub el # Volume relative, alese de generator (materialul nu dă volum aici): # în scădere pe piciorul coborârii după gap (14 -> 21), apoi recuperare. @@ -104,6 +110,12 @@ intrare2, sl2 = 62.20, 60.40 assert abs(cds[21].c - intrare2) < 1e-9, f"close[21]={cds[21].c} != 62.20" assert abs(sl2 - 60.40) < 1e-9 assert not any(c.l <= sl2 for c in cds[22:]), "un low atinge SL2 după bara 21" +# stopul #2 numește o structură: e sub cel mai jos low al coborârii de după gap +nou_low = min(c.l for c in cds[14:22]) +assert abs(nou_low - cds[21].l) < 1e-9, "noul low nu e al barei lui MBT-10 #2" +assert sl2 < nou_low <= sl2 + 0.30, \ + f"SL2 {sl2} nu stă chiar sub noul low {nou_low:.2f}: nu mai numește o structură" +assert nou_low < min(c.l for c in cds[14:21]), "low-ul barei 21 nu e cel mai jos" # 4. riscuri risc1 = intrare1 - sl1 # 1.60 @@ -141,7 +153,7 @@ ch = Chart( Level(intrare1, "#1 intrare 64.80", GRAY, label_at="right"), Level(sl1, "#1 SL 63.20", GRAY, label_at="right"), Level(intrare2, "#2 intrare 62.20", GRAY, label_at="right"), - Level(sl2, "#2 SL 60.40", GRAY, label_at="right"), + Level(sl2, "#2 SL 60.40, sub noul low 60.60", GRAY, label_at="right"), Level(TP, "TP 70.60 = 4.7R (gap închis)", BLUE, label_at="right"), ], marks=[ @@ -149,7 +161,7 @@ ch = Chart( Mark(14, "gap down", RED, "above", dy=-22), Mark(16, "MBT-10 #1", GRAY, "above", dy=-25), Mark(18, "stop #1 atins", RED, "below", dy=30), - Mark(21, "MBT-10 #2", GREEN, "below", dy=25), + Mark(21, "MBT-10 #2: flush la 60.60, închidere 62.20", GREEN, "below", dy=25), ], scale=28.0, gap=15, body_w=9, left=44, width=820, vol_h=70, vol_label="volum", @@ -159,13 +171,18 @@ ch = Chart( svg = ch.render() assert " După gap down — primul MBT-10 te scoate, al doilea merge (exemplu construit) - + #1 intrare 64.80 - + #1 SL 63.20 - + #2 intrare 62.20 - - #2 SL 60.40 - + + #2 SL 60.40, sub noul low 60.60 + TP 70.60 = 4.7R (gap închis) @@ -52,7 +52,7 @@ - + @@ -114,5 +114,5 @@ gap down MBT-10 #1 stop #1 atins - MBT-10 #2 -MBT-10 #1: intrare 64.80 / SL 63.20 — risc 1R în baniMBT-10 #2: intrare 62.20 / SL 60.40 — risc 1R în bani (mărime ajustată)Exemplu construit: #1 și #2 au același risc în bani; #2 singur dă 4.7R.De aceea mărimea se împarte pe 2-3 încercări. \ No newline at end of file + MBT-10 #2: flush la 60.60, închidere 62.20 +MBT-10 #1: intrare 64.80 / SL 63.20 — risc 1R în baniMBT-10 #2: intrare 62.20 / SL 60.40, sub noul low 60.60 — risc 1R în bani (mărime ajustată)Exemplu construit: #1 și #2 au același risc în bani; #2 singur dă 4.7R.De aceea mărimea se împarte pe 2-3 încercări. \ No newline at end of file diff --git a/gen/strategii/hammer_mbt10_mbt_iesire.py b/gen/strategii/hammer_mbt10_mbt_iesire.py index 57302e0..81d3ed9 100644 --- a/gen/strategii/hammer_mbt10_mbt_iesire.py +++ b/gen/strategii/hammer_mbt10_mbt_iesire.py @@ -49,7 +49,7 @@ ch = Chart( price=TP, where="below", color=BLUE, dx=-200, dy=54), ], scale=26.0, gap=17, body_w=10, left=54, width=700, top=58, vol_h=60, vol_label="volum", - title="MBT-10 — ieșirea la prima structură din stânga (exemplu construit)", + title="MBT-10 — ieșirea la prima structură din stânga (60 de minute)", ) svg = ch.render() m = re.search(r'viewBox="0 0 (\d+) (\d+)"', svg) @@ -59,8 +59,8 @@ linii = [ "exemplele lui e că", "#333"), ("ținta e o structură vizibilă în stânga: un vârf anterior, ultimul maxim mai jos, sau " "închiderea unui gap.", "#333"), - (f"Aici: 89.90 → 95.20 = {R_TINTA:.1f}R, în {zile} bare. Cifrele trade-ului sunt din " - "exemplul construit al materialului.", GREY), + (f"Aici: 89.90 → 95.20 = {R_TINTA:.1f}R, în {zile} bare de 60 de minute. Cifrele " + "trade-ului sunt din exemplul materialului.", GREY), ] add = 16 * len(linii) + 10 svg = svg.replace(f'viewBox="0 0 {W} {H}"', f'viewBox="0 0 {W} {H + add}"') diff --git a/gen/strategii/hammer_mbt10_mbt_iesire.svg b/gen/strategii/hammer_mbt10_mbt_iesire.svg index 3d30f55..8964219 100644 --- a/gen/strategii/hammer_mbt10_mbt_iesire.svg +++ b/gen/strategii/hammer_mbt10_mbt_iesire.svg @@ -1,15 +1,15 @@ - - MBT-10 — ieșirea la prima structură din stânga (exemplu construit) + + MBT-10 — ieșirea la prima structură din stânga (60 de minute) de aici a pornit coborârea drumul până la structură: 7 bare - + ținta 95.20 = ultimul maxim dinaintea coborârii - - intrare 89.90 - - SL 87.30 + + intrare 89.90 + + SL 87.30 @@ -28,26 +28,26 @@ - + - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + @@ -64,38 +64,38 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - volum - - - ieși la 95.20 (+2.0R): - prima structură care a oprit - prețul ultima dată -Materialul nu dă o regulă proprie de take-profit la MBT-10. Ce au în comun toate exemplele lui e căținta e o structură vizibilă în stânga: un vârf anterior, ultimul maxim mai jos, sau închiderea unui gap.Aici: 89.90 → 95.20 = 2.0R, în 7 bare. Cifrele trade-ului sunt din exemplul construit al materialului. \ No newline at end of file + + + + + + + + + + + + + + + + + + + + + + + + + + + + + volum + + + ieși la 95.20 (+2.0R): + prima structură care a oprit + prețul ultima dată +Materialul nu dă o regulă proprie de take-profit la MBT-10. Ce au în comun toate exemplele lui e căținta e o structură vizibilă în stânga: un vârf anterior, ultimul maxim mai jos, sau închiderea unui gap.Aici: 89.90 → 95.20 = 2.0R, în 7 bare de 60 de minute. Cifrele trade-ului sunt din exemplul materialului. \ No newline at end of file diff --git a/gen/strategii/hammer_mbt10_mbt_ppd.py b/gen/strategii/hammer_mbt10_mbt_ppd.py index 89b8b85..bcfac52 100644 --- a/gen/strategii/hammer_mbt10_mbt_ppd.py +++ b/gen/strategii/hammer_mbt10_mbt_ppd.py @@ -2,22 +2,33 @@ """MBT-10 — singura bucată reconstituibilă: close peste pivotul daily. Aceleași bare ca la pasul „unde" (importate din `hammer_mbt10_mbt_confluente`), -tăiate în jurul trigger-ului. Bara 18 atinge pivotul 89.60 în timpul zilei, -dar se închide sub el: nu e semnal. Bara 19 se închide la 89.90, peste pivot: -aici intri, la close. +tăiate în jurul trigger-ului. Exemplul e pe 60 de minute, ca în material: bara +18 atinge pivotul 89.60 în timpul zilei, dar se închide sub el (nu e semnal), +iar bara 19 se închide la 89.90, peste pivot — aici intri. + +Pivotul daily NU e un nivel fix pe grafic: se recalculează în fiecare zi. Pe +60 de minute el e același pentru toate barele unei zile, așa că aici e desenat +doar peste barele zilei de intrare, între două linii de separare de zi. În +ziua dinainte era alt număr, pe care materialul nu-l dă — de aceea nu-l +inventăm, doar spunem că era altul. Rulare: python3 gen/strategii/hammer_mbt10_mbt_ppd.py """ import re import sys; sys.path.insert(0, "/workspace/atm-curs-dl") +sys.path.insert(0, "/workspace/atm-curs-dl/gen") sys.path.insert(0, "/workspace/atm-curs-dl/gen/strategii") from pathlib import Path -from hammer_mbt10_mbt_confluente import CLOSE_I, INTRARE, PPD, SUP_W, serie +from eticheta_libera import eticheta_libera +from hammer_mbt10_mbt_confluente import (CLOSE_I, INTRARE, PPD, SUP_W, + ZI_INTRARE, serie) from svg_candles import Arrow, Chart, Level, Zone OUT = Path(__file__).with_suffix(".svg") GREEN, RED, BLUE, ORANGE, GREY = "#188a3e", "#c00", "#1a5fb4", "#b06000", "#555" +ET_PIVOT = ("pivotul daily al zilei de", "intrare: 89.60 (ieri, altul) →") + cds = serie() I0, I1 = 9, 22 w = cds[I0:I1 + 1] @@ -28,28 +39,54 @@ assert cds[NU].h > PPD > cds[NU].c, "bara 18 nu mai e contraexemplul așteptat" assert cds[DA].c > PPD and round(cds[DA].c, 2) == INTRARE assert 0 <= sh(NU) < len(w) and sh(DA) < len(w), "fereastra nu prinde cele două bare" assert max(c.c for c in cds[I0:DA]) < PPD, "o bară din fereastră închide deja peste pivot" +assert I0 < ZI_INTRARE[0] and ZI_INTRARE[1] <= I1, \ + "ziua intrării trebuie să se vadă întreagă, cu bare de altă zi de o parte și de alta" ch = Chart( candles=w, - levels=[Level(PPD, "pivotul daily 89.60", BLUE), - Level(SUP_W, "suport weekly 87.50", GREY, label_at="left")], + levels=[Level(SUP_W, "suport weekly 88.00", GREY, label_at="right")], zones=[Zone(sh(NU), sh(DA), "", ORANGE, p_top=90.4)], arrows=[ - Arrow(sh(NU), "a atins 89.70 în timpul zilei,\ndar s-a închis la 89.40, sub pivot:\nnu e semnal", + Arrow(sh(NU), "a atins 89.70 în timpul barei,\ndar s-a închis la 89.40, sub pivot:\nnu e semnal", where="below", color=RED, dx=-190, dy=40), - Arrow(sh(DA), "s-a închis la 89.90, peste pivot:\naici intri, la close-ul zilei", + Arrow(sh(DA), "s-a închis la 89.90, peste pivot:\naici intri, la close-ul barei", where="above", color=GREEN, dx=-70, dy=-20), ], scale=44.0, gap=26, body_w=13, left=64, width=680, top=58, vol_h=60, vol_label="volum", - title="MBT-10 — condiția de preț: close peste pivotul daily (exemplu construit)", + title="MBT-10 — condiția de preț: close peste pivotul daily (60 de minute)", ) svg = ch.render() + +# --- pivotul daily: un segment peste ziua de intrare, nu o linie fixă ------- +# aceeași corecție de offset ca în `_mbt_stop`: `_render` mută `top` ca să facă +# loc titlului și săgeților, deci `_y` singur nu nimerește coordonatele finale. +OFF = float(re.search(r'' + f'' + f'' + + "".join( + f'{t}' for i, t in enumerate(ET_PIVOT)) +) +svg = svg.replace("", pivot + "") m = re.search(r'viewBox="0 0 (\d+) (\d+)"', svg) W, H = int(m.group(1)), int(m.group(2)) linii = [ ("Pivotul daily se recalculează în fiecare zi din maximul, minimul și închiderea zilei " - "precedente;", "#333"), - ("linia desenată e valoarea din ziua intrării, 89.60, nu un nivel fix.", "#333"), + "precedente.", "#333"), + ("Pe 60 de minute e același nivel pentru toate barele unei zile, așa că e desenat doar " + "între cele două", "#333"), + ("linii subțiri care taie ziua intrării — nu peste tot graficul.", "#333"), ("Asta e tot ce se poate verifica din MBT-10 fără indicatorul proprietar — „prima " "componentă\" din el,", GREY), ("cum îi spune materialul; restul formulei nu e publicat nicăieri.", GREY), @@ -59,6 +96,8 @@ svg = svg.replace(f'viewBox="0 0 {W} {H}"', f'viewBox="0 0 {W} {H + add}"') svg = svg.replace("", "".join( f'{t}' for i, (t, c) in enumerate(linii)) + "") +eticheta_libera(svg, "mbt_ppd", +{ET_PIVOT}, rects=True) assert "\n\n" not in svg, "linie goală în SVG" OUT.write_text(svg, encoding="utf-8") print(f"scris {OUT.name} ({W}x{H + add})") diff --git a/gen/strategii/hammer_mbt10_mbt_ppd.svg b/gen/strategii/hammer_mbt10_mbt_ppd.svg index a767e17..a2dffc1 100644 --- a/gen/strategii/hammer_mbt10_mbt_ppd.svg +++ b/gen/strategii/hammer_mbt10_mbt_ppd.svg @@ -1,30 +1,28 @@ - - MBT-10 — condiția de preț: close peste pivotul daily (exemplu construit) - - - pivotul daily 89.60 - - suport weekly 87.50 - + + MBT-10 — condiția de preț: close peste pivotul daily (60 de minute) + + + suport weekly 88.00 + - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + @@ -33,29 +31,29 @@ - - - - - - - - - - - - - - - - volum - - - a atins 89.70 în timpul zilei, - dar s-a închis la 89.40, sub pivot: - nu e semnal + + + + + + + + + + + + + + + + volum + + + a atins 89.70 în timpul barei, + dar s-a închis la 89.40, sub pivot: + nu e semnal s-a închis la 89.90, peste pivot: - aici intri, la close-ul zilei -Pivotul daily se recalculează în fiecare zi din maximul, minimul și închiderea zilei precedente;linia desenată e valoarea din ziua intrării, 89.60, nu un nivel fix.Asta e tot ce se poate verifica din MBT-10 fără indicatorul proprietar — „prima componentă" din el,cum îi spune materialul; restul formulei nu e publicat nicăieri. \ No newline at end of file + aici intri, la close-ul barei +pivotul daily al zilei deintrare: 89.60 (ieri, altul) →Pivotul daily se recalculează în fiecare zi din maximul, minimul și închiderea zilei precedente.Pe 60 de minute e același nivel pentru toate barele unei zile, așa că e desenat doar între cele douălinii subțiri care taie ziua intrării — nu peste tot graficul.Asta e tot ce se poate verifica din MBT-10 fără indicatorul proprietar — „prima componentă" din el,cum îi spune materialul; restul formulei nu e publicat nicăieri. \ No newline at end of file diff --git a/gen/strategii/hammer_mbt10_mbt_stop.py b/gen/strategii/hammer_mbt10_mbt_stop.py index 6911853..fc33ac3 100644 --- a/gen/strategii/hammer_mbt10_mbt_stop.py +++ b/gen/strategii/hammer_mbt10_mbt_stop.py @@ -1,20 +1,22 @@ #!/usr/bin/env python3 -"""MBT-10 — stopul sub structură și mărimea poziției (exemplu construit). +"""MBT-10 — stopul sub structură și mărimea poziției (60 de minute). Zoom pe barele 8-21 din seria pasului „unde" (importată). Stopul 87.30 nu e -ales la distanță, ci sub amândouă picioarele double bottom-ului și sub -suportul weekly 87.50. Riscul iese 2.60 $ pe acțiune, iar mărimea din regula -de 2 % pe același cont de 10.000 $ folosit în Partea A: 200 / 2.60 = 76 de -acțiuni. +ales la distanță, ci sub suportul weekly 88.00, cel testat de trei ori — +amândouă cifrele sunt ale materialului. Riscul iese 2.60 $ pe acțiune, iar +mărimea din regula de 2 % pe același cont de 10.000 $ folosit în Partea A: +200 / 2.60 = 76 de acțiuni. Rulare: python3 gen/strategii/hammer_mbt10_mbt_stop.py """ import re import sys; sys.path.insert(0, "/workspace/atm-curs-dl") +sys.path.insert(0, "/workspace/atm-curs-dl/gen") sys.path.insert(0, "/workspace/atm-curs-dl/gen/strategii") from pathlib import Path -from hammer_mbt10_mbt_confluente import (CLOSE_I, FUND1, FUND2, INTRARE, SL, - SUP_W, serie) +from eticheta_libera import eticheta_libera +from hammer_mbt10_mbt_confluente import (CLOSE_I, INTRARE, SL, SUP_W, TESTE, + serie) from svg_candles import Arrow, Chart, Level, Zone OUT = Path(__file__).with_suffix(".svg") @@ -32,29 +34,32 @@ ACTIUNI = int(RISC_LEI // RISC) # --- verificări ------------------------------------------------------------- assert RISC == 2.60, RISC assert ACTIUNI == 76 and ACTIUNI * RISC <= RISC_LEI, (ACTIUNI, ACTIUNI * RISC) -assert SL < SUP_W < min(cds[FUND1].l, cds[FUND2].l), \ - "stopul trebuie să stea sub suport, iar suportul sub amândouă picioarele" +assert SL < SUP_W <= min(cds[t].l for t in TESTE), \ + "stopul trebuie să stea sub suport, iar suportul la sau sub cele trei teste" assert SL < min(c.l for c in w), "linia stopului trebuie să stea sub toate fitilele" assert round(cds[CLOSE_I].c, 2) == INTRARE -assert I0 <= FUND1 and FUND2 <= I1 and CLOSE_I <= I1, "fereastra nu prinde tot ce trebuie" +assert I0 <= TESTE[0] and TESTE[-1] <= I1 and CLOSE_I <= I1, \ + "fereastra nu prinde tot ce trebuie" ch = Chart( candles=w, - levels=[Level(INTRARE, "intrare 89.90 (close-ul zilei)", GREEN, label_at="left"), - Level(SUP_W, "suport weekly 87.50", BLUE), + levels=[Level(INTRARE, "intrare 89.90 (close-ul barei)", GREEN, label_at="right"), + Level(SUP_W, "suport weekly 88.00, testat de trei ori", BLUE), Level(SL, "SL 87.30", RED, label_at="left")], - zones=[Zone(sh(FUND1), sh(FUND2), "structura care ține ideea", ORANGE)], + # fără etichetă pe zonă: eticheta ei cădea peste linia intrării, iar + # săgeata de mai jos spune deja ce e structura + zones=[Zone(sh(TESTE[0]), sh(TESTE[-1]), "", ORANGE)], arrows=[ - Arrow(sh(FUND2), "sub 87.30 nu mai e double bottom:\nideea de la pasul 1 a murit,\nnu mai ai ce aștepta", + Arrow(sh(TESTE[-1]), "sub 87.30 nu mai ține suportul weekly:\nideea de la pasul 1 a murit,\nnu mai ai ce aștepta", price=SL, where="below", color=RED, dx=-40, dy=34), ], scale=40.0, gap=26, body_w=13, left=64, width=680, vol_h=0, - title="MBT-10 — stopul sub structură (exemplu construit)", + title="MBT-10 — stopul sub structură, pe 60 de minute", ) svg = ch.render() m = re.search(r'viewBox="0 0 (\d+) (\d+)"', svg) W, H = int(m.group(1)), int(m.group(2)) -OFF = (float(re.search(r'", brk + "".join( f'{t}' for i, (t, c) in enumerate(linii)) + "") diff --git a/gen/strategii/hammer_mbt10_mbt_stop.svg b/gen/strategii/hammer_mbt10_mbt_stop.svg index ac2a3ad..ec09133 100644 --- a/gen/strategii/hammer_mbt10_mbt_stop.svg +++ b/gen/strategii/hammer_mbt10_mbt_stop.svg @@ -1,35 +1,34 @@ - - MBT-10 — stopul sub structură (exemplu construit) - - structura care ține ideea - - intrare 89.90 (close-ul zilei) - - suport weekly 87.50 - - SL 87.30 + + MBT-10 — stopul sub structură, pe 60 de minute + + + intrare 89.90 (close-ul barei) + + suport weekly 88.00, testat de trei ori + + SL 87.30 - + - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + @@ -38,7 +37,7 @@ - sub 87.30 nu mai e double bottom: + sub 87.30 nu mai ține suportul weekly: ideea de la pasul 1 a murit, nu mai ai ce aștepta -1R = 2.60 $Mărimea, cu aceeași regulă ca la buy hammer: 2 % dintr-un cont de 10.000 $ = 200 $;200 / 2.60 = 76.9 → 76 de acțiuni, pierdere maximă 197.60 $.87.30 e cifra materialului, nu marja mea de 5 cenți; suportul weekly 87.50 e construit de mine ca stopulacela să aibă sub ce sta. Materialul nu dă niciun procent fix de stop pentru MBT-10. \ No newline at end of file +1R = 2.60 $Mărimea, cu aceeași regulă ca la buy hammer: 2 % dintr-un cont de 10.000 $ = 200 $;200 / 2.60 = 76.9 → 76 de acțiuni, pierdere maximă 197.60 $.87.30 și suportul weekly 88.00 sunt cifrele materialului, pe exemplul lui de 60 de minute —nu marja mea de 5 cenți. Materialul nu dă niciun procent fix de stop pentru MBT-10:stopul numește structura de sub el. \ No newline at end of file diff --git a/summaries/17_STRATEGII/06_hammer_mbt10.html b/summaries/17_STRATEGII/06_hammer_mbt10.html index 1730059..c9fc26f 100644 --- a/summaries/17_STRATEGII/06_hammer_mbt10.html +++ b/summaries/17_STRATEGII/06_hammer_mbt10.html @@ -40,7 +40,9 @@ hammer da, doar long; MBT-10 nu, ca sistem

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 sunt exemple -construite, cu excepția LABU și Tesla, unde cifrele marcate sunt ale cursului. +construite, cu excepția LABU, a Tesla și a exemplului de MBT-10 din pașii B1-B5 +(suport weekly 88.00 pe 60 de minute, intrare 89.90, SL 87.30, țintă 95.20), +unde cifrele marcate sunt ale cursului. Trimiterile la lecțiile din care vine fiecare pas stau separat, în fise/06_hammer_mbt10_surse.md.

Capitolul are două strategii, nu una. Ele se ating (MBT-10 apare des pe o @@ -488,7 +490,8 @@ desenați — scrie lângă fiecare pe ce diagramă îl vezi.

dreapta al diagramei de la pasul A1: aceeași bară 63.30 / 62.10, alt context, alt sens.
  • Inverted hammer — corpul jos și fitilul lung în sus (candela D din - diagrama de formă). E alt pattern; nu-l confunda cu hammer-ul.
  • + diagrama de formă). Tot semnal bull, tot după o scădere, dar mai slab + decât hammer-ul; nu le confunda.
  • Downtrend / uptrend — o serie de candele care coboară, respectiv urcă, cu maxime și minime tot mai jos (sau tot mai sus). În capitol, „scădere" și „urcare".
  • @@ -500,17 +503,19 @@ desenați — scrie lângă fiecare pe ce diagramă îl vezi.

    monthly 62.00 din panoul stâng al diagramei de la pasul A2.
  • Pivotul daily (PPD) — pivotul calculat din ziua precedentă. Se recalculează în fiecare zi, deci nu e o linie fixă pe grafic. Exemplu: 89.60 - pe diagrama de la pasul B3.
  • + pe diagrama de la pasul B3, desenat acolo doar peste barele + zilei de intrare, exact pentru asta.
  • Locul crimei — un vârf vechi pe care prețul l-a spart și la care se întoarce mai târziu, de data asta pe dedesubt. Cine a vândut acolo prima dată are acum de recuperat, iar cine a ratat urcarea așteaptă exact acolo. Exemplu: 52.10 pe diagrama de ansamblu a MBT-10.
  • Double bottom — două minime aproape la același preț, cu o urcare între - ele. Exemplu: 87.60 și 87.55 pe diagrama de la pasul B1 — - 5 cenți diferență, adică 0,06 %.
  • + ele. Exemplu din material, nedesenat în capitol: picioarele 32.10 și 30.90 + ale cazului A+ de MBT-10, al doilea mai jos, dar cu volum de sub jumătate.
  • Swing low — cel mai jos low al unei coborâri scurte, confirmat de - barele de după, care nu-l mai rup. Se folosește ca loc pentru stopul care - urcă. Exemplu: 65.10, apoi 66.00, pe diagrama de la pasul A5.
  • + două bare care nu-l rup. Se folosește ca loc pentru stopul care urcă. + Exemplu: 63.05, apoi 65.10, apoi 66.00, pe diagrama de la + pasul A5.
  • Trigger — evenimentul care îți dă voie să intri. La buy hammer: o închidere peste high-ul hammer-ului. La MBT-10: închiderea barei în semnal.
  • Stop-loss (SL) — prețul la care ieși automat cu pierdere, pentru că @@ -695,7 +700,7 @@ trece regula de formă.

    Tragi pe grafic suporturile și pivoții weekly, monthly sau quarterly și te uiți cât de departe e low-ul hammer-ului de cel mai apropiat dintre ei.

    -

    +

    Hammer la un nivel vs. hammer în mijlocul range-ului — daily, exemplu construit DA — hammer pe suportul monthly NU — hammer în mijlocul range-ului @@ -772,8 +777,9 @@ uiți cât de departe e low-ul hammer-ului de cel mai apropiat dintre ei.fitilul n-a fost oprit de un nivel, ci s-a oprit singur Completare proprie: materialul cere „un nivel major (weekly / monthly / quarterly), nu mijlocul - range-ului", dar nu dă un prag numeric. Pragul de 1-2 % e împrumutat de la buy doji, ca să ai ce - măsura: aici 0,16 % în stânga, 7,07 % în dreapta. + range-ului", dar nu dă un prag numeric. Cursul dă 0,5 %, la buy doji și pe 60 de minute; 1-2 % pe + daily e adaptarea mea, ca să ai ce măsura: aici 0,16 % în stânga, 7,07 % în dreapta. + Distanța se împarte la nivel, nu la low-ul hammer-ului — aceeași convenție în tot capitolul.

    @@ -782,15 +788,24 @@ uiți cât de departe e low-ul hammer-ului de cel mai apropiat dintre ei. +

    Distanța se măsoară mereu la fel în capitol: diferența împărțită la nivel, +nu la low-ul hammer-ului. Aceeași convenție e și pe etichetele diagramelor, ca +să-ți iasă același număr dacă verifici de mână.

    De ce contează: un fitil lung oprit chiar pe un nivel spune că acolo au intrat cumpărători care așteptau prețul. Același fitil în mijlocul intervalului spune -doar că a fost o zi agitată. Materialul e categoric aici: pattern-ul „contează -mult mai mult la un suport important (weekly, monthly, quarterly) decât în -mijlocul range-ului".

    +doar că a fost o zi agitată.

    +

    Același raționament apare și în materialul de curs, în sesiunea de întrebări +din 11.06.2025 — dar spus despre divergența pe volum, nu despre hammer: ea +contează mult mai mult la un suport important (weekly, monthly, quarterly) +decât în mijlocul range-ului. Nu e un citat al autorului și nu e spus despre +locația hammer-ului; eu îl aplic aici, pentru că mecanismul e același.

    Completare proprie: materialul nu dă un prag numeric pentru „lângă -nivel". Am împrumutat pragul de 1-2 % de la buy doji, ca să ai ce măsura. -Dacă vrei să fii mai strict, ține-te de 1 %.

    +nivel" la hammer. Singurul număr din curs e la buy doji și e pe 60 de +minute: 0,5 %. Pragul de 1-2 % pentru daily nu e al cursului, ci +adaptarea mea din capitolul de buy doji — pe daily, la +0,5 % găsești prea puține simboluri. Dacă vrei să fii mai strict, ține-te +de 1 %.

    Treci mai departe doar dacă low-ul hammer-ului e la cel mult 1-2 % de un suport sau de un pivot weekly, monthly ori quarterly.

    @@ -1231,12 +1246,11 @@ azi în MBT-10 — te uiți la o listă de bare oarecare.

    exact acolo: un suport, locul crimei, un double bottom, un buy doji sau o divergență de volum.

    -

    - MBT-10, pasul „unde" — double bottom pe suportul weekly (exemplu construit) - - double bottom: 87.60 și 87.55 - - suport weekly 87.50 +

    + MBT-10, pasul „unde" — suport weekly testat de trei ori, pe 60 de minute + + + suport weekly 88.00 @@ -1255,70 +1269,70 @@ divergență de volum.

    - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - volum - - - piciorul 1: low 87.60, - la 0,11 % peste suport - - - piciorul 2: low 87.55, cu 5 cenți mai jos, - dar cu volum mai mic decât la piciorul 1 — - vânzarea a slăbit (divergență de volum) -Aici nu intri încă: diagrama arată doar ideea de bottom. MBT-10 e ultima piesă, și vine abia la close-ul unei bare.Cifrele 89.90 / 87.30 / 95.20 ale trade-ului sunt din exemplul construit al materialului;suportul weekly 87.50, pivotul daily 89.60 și structura barelor sunt ale mele.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + volum + test 1 + test 2 + test 3 +Aici nu intri încă: diagrama arată doar ideea de bottom. MBT-10 e ultima piesă, și vine abia la close-ul unei bare.Suportul 88.00 ține de trei ori, iar între teste vârfurile scad — 89.50, apoi 89.10: compresie.Exemplul e al materialului și e pe 60 de minute: suport 88.00, intrare 89.90, SL 87.30, țintă 95.20.Nu e double bottom și nu e divergență de volum — alea sunt din alt exemplu al lui (gap up, picioarele 32.10 / 30.90).Forma exactă a barelor și volumul sunt ale mele; la fel pivotul daily 89.60, pus ca să aibă ce verifica pasul B3.

    -

    Pe diagramă sunt trei motive suprapuse. Prețul coboară până la suportul -weekly 87.50 și face acolo două minime aproape egale — 87.60 și 87.55, cu -5 cenți între ele, adică 0,06 %: un double bottom. Al doilea picior -coboară puțin mai jos decât primul, dar cu volum mai mic — asta e -divergența de volum: prețul mai face un minim, dar vânzarea din spatele lui a -slăbit.

    -

    Structura care leagă cifrele — suportul weekly 87.50 și double bottom-ul 87.60 / -87.55 — e completarea mea, nu a materialului. Exemplul din care vin -89.90 / 87.30 / 95.20 e pe 60 de minute, cu un suport weekly la 88.00 -testat de trei ori, nu pe daily și nu cu un double bottom. Am coborât suportul -la 87.50 ca stopul de la pasul B4 să aibă sub ce sta.

    +

    Pe diagramă e motivul din exemplul materialului, și e un singur motiv: prețul +coboară în suportul weekly 88.00 și îl testează de trei ori, fără să-l +rupă. Între teste, vârfurile sunt tot mai mici — 89.50, apoi 89.10: vânzătorii +împing de fiecare dată mai puțin. Asta e compresia, și atât îți trebuie ca să +poți spune de ce s-ar opri prețul acolo.

    +

    Exemplul e pe 60 de minute, nu pe daily — și materialul spune și de ce: „o +bară daily în suport weekly poate avea un low cu 2-3 % sub suport, deci stopul +ar sta departe". Pe 60 de minute vezi testele una câte una și pui stopul chiar +sub suport. Ideea — suportul weekly — rămâne pe timeframe-ul mare; doar +intrarea se face pe cel mic. Toate cifrele trade-ului sunt ale materialului: +suport 88.00, intrare 89.90, SL 87.30, țintă 95.20. Ale mele sunt doar forma +exactă a barelor, volumul și pivotul daily 89.60, pus ca să aibă ce verifica +pasul B3.

    +

    Celelalte motive din listă — double bottom, divergență de volum — apar în +material pe alt exemplu: gap up în MBT-10, cu picioarele 32.10 și 30.90, al +doilea mai jos dar cu volum de sub jumătate. Sunt două setup-uri diferite; nu +le amesteca într-unul.

    Aici nu intri încă. Diagrama nu are nici intrare, nici stop desenate, fiindcă la pasul ăsta nu există. Materialul e explicit: fără suport, volum și un pattern de bottom, MBT-10 e doar un semnal pe o bară oarecare.

    @@ -1414,33 +1428,31 @@ timp.

    Verifici singurul lucru din MBT-10 pe care îl poți calcula fără indicator: ziua s-a închis peste pivotul daily?

    -

    - MBT-10 — condiția de preț: close peste pivotul daily (exemplu construit) - - - pivotul daily 89.60 - - suport weekly 87.50 - +

    + MBT-10 — condiția de preț: close peste pivotul daily (60 de minute) + + + suport weekly 88.00 + - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + @@ -1449,39 +1461,41 @@ ziua s-a închis peste pivotul daily?

    - - - - - - - - - - - - - - - - volum - - - a atins 89.70 în timpul zilei, - dar s-a închis la 89.40, sub pivot: - nu e semnal + + + + + + + + + + + + + + + + volum + + + a atins 89.70 în timpul barei, + dar s-a închis la 89.40, sub pivot: + nu e semnal s-a închis la 89.90, peste pivot: - aici intri, la close-ul zilei -Pivotul daily se recalculează în fiecare zi din maximul, minimul și închiderea zilei precedente;linia desenată e valoarea din ziua intrării, 89.60, nu un nivel fix.Asta e tot ce se poate verifica din MBT-10 fără indicatorul proprietar — „prima componentă" din el,cum îi spune materialul; restul formulei nu e publicat nicăieri.

    + aici intri, la close-ul barei +pivotul daily al zilei deintrare: 89.60 (ieri, altul) →Pivotul daily se recalculează în fiecare zi din maximul, minimul și închiderea zilei precedente.Pe 60 de minute e același nivel pentru toate barele unei zile, așa că e desenat doar între cele douălinii subțiri care taie ziua intrării — nu peste tot graficul.Asta e tot ce se poate verifica din MBT-10 fără indicatorul proprietar — „prima componentă" din el,cum îi spune materialul; restul formulei nu e publicat nicăieri.

    Pivotul daily se calculează din maximul, minimul și închiderea zilei -precedente, cu formula clasică — deci se schimbă în fiecare zi. Pe diagramă, -în ziua intrării el e la 89.60. Ziua dinainte urcă până la 89.70 în timpul -sesiunii, dar se închide la 89.40, sub pivot: nu e semnal. Ziua următoare se -închide la 89.90, peste pivot: aici intri, la close.

    +precedente, cu formula clasică — deci se schimbă în fiecare zi. Pe 60 de +minute, timeframe-ul exemplului, el e un singur nivel pentru toate barele unei +zile: de aceea pe diagramă e desenat doar peste barele zilei de intrare, între +cele două linii subțiri, nu peste tot graficul. În ziua aceea e la 89.60. Bara +dinainte urcă până la 89.70, dar se închide la 89.40, sub pivot: nu e semnal. +Bara următoare se închide la 89.90, peste pivot: aici intri, la close-ul ei.

    Materialul numește asta „prima componentă din MBT-10", ceea ce înseamnă probabil că nu e singura — restul formulei nu e publicat nicăieri. Așa că: condiția asta e necesară, dar nu știm dacă e suficientă. Într-o sesiune @@ -1496,38 +1510,37 @@ ai platforma autorului, dacă semnalul chiar s-a aprins la close).

    de tine, și dimensionezi pentru două-trei încercări dacă vii după un gap down.

    -

    - MBT-10 — stopul sub structură (exemplu construit) - - structura care ține ideea - - intrare 89.90 (close-ul zilei) - - suport weekly 87.50 - - SL 87.30 +

    + MBT-10 — stopul sub structură, pe 60 de minute + + + intrare 89.90 (close-ul barei) + + suport weekly 88.00, testat de trei ori + + SL 87.30 - + - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + @@ -1536,22 +1549,23 @@ down.

    - sub 87.30 nu mai e double bottom: + sub 87.30 nu mai ține suportul weekly: ideea de la pasul 1 a murit, nu mai ai ce aștepta -1R = 2.60 $Mărimea, cu aceeași regulă ca la buy hammer: 2 % dintr-un cont de 10.000 $ = 200 $;200 / 2.60 = 76.9 → 76 de acțiuni, pierdere maximă 197.60 $.87.30 e cifra materialului, nu marja mea de 5 cenți; suportul weekly 87.50 e construit de mine ca stopulacela să aibă sub ce sta. Materialul nu dă niciun procent fix de stop pentru MBT-10.

    +1R = 2.60 $Mărimea, cu aceeași regulă ca la buy hammer: 2 % dintr-un cont de 10.000 $ = 200 $;200 / 2.60 = 76.9 → 76 de acțiuni, pierdere maximă 197.60 $.87.30 și suportul weekly 88.00 sunt cifrele materialului, pe exemplul lui de 60 de minute —nu marja mea de 5 cenți. Materialul nu dă niciun procent fix de stop pentru MBT-10:stopul numește structura de sub el.

    -

    Stopul stă sub ce ar invalida ideea de la pasul B1. În construcția din capitol, -ideea era double bottom-ul de pe suportul weekly 87.50 — structură a mea, nu -a materialului, al cărui exemplu e pe 60 de minute, cu suport weekly 88.00 -testat de trei ori. Deci stopul merge la 87.30, sub amândouă picioarele și -sub suport. Riscul e 89.90 − 87.30 = 2.60 $ pe acțiune; pe același cont de -10.000 $ cu 2 %, 200 / 2.60 = 76,9, deci 76 de acțiuni.

    +

    Stopul stă sub ce ar invalida ideea de la pasul B1. Aici ideea era suportul +weekly 88.00, cel testat de trei ori, deci stopul merge la 87.30, sub el — +exact unde îl pune materialul. Dacă prețul se tranzacționează sub 87.30, +suportul a cedat și motivul trade-ului nu mai există. Riscul e +89.90 − 87.30 = 2.60 $ pe acțiune; pe același cont de 10.000 $ cu 2 %, +200 / 2.60 = 76,9, deci 76 de acțiuni.

    Alte exemple de aceeași formă din material: sub codița hammer-ului care e și locul crimei (52.00); sub low-ul barelor de după un gap down (63.20, apoi -60.40); la un gap up, sub low-ul barei de gap (32.80). De fiecare dată stopul -numește o structură, nu un procent — materialul nu dă niciun procent fix.

    +60.40, sub noul low de 60.60); la un gap up, sub low-ul barei de gap (32.80). +De fiecare dată stopul numește o structură, nu un procent — materialul nu dă +niciun procent fix.

    Excepția de mărime: primul MBT-10 după un gap down poate să nu meargă. În exemplul din material, încercarea 1 e stopată, iar încercarea 2 merge până la 4,7R. De aceea împarți riscul la două-trei încercări, cu același risc în bani @@ -1564,18 +1578,18 @@ la fiecare, în loc să pui tot pe prima. Diagrama e la

    Ieși la prima structură din stânga care a oprit prețul ultima dată, pentru că MBT-10 nu are o țintă proprie.

    -

    - MBT-10 — ieșirea la prima structură din stânga (exemplu construit) +

    + MBT-10 — ieșirea la prima structură din stânga (60 de minute) de aici a pornit coborârea drumul până la structură: 7 bare - + ținta 95.20 = ultimul maxim dinaintea coborârii - - intrare 89.90 - - SL 87.30 + + intrare 89.90 + + SL 87.30 @@ -1594,26 +1608,26 @@ că MBT-10 nu are o țintă proprie.

    - + - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + @@ -1630,41 +1644,41 @@ că MBT-10 nu are o țintă proprie.

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - volum - - - ieși la 95.20 (+2.0R): - prima structură care a oprit - prețul ultima dată -Materialul nu dă o regulă proprie de take-profit la MBT-10. Ce au în comun toate exemplele lui e căținta e o structură vizibilă în stânga: un vârf anterior, ultimul maxim mai jos, sau închiderea unui gap.Aici: 89.90 → 95.20 = 2.0R, în 7 bare. Cifrele trade-ului sunt din exemplul construit al materialului.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + volum + + + ieși la 95.20 (+2.0R): + prima structură care a oprit + prețul ultima dată +Materialul nu dă o regulă proprie de take-profit la MBT-10. Ce au în comun toate exemplele lui e căținta e o structură vizibilă în stânga: un vârf anterior, ultimul maxim mai jos, sau închiderea unui gap.Aici: 89.90 → 95.20 = 2.0R, în 7 bare de 60 de minute. Cifrele trade-ului sunt din exemplul materialului.

    Asta e o gaură reală în material, nu o simplificare a mea: fișierul principal @@ -1693,8 +1707,8 @@ același trade, cu atât e mai bun — dar materialul nu cere o poziție mai mar

    Buy hammer A+ vs. mediocru (două panouri, exemple construite) A+ — hammer la suport monthly - - suport monthly 42.00 + + suport monthly 42.00 @@ -1762,8 +1776,8 @@ același trade, cu atât e mai bun — dar materialul nu cere o poziție mai mar bara 13: 42.95 peste 42.90, volum bun. Mediocru — hammer fără nivel - - fără nivel apropiat (suport 42.50 la −3,6 %) + + fără nivel apropiat (suport 42.50 la −3,8 %) @@ -1876,7 +1890,9 @@ hammer.

    Singurul caz pe care materialul îl numește „cel mai puternic": un gap up în MBT-10 după o cădere masivă, departe de medie, cu indicatorul stochastic în zona de supravânzare pe monthly și weekly, cu un double bottom sau o serie de -doji-uri ideal în locul crimei, și cu divergență de volum pe ultimul picior.

    +doji-uri ideal în locul crimei, și cu divergență de volum pe ultimul picior. În +exemplul lui, picioarele sunt 32.10 și 30.90 — al doilea mai jos, dar cu volum +de sub jumătate — iar bara de gap închide la 34.20, peste neckline-ul 34.10.

    Opusul: MBT-10 pe o bară oarecare, luat direct din scaner, fără nicio confluență. Diferența nu e forma semnalului — el arată la fel, fiindcă nu se vede — ci contextul din jur.

    @@ -1885,15 +1901,15 @@ vede — ci contextul din jur.

    După gap down — primul MBT-10 te scoate, al doilea merge (exemplu construit) - + #1 intrare 64.80 - + #1 SL 63.20 - + #2 intrare 62.20 - - #2 SL 60.40 - + + #2 SL 60.40, sub noul low 60.60 + TP 70.60 = 4.7R (gap închis) @@ -1937,7 +1953,7 @@ vede — ci contextul din jur.

    - + @@ -1999,8 +2015,8 @@ vede — ci contextul din jur.

    gap down MBT-10 #1 stop #1 atins - MBT-10 #2 -MBT-10 #1: intrare 64.80 / SL 63.20 — risc 1R în baniMBT-10 #2: intrare 62.20 / SL 60.40 — risc 1R în bani (mărime ajustată)Exemplu construit: #1 și #2 au același risc în bani; #2 singur dă 4.7R.De aceea mărimea se împarte pe 2-3 încercări.

    + MBT-10 #2: flush la 60.60, închidere 62.20 +MBT-10 #1: intrare 64.80 / SL 63.20 — risc 1R în baniMBT-10 #2: intrare 62.20 / SL 60.40, sub noul low 60.60 — risc 1R în bani (mărime ajustată)Exemplu construit: #1 și #2 au același risc în bani; #2 singur dă 4.7R.De aceea mărimea se împarte pe 2-3 încercări.

    Ăsta e cazul care justifică împărțirea riscului de la pasul B4. @@ -2020,11 +2036,11 @@ trade, nu dacă intri.

    LABU — daily - - suport monthly 80.00 - - SL sub low-ul hammer-ului 79.60 (construit) - + + suport monthly 80.00 + + SL 79.55 = low 79.60 − 5 cenți (construit) + intrare 81.30 (construit) SMA-20 @@ -2104,51 +2120,51 @@ trade, nu dacă intri.

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - volum - hammer 80.90 / 79.60 (construit) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + volum + hammer 80.90 / 79.60 (construit) +20 % (cifra cursului): 97.56 / 81.30 - bara 23 = hammer: o 80.80, h 80.90, l 79.60, c 80.90 — corp 0.10, fitil jos 1.20 (H=C), pe suportul 80.00 - bara 24 = confirmare: close 81.30 — close peste high-ul hammer-ului 80.90 = intrare 81.30 (construit) - Procentul (+20 % în jumătate de lună) și contextul (suport monthly) sunt ale cursului; + bara 23 = hammer: o 80.80, h 80.90, l 79.60, c 80.90 — corp 0.10, fitil jos 1.20 (H=C), pe suportul 80.00 + bara 24 = confirmare: close 81.30 — close peste high-ul hammer-ului 80.90 = intrare 81.30 (construit) + Procentul (+20 % în jumătate de lună) și contextul (suport monthly) sunt ale cursului; nivelurile de preț sunt construite de sumarizator.

    diff --git a/summaries/17_STRATEGII/06_hammer_mbt10.md b/summaries/17_STRATEGII/06_hammer_mbt10.md index 9793ddb..4cb2c53 100644 --- a/summaries/17_STRATEGII/06_hammer_mbt10.md +++ b/summaries/17_STRATEGII/06_hammer_mbt10.md @@ -8,7 +8,9 @@ hammer da, doar long; MBT-10 nu, ca sistem **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 sunt exemple -construite, cu excepția LABU și Tesla, unde cifrele marcate sunt ale cursului. +construite, cu excepția LABU, a Tesla și a exemplului de MBT-10 din pașii B1-B5 +(suport weekly 88.00 pe 60 de minute, intrare 89.90, SL 87.30, țintă 95.20), +unde cifrele marcate sunt ale cursului. Trimiterile la lecțiile din care vine fiecare pas stau separat, în [`fise/06_hammer_mbt10_surse.md`](fise/06_hammer_mbt10_surse.md). @@ -473,7 +475,8 @@ desenați — scrie lângă fiecare pe ce diagramă îl vezi. dreapta al diagramei de la [pasul A1](#pasul-a1): aceeași bară 63.30 / 62.10, alt context, alt sens. - **Inverted hammer** — corpul jos și fitilul lung în sus (candela D din - diagrama de formă). E alt pattern; nu-l confunda cu hammer-ul. + diagrama de formă). Tot semnal bull, tot după o scădere, dar **mai slab** + decât hammer-ul; nu le confunda. - **Downtrend / uptrend** — o serie de candele care coboară, respectiv urcă, cu maxime și minime tot mai jos (sau tot mai sus). În capitol, „scădere" și „urcare". @@ -485,17 +488,19 @@ desenați — scrie lângă fiecare pe ce diagramă îl vezi. monthly 62.00 din panoul stâng al diagramei de la [pasul A2](#pasul-a2). - **Pivotul daily (PPD)** — pivotul calculat din ziua precedentă. Se recalculează în fiecare zi, deci nu e o linie fixă pe grafic. Exemplu: 89.60 - pe diagrama de la [pasul B3](#pasul-b3). + pe diagrama de la [pasul B3](#pasul-b3), desenat acolo doar peste barele + zilei de intrare, exact pentru asta. - **Locul crimei** — un vârf vechi pe care prețul l-a spart și la care se întoarce mai târziu, de data asta pe dedesubt. Cine a vândut acolo prima dată are acum de recuperat, iar cine a ratat urcarea așteaptă exact acolo. Exemplu: 52.10 pe diagrama de ansamblu a MBT-10. - **Double bottom** — două minime aproape la același preț, cu o urcare între - ele. Exemplu: 87.60 și 87.55 pe diagrama de la [pasul B1](#pasul-b1) — - 5 cenți diferență, adică 0,06 %. + ele. Exemplu din material, nedesenat în capitol: picioarele 32.10 și 30.90 + ale cazului A+ de MBT-10, al doilea mai jos, dar cu volum de sub jumătate. - **Swing low** — cel mai jos low al unei coborâri scurte, confirmat de - barele de după, care nu-l mai rup. Se folosește ca loc pentru stopul care - urcă. Exemplu: 65.10, apoi 66.00, pe diagrama de la [pasul A5](#pasul-a5). + **două** bare care nu-l rup. Se folosește ca loc pentru stopul care urcă. + Exemplu: 63.05, apoi 65.10, apoi 66.00, pe diagrama de la + [pasul A5](#pasul-a5). - **Trigger** — evenimentul care îți dă voie să intri. La buy hammer: o închidere peste high-ul hammer-ului. La MBT-10: închiderea barei în semnal. - **Stop-loss (SL)** — prețul la care ieși automat cu pierdere, pentru că @@ -697,7 +702,7 @@ trece regula de formă. uiți cât de departe e low-ul hammer-ului de cel mai apropiat dintre ei.** - + Hammer la un nivel vs. hammer în mijlocul range-ului — daily, exemplu construit DA — hammer pe suportul monthly NU — hammer în mijlocul range-ului @@ -774,8 +779,9 @@ uiți cât de departe e low-ul hammer-ului de cel mai apropiat dintre ei.** fitilul n-a fost oprit de un nivel, ci s-a oprit singur Completare proprie: materialul cere „un nivel major (weekly / monthly / quarterly), nu mijlocul - range-ului", dar nu dă un prag numeric. Pragul de 1-2 % e împrumutat de la buy doji, ca să ai ce - măsura: aici 0,16 % în stânga, 7,07 % în dreapta. + range-ului", dar nu dă un prag numeric. Cursul dă 0,5 %, la buy doji și pe 60 de minute; 1-2 % pe + daily e adaptarea mea, ca să ai ce măsura: aici 0,16 % în stânga, 7,07 % în dreapta. + Distanța se împarte la nivel, nu la low-ul hammer-ului — aceeași convenție în tot capitolul. @@ -785,15 +791,26 @@ hammer „la nivel". În dreapta, cel mai apropiat nivel de sub el e la 58.00, u gol de 7,07 %: hammer în mijlocul range-ului, adică între suportul de jos și rezistența de sus, fără nimic în jur. Ochiul nu vede diferența, procentul da. +Distanța se măsoară mereu la fel în capitol: diferența împărțită la **nivel**, +nu la low-ul hammer-ului. Aceeași convenție e și pe etichetele diagramelor, ca +să-ți iasă același număr dacă verifici de mână. + De ce contează: un fitil lung oprit chiar pe un nivel spune că acolo au intrat cumpărători care așteptau prețul. Același fitil în mijlocul intervalului spune -doar că a fost o zi agitată. Materialul e categoric aici: pattern-ul „contează -mult mai mult la un suport important (weekly, monthly, quarterly) decât în -mijlocul range-ului". +doar că a fost o zi agitată. + +Același raționament apare și în materialul de curs, în sesiunea de întrebări +din 11.06.2025 — dar spus despre **divergența pe volum**, nu despre hammer: ea +contează mult mai mult la un suport important (weekly, monthly, quarterly) +decât în mijlocul range-ului. Nu e un citat al autorului și nu e spus despre +locația hammer-ului; eu îl aplic aici, pentru că mecanismul e același. > **Completare proprie:** materialul nu dă un prag numeric pentru „lângă -> nivel". Am împrumutat pragul de 1-2 % de la buy doji, ca să ai ce măsura. -> Dacă vrei să fii mai strict, ține-te de 1 %. +> nivel" la hammer. Singurul număr din curs e la buy doji și e pe 60 de +> minute: **0,5 %**. Pragul de **1-2 %** pentru daily nu e al cursului, ci +> adaptarea mea din [capitolul de buy doji](01_buy_doji.md) — pe daily, la +> 0,5 % găsești prea puține simboluri. Dacă vrei să fii mai strict, ține-te +> de 1 %. **Treci mai departe doar dacă** low-ul hammer-ului e la cel mult 1-2 % de un suport sau de un pivot weekly, monthly ori quarterly. @@ -1258,12 +1275,11 @@ exact acolo: un suport, locul crimei, un double bottom, un buy doji sau o divergență de volum.** - - MBT-10, pasul „unde" — double bottom pe suportul weekly (exemplu construit) - - double bottom: 87.60 și 87.55 - - suport weekly 87.50 + + MBT-10, pasul „unde" — suport weekly testat de trei ori, pe 60 de minute + + + suport weekly 88.00 @@ -1282,71 +1298,72 @@ divergență de volum.** - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - volum - - - piciorul 1: low 87.60, - la 0,11 % peste suport - - - piciorul 2: low 87.55, cu 5 cenți mai jos, - dar cu volum mai mic decât la piciorul 1 — - vânzarea a slăbit (divergență de volum) -Aici nu intri încă: diagrama arată doar ideea de bottom. MBT-10 e ultima piesă, și vine abia la close-ul unei bare.Cifrele 89.90 / 87.30 / 95.20 ale trade-ului sunt din exemplul construit al materialului;suportul weekly 87.50, pivotul daily 89.60 și structura barelor sunt ale mele. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + volum + test 1 + test 2 + test 3 +Aici nu intri încă: diagrama arată doar ideea de bottom. MBT-10 e ultima piesă, și vine abia la close-ul unei bare.Suportul 88.00 ține de trei ori, iar între teste vârfurile scad — 89.50, apoi 89.10: compresie.Exemplul e al materialului și e pe 60 de minute: suport 88.00, intrare 89.90, SL 87.30, țintă 95.20.Nu e double bottom și nu e divergență de volum — alea sunt din alt exemplu al lui (gap up, picioarele 32.10 / 30.90).Forma exactă a barelor și volumul sunt ale mele; la fel pivotul daily 89.60, pus ca să aibă ce verifica pasul B3. -Pe diagramă sunt trei motive suprapuse. Prețul coboară până la suportul -weekly 87.50 și face acolo două minime aproape egale — 87.60 și 87.55, cu -5 cenți între ele, adică 0,06 %: un **double bottom**. Al doilea picior -coboară puțin mai jos decât primul, dar cu **volum mai mic** — asta e -divergența de volum: prețul mai face un minim, dar vânzarea din spatele lui a -slăbit. +Pe diagramă e motivul din exemplul materialului, și e un singur motiv: prețul +coboară în **suportul weekly 88.00** și îl testează de **trei ori**, fără să-l +rupă. Între teste, vârfurile sunt tot mai mici — 89.50, apoi 89.10: vânzătorii +împing de fiecare dată mai puțin. Asta e compresia, și atât îți trebuie ca să +poți spune de ce s-ar opri prețul acolo. -Structura care leagă cifrele — suportul weekly 87.50 și double bottom-ul 87.60 / -87.55 — e **completarea mea**, nu a materialului. Exemplul din care vin -89.90 / 87.30 / 95.20 e pe **60 de minute**, cu un **suport weekly la 88.00 -testat de trei ori**, nu pe daily și nu cu un double bottom. Am coborât suportul -la 87.50 ca stopul de la pasul B4 să aibă sub ce sta. +**Exemplul e pe 60 de minute, nu pe daily** — și materialul spune și de ce: „o +bară daily în suport weekly poate avea un low cu 2-3 % sub suport, deci stopul +ar sta departe". Pe 60 de minute vezi testele una câte una și pui stopul chiar +sub suport. Ideea — suportul weekly — rămâne pe timeframe-ul mare; doar +intrarea se face pe cel mic. Toate cifrele trade-ului sunt ale materialului: +suport 88.00, intrare 89.90, SL 87.30, țintă 95.20. Ale mele sunt doar forma +exactă a barelor, volumul și pivotul daily 89.60, pus ca să aibă ce verifica +pasul B3. + +Celelalte motive din listă — double bottom, divergență de volum — apar în +material pe **alt** exemplu: gap up în MBT-10, cu picioarele 32.10 și 30.90, al +doilea mai jos dar cu volum de sub jumătate. Sunt două setup-uri diferite; nu +le amesteca într-unul. Aici nu intri încă. Diagrama nu are nici intrare, nici stop desenate, fiindcă la pasul ăsta nu există. Materialul e explicit: fără suport, volum și un @@ -1452,33 +1469,31 @@ timp. ziua s-a închis peste pivotul daily?** - - MBT-10 — condiția de preț: close peste pivotul daily (exemplu construit) - - - pivotul daily 89.60 - - suport weekly 87.50 - + + MBT-10 — condiția de preț: close peste pivotul daily (60 de minute) + + + suport weekly 88.00 + - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + @@ -1487,39 +1502,41 @@ ziua s-a închis peste pivotul daily?** - - - - - - - - - - - - - - - - volum - - - a atins 89.70 în timpul zilei, - dar s-a închis la 89.40, sub pivot: - nu e semnal + + + + + + + + + + + + + + + + volum + + + a atins 89.70 în timpul barei, + dar s-a închis la 89.40, sub pivot: + nu e semnal s-a închis la 89.90, peste pivot: - aici intri, la close-ul zilei -Pivotul daily se recalculează în fiecare zi din maximul, minimul și închiderea zilei precedente;linia desenată e valoarea din ziua intrării, 89.60, nu un nivel fix.Asta e tot ce se poate verifica din MBT-10 fără indicatorul proprietar — „prima componentă" din el,cum îi spune materialul; restul formulei nu e publicat nicăieri. + aici intri, la close-ul barei +pivotul daily al zilei deintrare: 89.60 (ieri, altul) →Pivotul daily se recalculează în fiecare zi din maximul, minimul și închiderea zilei precedente.Pe 60 de minute e același nivel pentru toate barele unei zile, așa că e desenat doar între cele douălinii subțiri care taie ziua intrării — nu peste tot graficul.Asta e tot ce se poate verifica din MBT-10 fără indicatorul proprietar — „prima componentă" din el,cum îi spune materialul; restul formulei nu e publicat nicăieri. Pivotul daily se calculează din maximul, minimul și închiderea zilei -precedente, cu formula clasică — deci se schimbă în fiecare zi. Pe diagramă, -în ziua intrării el e la 89.60. Ziua dinainte urcă până la 89.70 în timpul -sesiunii, dar se închide la 89.40, sub pivot: nu e semnal. Ziua următoare se -închide la 89.90, peste pivot: aici intri, la close. +precedente, cu formula clasică — deci se schimbă în fiecare zi. Pe 60 de +minute, timeframe-ul exemplului, el e un singur nivel pentru toate barele unei +zile: de aceea pe diagramă e desenat doar peste barele zilei de intrare, între +cele două linii subțiri, nu peste tot graficul. În ziua aceea e la 89.60. Bara +dinainte urcă până la 89.70, dar se închide la 89.40, sub pivot: nu e semnal. +Bara următoare se închide la 89.90, peste pivot: aici intri, la close-ul ei. Materialul numește asta „prima componentă din MBT-10", ceea ce înseamnă probabil că nu e singura — restul formulei nu e publicat nicăieri. Așa că: @@ -1539,38 +1556,37 @@ de tine, și dimensionezi pentru două-trei încercări dacă vii după un gap down.** - - MBT-10 — stopul sub structură (exemplu construit) - - structura care ține ideea - - intrare 89.90 (close-ul zilei) - - suport weekly 87.50 - - SL 87.30 + + MBT-10 — stopul sub structură, pe 60 de minute + + + intrare 89.90 (close-ul barei) + + suport weekly 88.00, testat de trei ori + + SL 87.30 - + - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + @@ -1579,23 +1595,24 @@ down.** - sub 87.30 nu mai e double bottom: + sub 87.30 nu mai ține suportul weekly: ideea de la pasul 1 a murit, nu mai ai ce aștepta -1R = 2.60 $Mărimea, cu aceeași regulă ca la buy hammer: 2 % dintr-un cont de 10.000 $ = 200 $;200 / 2.60 = 76.9 → 76 de acțiuni, pierdere maximă 197.60 $.87.30 e cifra materialului, nu marja mea de 5 cenți; suportul weekly 87.50 e construit de mine ca stopulacela să aibă sub ce sta. Materialul nu dă niciun procent fix de stop pentru MBT-10. +1R = 2.60 $Mărimea, cu aceeași regulă ca la buy hammer: 2 % dintr-un cont de 10.000 $ = 200 $;200 / 2.60 = 76.9 → 76 de acțiuni, pierdere maximă 197.60 $.87.30 și suportul weekly 88.00 sunt cifrele materialului, pe exemplul lui de 60 de minute —nu marja mea de 5 cenți. Materialul nu dă niciun procent fix de stop pentru MBT-10:stopul numește structura de sub el. -Stopul stă sub ce ar invalida ideea de la pasul B1. În construcția din capitol, -ideea era double bottom-ul de pe suportul weekly 87.50 — **structură a mea**, nu -a materialului, al cărui exemplu e pe 60 de minute, cu suport weekly 88.00 -testat de trei ori. Deci stopul merge la **87.30**, sub amândouă picioarele și -sub suport. Riscul e 89.90 − 87.30 = **2.60 $ pe acțiune**; pe același cont de -10.000 $ cu 2 %, 200 / 2.60 = 76,9, deci **76 de acțiuni**. +Stopul stă sub ce ar invalida ideea de la pasul B1. Aici ideea era suportul +weekly 88.00, cel testat de trei ori, deci stopul merge la **87.30**, sub el — +exact unde îl pune materialul. Dacă prețul se tranzacționează sub 87.30, +suportul a cedat și motivul trade-ului nu mai există. Riscul e +89.90 − 87.30 = **2.60 $ pe acțiune**; pe același cont de 10.000 $ cu 2 %, +200 / 2.60 = 76,9, deci **76 de acțiuni**. Alte exemple de aceeași formă din material: sub codița hammer-ului care e și locul crimei (52.00); sub low-ul barelor de după un gap down (63.20, apoi -60.40); la un gap up, sub low-ul barei de gap (32.80). De fiecare dată stopul -numește o structură, nu un procent — materialul nu dă niciun procent fix. +60.40, sub noul low de 60.60); la un gap up, sub low-ul barei de gap (32.80). +De fiecare dată stopul numește o structură, nu un procent — materialul nu dă +niciun procent fix. Excepția de mărime: **primul MBT-10 după un gap down poate să nu meargă**. În exemplul din material, încercarea 1 e stopată, iar încercarea 2 merge până la @@ -1613,18 +1630,18 @@ la fiecare, în loc să pui tot pe prima. Diagrama e la că MBT-10 nu are o țintă proprie.** - - MBT-10 — ieșirea la prima structură din stânga (exemplu construit) + + MBT-10 — ieșirea la prima structură din stânga (60 de minute) de aici a pornit coborârea drumul până la structură: 7 bare - + ținta 95.20 = ultimul maxim dinaintea coborârii - - intrare 89.90 - - SL 87.30 + + intrare 89.90 + + SL 87.30 @@ -1643,26 +1660,26 @@ că MBT-10 nu are o țintă proprie.** - + - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + @@ -1679,41 +1696,41 @@ că MBT-10 nu are o țintă proprie.** - - - - - - - - - - - - - - - - - - - - - - - - - - - - - volum - - - ieși la 95.20 (+2.0R): - prima structură care a oprit - prețul ultima dată -Materialul nu dă o regulă proprie de take-profit la MBT-10. Ce au în comun toate exemplele lui e căținta e o structură vizibilă în stânga: un vârf anterior, ultimul maxim mai jos, sau închiderea unui gap.Aici: 89.90 → 95.20 = 2.0R, în 7 bare. Cifrele trade-ului sunt din exemplul construit al materialului. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + volum + + + ieși la 95.20 (+2.0R): + prima structură care a oprit + prețul ultima dată +Materialul nu dă o regulă proprie de take-profit la MBT-10. Ce au în comun toate exemplele lui e căținta e o structură vizibilă în stânga: un vârf anterior, ultimul maxim mai jos, sau închiderea unui gap.Aici: 89.90 → 95.20 = 2.0R, în 7 bare de 60 de minute. Cifrele trade-ului sunt din exemplul materialului. Asta e o gaură reală în material, nu o simplificare a mea: fișierul principal @@ -1749,8 +1766,8 @@ același trade, cu atât e mai bun — dar materialul nu cere o poziție mai mar Buy hammer A+ vs. mediocru (două panouri, exemple construite) A+ — hammer la suport monthly - - suport monthly 42.00 + + suport monthly 42.00 @@ -1818,8 +1835,8 @@ același trade, cu atât e mai bun — dar materialul nu cere o poziție mai mar bara 13: 42.95 peste 42.90, volum bun. Mediocru — hammer fără nivel - - fără nivel apropiat (suport 42.50 la −3,6 %) + + fără nivel apropiat (suport 42.50 la −3,8 %) @@ -1912,7 +1929,9 @@ hammer. Singurul caz pe care materialul îl numește „cel mai puternic": un **gap up** în MBT-10 după o cădere masivă, departe de medie, cu indicatorul stochastic în zona de supravânzare pe monthly și weekly, cu un double bottom sau o serie de -doji-uri ideal în locul crimei, și cu divergență de volum pe ultimul picior. +doji-uri ideal în locul crimei, și cu divergență de volum pe ultimul picior. În +exemplul lui, picioarele sunt 32.10 și 30.90 — al doilea mai jos, dar cu volum +de sub jumătate — iar bara de gap închide la 34.20, peste neckline-ul 34.10. Opusul: MBT-10 pe o bară oarecare, luat direct din scaner, fără nicio confluență. Diferența nu e forma semnalului — el arată la fel, fiindcă nu se @@ -1924,15 +1943,15 @@ vede — ci contextul din jur. După gap down — primul MBT-10 te scoate, al doilea merge (exemplu construit) - + #1 intrare 64.80 - + #1 SL 63.20 - + #2 intrare 62.20 - - #2 SL 60.40 - + + #2 SL 60.40, sub noul low 60.60 + TP 70.60 = 4.7R (gap închis) @@ -1976,7 +1995,7 @@ vede — ci contextul din jur. - + @@ -2038,8 +2057,8 @@ vede — ci contextul din jur. gap down MBT-10 #1 stop #1 atins - MBT-10 #2 -MBT-10 #1: intrare 64.80 / SL 63.20 — risc 1R în baniMBT-10 #2: intrare 62.20 / SL 60.40 — risc 1R în bani (mărime ajustată)Exemplu construit: #1 și #2 au același risc în bani; #2 singur dă 4.7R.De aceea mărimea se împarte pe 2-3 încercări. + MBT-10 #2: flush la 60.60, închidere 62.20 +MBT-10 #1: intrare 64.80 / SL 63.20 — risc 1R în baniMBT-10 #2: intrare 62.20 / SL 60.40, sub noul low 60.60 — risc 1R în bani (mărime ajustată)Exemplu construit: #1 și #2 au același risc în bani; #2 singur dă 4.7R.De aceea mărimea se împarte pe 2-3 încercări. Ăsta e cazul care justifică împărțirea riscului de la [pasul B4](#pasul-b4). @@ -2064,11 +2083,11 @@ Asta se bate parțial cu ideea că MBT-10 e ultima piesă din flux LABU — daily - - suport monthly 80.00 - - SL sub low-ul hammer-ului 79.60 (construit) - + + suport monthly 80.00 + + SL 79.55 = low 79.60 − 5 cenți (construit) + intrare 81.30 (construit) SMA-20 @@ -2148,51 +2167,51 @@ Asta se bate parțial cu ideea că MBT-10 e ultima piesă din flux - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - volum - hammer 80.90 / 79.60 (construit) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + volum + hammer 80.90 / 79.60 (construit) +20 % (cifra cursului): 97.56 / 81.30 - bara 23 = hammer: o 80.80, h 80.90, l 79.60, c 80.90 — corp 0.10, fitil jos 1.20 (H=C), pe suportul 80.00 - bara 24 = confirmare: close 81.30 — close peste high-ul hammer-ului 80.90 = intrare 81.30 (construit) - Procentul (+20 % în jumătate de lună) și contextul (suport monthly) sunt ale cursului; + bara 23 = hammer: o 80.80, h 80.90, l 79.60, c 80.90 — corp 0.10, fitil jos 1.20 (H=C), pe suportul 80.00 + bara 24 = confirmare: close 81.30 — close peste high-ul hammer-ului 80.90 = intrare 81.30 (construit) + Procentul (+20 % în jumătate de lună) și contextul (suport monthly) sunt ale cursului; nivelurile de preț sunt construite de sumarizator. diff --git a/summaries/17_STRATEGII/fise/06_hammer_mbt10_surse.html b/summaries/17_STRATEGII/fise/06_hammer_mbt10_surse.html index c6d1175..c31607c 100644 --- a/summaries/17_STRATEGII/fise/06_hammer_mbt10_surse.html +++ b/summaries/17_STRATEGII/fise/06_hammer_mbt10_surse.html @@ -55,6 +55,8 @@ construite) · (definiția hammer, trigger, SL/TP, hanging man) · scaner = 11_construire_scanere_sf_byd_sld.md · byh = 13_strategia_3_byh.md · +buydoji = 01_buy_doji.md (capitolul vecin, nu o lecție +de curs) · filtre = 01_filtre_scaner_bull_bear_reversal_pp.md · mdsrt = 02_strategia_5_mdsrt.md · mbp = 03_strategia_6_mbp_mbappe.md · @@ -87,15 +89,19 @@ divergență de volum: mbt: 469-474; volum: 2169 · ga

    Fraza de decizie (hammer) — pattern: 99-124, 213 · mbp: 93-97 · mdsrt: 174, 322-324, 342. (MBT-10) — mbt: 5-11, 179-195, 347-350.

    Nivelul 2A — buy hammer

    -

    Filtrul de listă — scaner: 70-73 (volum mediu ≥ 500.000, preț 30-40 $) · -28_2025-05-27: 372-380, 400 (sub 10 $ nu se shortează) · earnings: 43-45 -(veto de eveniment).

    +

    Filtrul de listă — scaner: 70-73 (volum mediu ≥ 500.000) · +28_2025-05-27: 376 (preț peste 30-40 $), 372-380, 400 (sub 10 $ nu se +shortează) · earnings: 43-45 (veto de eveniment).

    Pasul A1 — pattern: 77-80 (fără downtrend nu e reversal), 79-88 (forma), 254-265 (hanging man), 1118-1120.

    -

    Pasul A2 — 26_2025-06-11: 701-703 („contează mult mai mult la un suport -important [...] decât în mijlocul range-ului"), 505 · pattern: 1115-1117 · -volum: 1024. Pragul de 1-2 % e împrumutat de la buy doji (byh: 188-190) și -marcat ca atare — materialul nu dă unul pentru hammer.

    +

    Pasul A2 — 26_2025-06-11: 702-703 (bullet în vocea sumarizatorului, la +finalul secțiunii despre divergența pe volum / OBV: „contează mult mai mult la +un suport important [...] decât în mijlocul range-ului" — nu e citat al +autorului și nu e spus despre locația hammer-ului), 505 · pattern: 1115-1117 · +volum: 1024. Pragul numeric: cursul dă 0,5 %, la buy doji și pe 60 de +minute; 1-2 % pentru daily e adaptarea mea din buydoji: 675-676 (care e +ea însăși o adaptare, nu o cifră de curs). Materialul nu dă niciun prag pentru +hammer.

    Pasul A3 — pattern: 99-124 (trigger valid, prea devreme, invalidat), 102-124 · 26_2025-06-11: 507-508 (mecanismul) · scaner: 30 (BHATM = 0), 63-73, 115-116 · earnings: 502-508 (hammer în gap: low 64.30, close 66.90, @@ -113,16 +119,19 @@ Regulile scrise ale oglinzii sunt simetria aplicată de mine.

    Nivelul 2B — MBT-10

    Pasul B1 — mbt: 9-11 (lista de confluențe), 43-60, 867-881 (cele 12 setup-uri în care apare), 933-937 („scanerul nu e listă de cumpărături"), -469-474 (divergența de volum), 449-450 (exemplul construit cu suport weekly, -SL 87.30), 451 (ținta 95.20 = 2.0R) · volum: 2169.

    +469-474 (divergența de volum — pe alt exemplu: gap up, picioarele 32.10 / +30.90, mbt: 615-625), 440-455 (exemplul folosit în pașii B1-B5: 60 de +minute, suport weekly 88.00 testat de trei ori, cu compresie, intrare +89.90, SL 87.30, plus motivul pentru care nu e pe daily), 451 (ținta +95.20 = 2.0R) · volum: 2169.

    Pasul B2 — mbt: 7-8, 70-71, 243-330 (intraday 55.30, close 52.90, a doua zi 51.50), 325-330, 929-930 · 04_2026-08-04: 298-333, 317 („dacă se închide, e mișto de intrat").

    Pasul B3 — mbt: 179-188 („prima componentă din MBT-10"), 183-195, 199-211, 213-218 · sinteza: 802-809 · DECIZII: 50, 124-127.

    Pasul B4 — mbt: 171-172 (SL 52.00 sub codiță), 449-450 (SL 87.30), -622-623 (SL 32.80 la gap up), 729-732 (SL 63.20 / 60.40, același risc în -bani), 16-17, 639-641, 736-740 (2-3 încercări după gap down), 978-984 (toate +622-623 (SL 32.80 la gap up), 729-732 (SL 63.20 / 60.40 „sub noul low", +același risc în bani), 16-17, 639-641, 736-740 (2-3 încercări după gap down), 978-984 (toate cifrele sunt ale sumarizatorului) · mm: 4-11, 28-34 · sinteza: 395-396 (exemplul de sizing 25 / 2.00 → 12 acțiuni) · 03_2026-08-11: 146-152, 173-178. Mărimea minimă de cont și riscul per trade la MBT-10: diff --git a/summaries/17_STRATEGII/fise/06_hammer_mbt10_surse.md b/summaries/17_STRATEGII/fise/06_hammer_mbt10_surse.md index eb13c77..2fabd60 100644 --- a/summaries/17_STRATEGII/fise/06_hammer_mbt10_surse.md +++ b/summaries/17_STRATEGII/fise/06_hammer_mbt10_surse.md @@ -24,6 +24,8 @@ construite) · (definiția hammer, trigger, SL/TP, hanging man) · `scaner` = [`11_construire_scanere_sf_byd_sld.md`](../../03_MODUL_2/11_construire_scanere_sf_byd_sld.md) · `byh` = [`13_strategia_3_byh.md`](../../03_MODUL_2/13_strategia_3_byh.md) · +`buydoji` = [`01_buy_doji.md`](../01_buy_doji.md) (capitolul vecin, nu o lecție +de curs) · `filtre` = [`01_filtre_scaner_bull_bear_reversal_pp.md`](../../04_MODUL_3/01_filtre_scaner_bull_bear_reversal_pp.md) · `mdsrt` = [`02_strategia_5_mdsrt.md`](../../05_MODUL_4/02_strategia_5_mdsrt.md) · `mbp` = [`03_strategia_6_mbp_mbappe.md`](../../05_MODUL_4/03_strategia_6_mbp_mbappe.md) · @@ -65,17 +67,21 @@ divergență de volum: `mbt`: 469-474; `volum`: 2169 · gap: `crimei`: 335; ## Nivelul 2A — buy hammer -**Filtrul de listă** — `scaner`: 70-73 (volum mediu ≥ 500.000, preț 30-40 $) · -`28_2025-05-27`: 372-380, 400 (sub 10 $ nu se shortează) · `earnings`: 43-45 -(veto de eveniment). +**Filtrul de listă** — `scaner`: 70-73 (volum mediu ≥ 500.000) · +`28_2025-05-27`: 376 (preț peste 30-40 $), 372-380, 400 (sub 10 $ nu se +shortează) · `earnings`: 43-45 (veto de eveniment). **Pasul A1** — `pattern`: 77-80 (fără downtrend nu e reversal), 79-88 (forma), 254-265 (hanging man), 1118-1120. -**Pasul A2** — `26_2025-06-11`: 701-703 („contează mult mai mult la un suport -important [...] decât în mijlocul range-ului"), 505 · `pattern`: 1115-1117 · -`volum`: 1024. Pragul de 1-2 % e împrumutat de la buy doji (`byh`: 188-190) și -marcat ca atare — materialul nu dă unul pentru hammer. +**Pasul A2** — `26_2025-06-11`: 702-703 (bullet în vocea sumarizatorului, la +finalul secțiunii despre divergența pe volum / OBV: „contează mult mai mult la +un suport important [...] decât în mijlocul range-ului" — nu e citat al +autorului și nu e spus despre locația hammer-ului), 505 · `pattern`: 1115-1117 · +`volum`: 1024. Pragul numeric: cursul dă **0,5 %**, la buy doji și pe 60 de +minute; **1-2 %** pentru daily e adaptarea mea din `buydoji`: 675-676 (care e +ea însăși o adaptare, nu o cifră de curs). Materialul nu dă niciun prag pentru +hammer. **Pasul A3** — `pattern`: 99-124 (trigger valid, prea devreme, invalidat), 102-124 · `26_2025-06-11`: 507-508 (mecanismul) · `scaner`: 30 (`BHATM = 0`), @@ -99,8 +105,11 @@ Regulile scrise ale oglinzii sunt simetria aplicată de mine. **Pasul B1** — `mbt`: 9-11 (lista de confluențe), 43-60, 867-881 (cele 12 setup-uri în care apare), 933-937 („scanerul nu e listă de cumpărături"), -469-474 (divergența de volum), 449-450 (exemplul construit cu suport weekly, -SL 87.30), 451 (ținta 95.20 = 2.0R) · `volum`: 2169. +469-474 (divergența de volum — pe alt exemplu: gap up, picioarele 32.10 / +30.90, `mbt`: 615-625), 440-455 (exemplul folosit în pașii B1-B5: **60 de +minute**, suport weekly **88.00** testat de trei ori, cu compresie, intrare +89.90, SL 87.30, plus motivul pentru care nu e pe daily), 451 (ținta +95.20 = 2.0R) · `volum`: 2169. **Pasul B2** — `mbt`: 7-8, 70-71, 243-330 (intraday 55.30, close 52.90, a doua zi 51.50), 325-330, 929-930 · `04_2026-08-04`: 298-333, 317 („dacă se închide, @@ -110,8 +119,8 @@ e mișto de intrat"). 199-211, 213-218 · `sinteza`: 802-809 · `DECIZII`: 50, 124-127. **Pasul B4** — `mbt`: 171-172 (SL 52.00 sub codiță), 449-450 (SL 87.30), -622-623 (SL 32.80 la gap up), 729-732 (SL 63.20 / 60.40, același risc în -bani), 16-17, 639-641, 736-740 (2-3 încercări după gap down), 978-984 (toate +622-623 (SL 32.80 la gap up), 729-732 (SL 63.20 / 60.40 „sub noul low", +același risc în bani), 16-17, 639-641, 736-740 (2-3 încercări după gap down), 978-984 (toate cifrele sunt ale sumarizatorului) · `mm`: 4-11, 28-34 · `sinteza`: 395-396 (exemplul de sizing 25 / 2.00 → 12 acțiuni) · `03_2026-08-11`: 146-152, 173-178. Mărimea minimă de cont și riscul per trade la MBT-10: