06_hammer_mbt10: capitol reconstruit dupa sablon

Doua proceduri complet separate, nu una amestecata, pentru ca se fac
altfel: buy hammer e pattern public, desenabil si exersabil retroactiv;
MBT-10 e cutie neagra din care se poate reface o singura conditie.
Nivelul 1 le pune fata in fata, ca cititorul sa stie din prima de ce nu
le poate trata la fel. Cate 5 pasi fiecare, oglinda pe short la hammer,
checklist dublu. Sursele in fise/06_hammer_mbt10_surse.md.

Zece diagrame noi: hammer-ul nu era definit vizual nicaieri, iar hanging
man era doar text — acum e aceeasi bara in doua contexte, cu assert ca e
identica. Cele 7 vechi si-au pierdut trimiterile fisier:linie din
legende; toate le aveau.

Doua serii partajate (bh_ansamblu si mbt_confluente expun serie()), deci
un trade nu poate avea doua variante. Oglinda pe short e trade-ul long
oglindit in jurul lui K=162.30, deci riscul ramane 1.30 in ambele.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01ThN7ixZrowca8aTGrK1MUJ
This commit is contained in:
Claude Agent
2026-09-20 13:05:41 +00:00
parent 668887670e
commit a7785740cc
45 changed files with 4605 additions and 2687 deletions

View File

@@ -115,8 +115,8 @@ if __name__ == "__main__":
m = re.search(r'viewBox="0 0 (\d+) (\d+)"', svg)
W, H = int(m.group(1)), int(m.group(2))
legenda = [
"Exemplu ilustrativ (XYZ) din lecția de pattern (01_MODUL_1/05_patternuri_candele.md:210-215);",
"prețurile sunt cele ale lecției, structura barelor dintre ele e construită.",
"Exemplu ilustrativ (XYZ) din lecția de pattern; prețurile sunt cele ale lecției,",
"structura barelor dintre ele e construită.",
]
extra = 16 * len(legenda) + 6
svg = svg.replace(f'viewBox="0 0 {W} {H}"', f'viewBox="0 0 {W} {H + extra}"')

View File

@@ -112,4 +112,4 @@
<text x="24" y="402.4" fill="#555">volum</text>
<text x="329.0" y="396.4" fill="#b06000" text-anchor="middle" style="font-weight:bold">hammer 63.30 / 62.10</text>
<text x="24" y="500.4" fill="#188a3e">bara 20: confirmare — close 63.35 peste high-ul hammer-ului 63.30 (intrare)</text>
<text x="24" y="533" fill="#555">Exemplu ilustrativ (XYZ) din lecția de pattern (01_MODUL_1/05_patternuri_candele.md:210-215);</text><text x="24" y="549" fill="#555">prețurile sunt cele ale lecției, structura barelor dintre ele e construită.</text></svg>
<text x="24" y="533" fill="#555">Exemplu ilustrativ (XYZ) din lecția de pattern; prețurile sunt cele ale lecției,</text><text x="24" y="549" fill="#555">structura barelor dintre ele e construită.</text></svg>

Before

Width:  |  Height:  |  Size: 9.3 KiB

After

Width:  |  Height:  |  Size: 9.3 KiB

View File

@@ -155,8 +155,8 @@ ch_a = Chart(
Mark(CONF_A, "acumulare", GREEN, "above", dy=-26)],
mas=[], scale=SCALE, gap=15, body_w=9, left=44, width=PW, vol_h=60,
vol_label="volum",
title="A+ — hammer la suport monthly, volum în acumulare",
caption="bara 13: 42.95 > high 42.90, pe volum peste medie.",
title="A+ — hammer la suport monthly",
caption="bara 13: 42.95 peste 42.90, volum bun.",
)
ch_n = Chart(
candles=cds_n,
@@ -166,8 +166,8 @@ ch_n = Chart(
Mark(CONF_N, "volum slab", RED, "above", dy=0)],
mas=[], scale=SCALE, gap=15, body_w=9, left=44, width=PW, vol_h=60,
vol_label="volum",
title="Mediocru — hammer în mijloc de range, fără nivel",
caption="bara 13: 45.15 > 45.10, dar pe volum slab.",
title="Mediocru — hammer fără nivel",
caption="bara 13: 45.15 peste 45.10, volum slab.",
)
# ============================================================ wrapper: două panouri alăturate
@@ -195,8 +195,8 @@ OFF_A = (PAD, PAD + TITLE_H)
OFF_N = (PAD + PW + PANEL_GAP, PAD + TITLE_H)
TOP_TITLE = "Buy hammer A+ vs. mediocru (două panouri, exemple construite)"
FOOTER1 = ("Reguli din curs: 26_2025-06-11.md:701-703 (locația la nivel), "
"05_patternuri_candele.md:77-80, 05_volum.md:2169.")
FOOTER1 = ("Reguli din curs: locația la un nivel major, scăderea dinainte și volumul; "
"trimiterile stau în fișa de surse.")
FOOTER2 = ("Nivelurile 42.00 / 42.50 și cifrele de preț sunt construite "
"(materialul nu dă prețuri pentru acest contrast).")
FOOTER = FOOTER1 + " " + FOOTER2
@@ -270,8 +270,8 @@ 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",
"A+ — hammer la suport monthly, volum în acumulare",
"Mediocru — hammer în mijloc de range, fără nivel"):
"A+ — hammer la suport monthly",
"Mediocru — hammer fără nivel"):
assert cheie in wrapper, f"lipsește din desen: {cheie!r}"
OUT.write_text(wrapper, encoding="utf-8")

View File

@@ -1,5 +1,5 @@
<svg viewBox="0 0 900 501" width="900" height="501" xmlns="http://www.w3.org/2000/svg" style="width:100%;height:auto;font:12px sans-serif"><text x="450" y="20" fill="#333" text-anchor="middle" style="font-weight:bold">Buy hammer A+ vs. mediocru (două panouri, exemple construite)</text><g transform="translate(8,38)">
<text x="24" y="48" fill="#333" style="font-weight:bold">A+ — hammer la suport monthly, volum în acumulare</text>
<text x="24" y="48" fill="#333" style="font-weight:bold">A+ — hammer la suport monthly</text>
<line x1="24" y1="286.1" x2="416" y2="286.1" stroke="#188a3e" stroke-width="1.5" stroke-dasharray="4 3"/>
<text x="30" y="280.1" fill="#188a3e">suport monthly 42.00</text>
<line x1="44.0" y1="56.0" x2="44.0" y2="85.9" stroke="#1a1a1a" stroke-width="1.2"/>
@@ -66,9 +66,9 @@
<text x="24" y="308.7" fill="#555">volum</text>
<text x="224.0" y="302.7" fill="#b06000" text-anchor="middle" style="font-weight:bold">hammer la nivel (low 41.90)</text>
<text x="239.0" y="220.2" fill="#188a3e" text-anchor="middle" style="font-weight:bold">acumulare</text>
<text x="24" y="405" fill="#555">bara 13: 42.95 > high 42.90, pe volum peste medie.</text>
<text x="24" y="405" fill="#555">bara 13: 42.95 peste 42.90, volum bun.</text>
</g><g transform="translate(462,38)">
<text x="24" y="48" fill="#333" style="font-weight:bold">Mediocru — hammer în mijloc de range, fără nivel</text>
<text x="24" y="48" fill="#333" style="font-weight:bold">Mediocru — hammer fără nivel</text>
<line x1="24" y1="153.5" x2="416" y2="153.5" stroke="#777" stroke-width="1.5" stroke-dasharray="4 3"/>
<text x="30" y="147.5" fill="#777">fără nivel apropiat (suport 42.50 la −3,6 %)</text>
<line x1="44.0" y1="56.0" x2="44.0" y2="80.7" stroke="#1a1a1a" stroke-width="1.2"/>
@@ -135,5 +135,5 @@
<text x="24" y="173.5" fill="#555">volum</text>
<text x="224.0" y="131.9" fill="#b06000" text-anchor="middle" style="font-weight:bold">hammer în mijloc de range</text>
<text x="239.0" y="69.4" fill="#c00" text-anchor="middle" style="font-weight:bold">volum slab</text>
<text x="24" y="270" fill="#555">bara 13: 45.15 > 45.10, dar pe volum slab.</text>
</g><text x="450" y="479" fill="#555" text-anchor="middle" style="font-size:10px">Reguli din curs: 26_2025-06-11.md:701-703 (locația la nivel), 05_patternuri_candele.md:77-80, 05_volum.md:2169.</text><text x="450" y="493" fill="#555" text-anchor="middle" style="font-size:10px">Nivelurile 42.00 / 42.50 și cifrele de preț sunt construite (materialul nu dă prețuri pentru acest contrast).</text></svg>
<text x="24" y="270" fill="#555">bara 13: 45.15 peste 45.10, volum slab.</text>
</g><text x="450" y="479" fill="#555" text-anchor="middle" style="font-size:10px">Reguli din curs: locația la un nivel major, scăderea dinainte și volumul; trimiterile stau în fișa de surse.</text><text x="450" y="493" fill="#555" text-anchor="middle" style="font-size:10px">Nivelurile 42.00 / 42.50 și cifrele de preț sunt construite (materialul nu dă prețuri pentru acest contrast).</text></svg>

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 11 KiB

View File

@@ -22,7 +22,7 @@ PRAG_SUS = L + 2 / 3 * RNG # 62.90 — corpul trebuie să stea peste el
# (nume, o, h, l, c, verdict, rânduri de etichetă sub candelă)
CANDLES = [
("A", 63.05, H, L, 63.30, "DA", ["DA: corp 0.25,", "fitil jos 0.95 = 3,8x corpul"]),
("B", 62.90, H, L, 63.30, "DA", ["DA, la limită: corp 0.40,", "fitil jos 0.80 = exact 2x"]),
("B", 62.90, H, L, 63.30, "DA", ["DA, la limită:", "corp 0.40, fitil 0.80"]),
("C", 62.60, H, L, 63.30, "NU", ["NU: corp 0.70,", "fitil jos 0.50 = 0,7x corpul"]),
("D", 62.25, H, L, 62.45, "NU", ["NU: corpul e jos, fitilul", "lung e sus — alt pattern"]),
]

View File

@@ -16,8 +16,8 @@
<text x="350.0" y="566.0" fill="#188a3e" text-anchor="middle">fitil jos 0.95 = 3,8x corpul</text>
<line x1="490" y1="210.0" x2="490" y2="522.0" stroke="#1a1a1a" stroke-width="1.4"/>
<rect x="477.0" y="210.0" width="26" height="104.0" fill="#188a3e"/>
<text x="490.0" y="550.0" fill="#188a3e" text-anchor="middle" style="font-weight:bold;font-size:12px">DA, la limită: corp 0.40,</text>
<text x="490.0" y="566.0" fill="#188a3e" text-anchor="middle">fitil jos 0.80 = exact 2x</text>
<text x="490.0" y="550.0" fill="#188a3e" text-anchor="middle" style="font-weight:bold;font-size:12px">DA, la limită:</text>
<text x="490.0" y="566.0" fill="#188a3e" text-anchor="middle">corp 0.40, fitil 0.80</text>
<line x1="690" y1="210.0" x2="690" y2="522.0" stroke="#1a1a1a" stroke-width="1.4"/>
<rect x="677.0" y="210.0" width="26" height="182.0" fill="#188a3e"/>
<text x="690.0" y="550.0" fill="#c00" text-anchor="middle" style="font-weight:bold;font-size:12px">NU: corp 0.70,</text>

Before

Width:  |  Height:  |  Size: 5.3 KiB

After

Width:  |  Height:  |  Size: 5.3 KiB

View File

@@ -121,8 +121,8 @@ extra_svg = (f'<polyline points="{" ".join(pts)}" fill="none" stroke="{ORANGE}"
linii = [
("Trail-ul urcă doar sub un swing low nou — 63.05, apoi 65.10, apoi 66.00 — și nu coboară "
"niciodată; ieși la prima închidere sub el.", "#333"),
("Lecția de pattern nu dă o țintă proprie — 1:1 vine de la strategia MBP, iar 2R e ținta "
"exemplului din lecție. Continuarea barelor e construită.", GREY),
("Lecția de pattern nu dă o țintă proprie — 1:1 vine de la strategia MBP, iar 2R e ținta", GREY),
("exemplului din lecție. Continuarea barelor de după 33 e construită.", GREY),
]
add = 16 * len(linii) + 10
svg = svg.replace(f'viewBox="0 0 {W} {H}"', f'viewBox="0 0 {W} {H + add}"')

View File

@@ -1,4 +1,4 @@
<svg viewBox="0 0 785 434" xmlns="http://www.w3.org/2000/svg" style="width:100%;height:auto;font:12px sans-serif">
<svg viewBox="0 0 785 450" xmlns="http://www.w3.org/2000/svg" style="width:100%;height:auto;font:12px sans-serif">
<text x="24" y="72" fill="#333" style="font-weight:bold">Buy hammer — ieșirea (daily, ticker ilustrativ XYZ; barele de după 33 sunt construite)</text>
<rect x="348.4" y="114.5" width="83.0" height="58.5" fill="#b06000" fill-opacity="0.08" stroke="#b06000" stroke-width="1"/>
<text x="348.4" y="109.5" fill="#b06000" style="font-weight:bold">pullback</text>
@@ -69,4 +69,4 @@
<polygon points="517.9,145.2 513.8,153.2 509.1,146.7" fill="#c00"/>
<text x="267.9" y="343.0" fill="#c00" text-anchor="middle" style="font-weight:bold">a doua jumătate iese la 65.90 (+1,96R):</text>
<text x="267.9" y="357.0" fill="#c00" text-anchor="middle" style="font-weight:bold">prima închidere sub linia de trail</text>
<polyline points="154.0,234.7 330.0,234.7 330.0,165.0 330.0,165.0 410.0,165.0 410.0,134.4 410.0,134.4 438.0,134.4" fill="none" stroke="#b06000" stroke-width="2"/><text x="158.0" y="250.7" fill="#b06000" style="font-weight:bold">linia de trail</text><text x="24" y="402" fill="#333">Trail-ul urcă doar sub un swing low nou — 63.05, apoi 65.10, apoi 66.00 — și nu coboară niciodată; ieși la prima închidere sub el.</text><text x="24" y="418" fill="#555">Lecția de pattern nu dă o țintă proprie — 1:1 vine de la strategia MBP, iar 2R e ținta exemplului din lecție. Continuarea barelor e construită.</text></svg>
<polyline points="154.0,234.7 330.0,234.7 330.0,165.0 330.0,165.0 410.0,165.0 410.0,134.4 410.0,134.4 438.0,134.4" fill="none" stroke="#b06000" stroke-width="2"/><text x="158.0" y="250.7" fill="#b06000" style="font-weight:bold">linia de trail</text><text x="24" y="402" fill="#333">Trail-ul urcă doar sub un swing low nou — 63.05, apoi 65.10, apoi 66.00 — și nu coboară niciodată; ieși la prima închidere sub el.</text><text x="24" y="418" fill="#555">Lecția de pattern nu dă o țintă proprie — 1:1 vine de la strategia MBP, iar 2R e ținta</text><text x="24" y="434" fill="#555">exemplului din lecție. Continuarea barelor de după 33 e construită.</text></svg>

Before

Width:  |  Height:  |  Size: 6.6 KiB

After

Width:  |  Height:  |  Size: 6.6 KiB

View File

@@ -136,7 +136,7 @@ cds[0].note = ("bara 23 = hammer: o 80.80, h 80.90, l 79.60, c 80.90 — "
cds[1].note = ("bara 24 = confirmare: close 81.30 — close peste high-ul "
"hammer-ului 80.90 = intrare 81.30 (construit)")
cds[2].note = ("Procentul (+20 % în jumătate de lună) și contextul (suport "
"monthly) sunt ale cursului (18_2025-09-23.md:721-726);")
"monthly) sunt ale cursului;")
svg = ch.render()
assert "\n\n" not in svg and "<svg" in svg, "SVG invalid (linie goală?)"

View File

@@ -128,6 +128,6 @@
<text x="599.0" y="46.0" fill="#188a3e" text-anchor="middle" style="font-weight:bold">+20 % (cifra cursului): 97.56 / 81.30</text>
<text x="24" y="320.1" fill="#c00">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</text>
<text x="24" y="337.1" fill="#c00">bara 24 = confirmare: close 81.30 — close peste high-ul hammer-ului 80.90 = intrare 81.30 (construit)</text>
<text x="24" y="354.1" fill="#188a3e">Procentul (+20 % în jumătate de lună) și contextul (suport monthly) sunt ale cursului (18_2025-09-23.md:721-726);</text>
<text x="24" y="354.1" fill="#188a3e">Procentul (+20 % în jumătate de lună) și contextul (suport monthly) sunt ale cursului;</text>
<text x="24" y="379" fill="#555">nivelurile de preț sunt construite de sumarizator.</text>
</svg>

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 11 KiB

View File

@@ -90,7 +90,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'<svg viewBox="0 0 {W} {y_bot + 66:.0f}" xmlns="http://www.w3.org/2000/svg" '
f'<svg viewBox="0 0 {W} {y_bot + 80:.0f}" xmlns="http://www.w3.org/2000/svg" '
f'style="width:100%;height:auto;font:12px sans-serif">',
'<text x="24" y="22" fill="#333" style="font-weight:bold">Hammer la un nivel vs. hammer '
'în mijlocul range-ului — daily, exemplu construit</text>',
@@ -110,10 +110,11 @@ parts = [
*level(PX[1], SUP_NU, "baza range-ului 58.00", BLUE, below=True),
body_da, body_nu,
f'<text x="24" y="{y_bot + 34:.0f}" fill="{GREY}">Completare proprie: materialul cere '
'„un nivel major (weekly / monthly / quarterly), nu mijlocul range-ului", dar nu dă un prag '
'numeric.</text>',
f'<text x="24" y="{y_bot + 52:.0f}" fill="{GREY}">Pragul de 1-2 % e împrumutat de la buy '
f'doji, ca să ai ce măsura: aici {PCT_DA} % în stânga, {PCT_NU} % în dreapta.</text>',
'„un nivel major (weekly / monthly / quarterly), nu mijlocul</text>',
f'<text x="24" y="{y_bot + 50:.0f}" fill="{GREY}">range-ului", dar nu dă un prag numeric. '
f'Pragul de 1-2 % e împrumutat de la buy doji, ca să ai ce</text>',
f'<text x="24" y="{y_bot + 66:.0f}" fill="{GREY}">măsura: aici {PCT_DA} % în stânga, '
f'{PCT_NU} % în dreapta.</text>',
"</svg>",
]
svg = "\n ".join(parts).replace("\n </svg>", "\n</svg>")
@@ -121,4 +122,4 @@ assert "\n\n" not in svg, "linie goală în SVG"
for m in re.finditer(r'<text x="([\d.]+)"[^>]*>(.*?)</text>', 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 + 66:.0f}); DA {d_da}% NU {d_nu}% (rezistență {d_rez}%)")
print(f"scris {OUT.name} ({W}x{y_bot + 80:.0f}); DA {d_da}% NU {d_nu}% (rezistență {d_rez}%)")

View File

@@ -1,4 +1,4 @@
<svg viewBox="0 0 760 436" xmlns="http://www.w3.org/2000/svg" style="width:100%;height:auto;font:12px sans-serif">
<svg viewBox="0 0 760 450" xmlns="http://www.w3.org/2000/svg" style="width:100%;height:auto;font:12px sans-serif">
<text x="24" y="22" fill="#333" style="font-weight:bold">Hammer la un nivel vs. hammer în mijlocul range-ului — daily, exemplu construit</text>
<text x="24" y="48" fill="#188a3e" style="font-weight:bold">DA — hammer pe suportul monthly</text>
<text x="402" y="48" fill="#c00" style="font-weight:bold">NU — hammer în mijlocul range-ului</text>
@@ -74,6 +74,7 @@
<text x="625.0" y="304.3" fill="#c00" text-anchor="middle" style="font-weight:bold">aceeași formă, dar nimic sub ea:</text>
<text x="625.0" y="318.3" fill="#c00" text-anchor="middle" style="font-weight:bold">fitilul n-a fost oprit de un nivel,</text>
<text x="625.0" y="332.3" fill="#c00" text-anchor="middle" style="font-weight:bold">ci s-a oprit singur</text>
<text x="24" y="404" fill="#555">Completare proprie: materialul cere „un nivel major (weekly / monthly / quarterly), nu mijlocul range-ului", dar nu dă un prag numeric.</text>
<text x="24" y="422" fill="#555">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.</text>
<text x="24" y="404" fill="#555">Completare proprie: materialul cere „un nivel major (weekly / monthly / quarterly), nu mijlocul</text>
<text x="24" y="420" fill="#555">range-ului", dar nu dă un prag numeric. Pragul de 1-2 % e împrumutat de la buy doji, ca să ai ce</text>
<text x="24" y="436" fill="#555">măsura: aici 0,16 % în stânga, 7,07 % în dreapta.</text>
</svg>

Before

Width:  |  Height:  |  Size: 7.0 KiB

After

Width:  |  Height:  |  Size: 7.1 KiB

View File

@@ -50,7 +50,7 @@ ch = Chart(
Arrow(HAM, "low-ul hammer-ului: 62.10\nsub el, cererea care a făcut\nfitilul nu mai există",
where="below", price=hammer.l, color=BLUE, dx=-176, dy=26),
Arrow(CONF, "riscul e distanța intrare - SL:\n63.35 - 62.05 = 1.30 $ pe acțiune",
where="above", color=GREY, dx=186, dy=-4),
where="above", color=GREY, dx=250, dy=2),
],
scale=44.0, gap=26, body_w=13, left=64, width=680, vol_h=0,
title="Buy hammer — stopul și mărimea poziției (daily, ticker ilustrativ XYZ)",
@@ -72,8 +72,8 @@ linii = [
("Mărimea poziției, cu cifrele lecției: 2 % dintr-un cont de 10.000 $ = 200 $ de risc.", "#333"),
(f"200 $ / 1.30 $ pe acțiune = {200 / RISC:.1f} → {ACTIUNI} de acțiuni (rotunjit în jos); "
f"pierderea maximă {ACTIUNI * RISC:.2f} $.", "#333"),
("Cei 5 cenți de sub low sunt marja folosită în tot capitolul pe exemplele construite de "
"mine; unde cifra vine din material, e spusă acolo.", GREY),
("Cei 5 cenți de sub low sunt marja folosită în tot capitolul pe exemplele construite de mine;", GREY),
("unde cifra vine din material, e spusă acolo.", GREY),
]
extra = 16 * len(linii) + 10
svg = svg.replace(f'viewBox="0 0 {W} {H}"', f'viewBox="0 0 {W} {H + extra}"')

View File

@@ -1,47 +1,47 @@
<svg viewBox="0 0 754 447" xmlns="http://www.w3.org/2000/svg" style="width:100%;height:auto;font:12px sans-serif">
<text x="24" y="70" fill="#333" style="font-weight:bold">Buy hammer — stopul și mărimea poziției (daily, ticker ilustrativ XYZ)</text>
<rect x="257.3" y="169.0" width="49.0" height="77.6" fill="#b06000" fill-opacity="0.08" stroke="#b06000" stroke-width="1"/>
<text x="257.3" y="95.4" fill="#b06000" style="font-weight:bold">cele două bare care dau stopul</text>
<line x1="24" y1="183.6" x2="740" y2="183.6" stroke="#188a3e" stroke-width="1.5" stroke-dasharray="4 3"/>
<text x="30" y="177.6" fill="#188a3e">intrare 63.35 (close-ul confirmării)</text>
<line x1="24" y1="240.8" x2="740" y2="240.8" stroke="#c00" stroke-width="1.5" stroke-dasharray="4 3"/>
<text x="30" y="234.8" fill="#c00">SL 62.05</text>
<line x1="138.8" y1="91.2" x2="138.8" y2="128.6" stroke="#1a1a1a" stroke-width="1.2"/>
<rect x="132.3" y="102.2" width="13" height="13.2" fill="#188a3e"/>
<line x1="164.8" y1="91.2" x2="164.8" y2="163.8" stroke="#1a1a1a" stroke-width="1.2"/>
<rect x="158.3" y="102.2" width="13" height="48.4" fill="#c00"/>
<line x1="190.8" y1="139.6" x2="190.8" y2="194.6" stroke="#1a1a1a" stroke-width="1.2"/>
<rect x="184.3" y="150.6" width="13" height="30.8" fill="#c00"/>
<line x1="216.8" y1="157.2" x2="216.8" y2="194.6" stroke="#1a1a1a" stroke-width="1.2"/>
<rect x="210.3" y="168.2" width="13" height="13.2" fill="#188a3e"/>
<line x1="242.8" y1="157.2" x2="242.8" y2="210.0" stroke="#1a1a1a" stroke-width="1.2"/>
<rect x="236.3" y="168.2" width="13" height="28.6" fill="#c00"/>
<line x1="268.8" y1="185.8" x2="268.8" y2="238.6" stroke="#1a1a1a" stroke-width="1.2"/>
<rect x="262.3" y="185.8" width="13" height="11.0" fill="#188a3e"/>
<line x1="294.8" y1="177.0" x2="294.8" y2="192.4" stroke="#1a1a1a" stroke-width="1.2"/>
<rect x="288.3" y="183.6" width="13" height="2.2" fill="#188a3e"/>
<line x1="320.8" y1="152.8" x2="320.8" y2="196.8" stroke="#1a1a1a" stroke-width="1.2"/>
<rect x="314.3" y="163.8" width="13" height="19.8" fill="#188a3e"/>
<line x1="346.8" y1="135.2" x2="346.8" y2="177.0" stroke="#1a1a1a" stroke-width="1.2"/>
<rect x="340.3" y="146.2" width="13" height="17.6" fill="#188a3e"/>
<line x1="372.8" y1="117.6" x2="372.8" y2="159.4" stroke="#1a1a1a" stroke-width="1.2"/>
<rect x="366.3" y="128.6" width="13" height="17.6" fill="#188a3e"/>
<line x1="398.8" y1="117.6" x2="398.8" y2="150.6" stroke="#1a1a1a" stroke-width="1.2"/>
<rect x="392.3" y="128.6" width="13" height="8.8" fill="#c00"/>
<line x1="424.8" y1="104.4" x2="424.8" y2="150.6" stroke="#1a1a1a" stroke-width="1.2"/>
<rect x="418.3" y="115.4" width="13" height="22.0" fill="#188a3e"/>
<line x1="450.8" y1="91.2" x2="450.8" y2="128.6" stroke="#1a1a1a" stroke-width="1.2"/>
<rect x="444.3" y="102.2" width="13" height="13.2" fill="#188a3e"/>
<line x1="476.8" y1="78.0" x2="476.8" y2="115.4" stroke="#1a1a1a" stroke-width="1.2"/>
<rect x="470.3" y="89.0" width="13" height="13.2" fill="#188a3e"/>
<line x1="92.8" y1="294.6" x2="261.1" y2="244.9" stroke="#1a5fb4" stroke-width="1.8"/>
<polygon points="268.8,242.6 262.3,248.7 260.0,241.0" fill="#1a5fb4"/>
<text x="92.8" y="308.6" fill="#1a5fb4" text-anchor="middle" style="font-weight:bold">low-ul hammer-ului: 62.10</text>
<text x="92.8" y="322.6" fill="#1a5fb4" text-anchor="middle" style="font-weight:bold">sub el, cererea care a făcut</text>
<text x="92.8" y="336.6" fill="#1a5fb4" text-anchor="middle" style="font-weight:bold">fitilul nu mai există</text>
<line x1="480.8" y1="66.0" x2="301.7" y2="169.0" stroke="#555" stroke-width="1.8"/>
<polygon points="294.8,173.0 299.7,165.5 303.7,172.5" fill="#555"/>
<text x="480.8" y="47.0" fill="#555" text-anchor="middle" style="font-weight:bold">riscul e distanța intrare - SL:</text>
<text x="480.8" y="61.0" fill="#555" text-anchor="middle" style="font-weight:bold">63.35 - 62.05 = 1.30 $ pe acțiune</text>
<text x="24" y="367.6" fill="#188a3e">bara 20: confirmare — close 63.35 peste high-ul hammer-ului 63.30 (intrare)</text>
<polyline points="370.0,183.6 376.0,183.6 376.0,240.8 370.0,240.8" fill="none" stroke="#c00" stroke-width="1.5"/><text x="382.0" y="216.2" fill="#c00" style="font-weight:bold">1R = 1.30 $</text><text x="24" y="399" fill="#333">Mărimea poziției, cu cifrele lecției: 2 % dintr-un cont de 10.000 $ = 200 $ de risc.</text><text x="24" y="415" fill="#333">200 $ / 1.30 $ pe acțiune = 153.8 → 153 de acțiuni (rotunjit în jos); pierderea maximă 198.90 $.</text><text x="24" y="431" fill="#555">Cei 5 cenți de sub low sunt marja folosită în tot capitolul pe exemplele construite de mine; unde cifra vine din material, e spusă acolo.</text></svg>
<svg viewBox="0 0 754 457" xmlns="http://www.w3.org/2000/svg" style="width:100%;height:auto;font:12px sans-serif">
<text x="24" y="64" fill="#333" style="font-weight:bold">Buy hammer — stopul și mărimea poziției (daily, ticker ilustrativ XYZ)</text>
<rect x="257.3" y="163.0" width="49.0" height="77.6" fill="#b06000" fill-opacity="0.08" stroke="#b06000" stroke-width="1"/>
<text x="257.3" y="89.4" fill="#b06000" style="font-weight:bold">cele două bare care dau stopul</text>
<line x1="24" y1="177.6" x2="740" y2="177.6" stroke="#188a3e" stroke-width="1.5" stroke-dasharray="4 3"/>
<text x="30" y="171.6" fill="#188a3e">intrare 63.35 (close-ul confirmării)</text>
<line x1="24" y1="234.8" x2="740" y2="234.8" stroke="#c00" stroke-width="1.5" stroke-dasharray="4 3"/>
<text x="30" y="228.8" fill="#c00">SL 62.05</text>
<line x1="138.8" y1="85.2" x2="138.8" y2="122.6" stroke="#1a1a1a" stroke-width="1.2"/>
<rect x="132.3" y="96.2" width="13" height="13.2" fill="#188a3e"/>
<line x1="164.8" y1="85.2" x2="164.8" y2="157.8" stroke="#1a1a1a" stroke-width="1.2"/>
<rect x="158.3" y="96.2" width="13" height="48.4" fill="#c00"/>
<line x1="190.8" y1="133.6" x2="190.8" y2="188.6" stroke="#1a1a1a" stroke-width="1.2"/>
<rect x="184.3" y="144.6" width="13" height="30.8" fill="#c00"/>
<line x1="216.8" y1="151.2" x2="216.8" y2="188.6" stroke="#1a1a1a" stroke-width="1.2"/>
<rect x="210.3" y="162.2" width="13" height="13.2" fill="#188a3e"/>
<line x1="242.8" y1="151.2" x2="242.8" y2="204.0" stroke="#1a1a1a" stroke-width="1.2"/>
<rect x="236.3" y="162.2" width="13" height="28.6" fill="#c00"/>
<line x1="268.8" y1="179.8" x2="268.8" y2="232.6" stroke="#1a1a1a" stroke-width="1.2"/>
<rect x="262.3" y="179.8" width="13" height="11.0" fill="#188a3e"/>
<line x1="294.8" y1="171.0" x2="294.8" y2="186.4" stroke="#1a1a1a" stroke-width="1.2"/>
<rect x="288.3" y="177.6" width="13" height="2.2" fill="#188a3e"/>
<line x1="320.8" y1="146.8" x2="320.8" y2="190.8" stroke="#1a1a1a" stroke-width="1.2"/>
<rect x="314.3" y="157.8" width="13" height="19.8" fill="#188a3e"/>
<line x1="346.8" y1="129.2" x2="346.8" y2="171.0" stroke="#1a1a1a" stroke-width="1.2"/>
<rect x="340.3" y="140.2" width="13" height="17.6" fill="#188a3e"/>
<line x1="372.8" y1="111.6" x2="372.8" y2="153.4" stroke="#1a1a1a" stroke-width="1.2"/>
<rect x="366.3" y="122.6" width="13" height="17.6" fill="#188a3e"/>
<line x1="398.8" y1="111.6" x2="398.8" y2="144.6" stroke="#1a1a1a" stroke-width="1.2"/>
<rect x="392.3" y="122.6" width="13" height="8.8" fill="#c00"/>
<line x1="424.8" y1="98.4" x2="424.8" y2="144.6" stroke="#1a1a1a" stroke-width="1.2"/>
<rect x="418.3" y="109.4" width="13" height="22.0" fill="#188a3e"/>
<line x1="450.8" y1="85.2" x2="450.8" y2="122.6" stroke="#1a1a1a" stroke-width="1.2"/>
<rect x="444.3" y="96.2" width="13" height="13.2" fill="#188a3e"/>
<line x1="476.8" y1="72.0" x2="476.8" y2="109.4" stroke="#1a1a1a" stroke-width="1.2"/>
<rect x="470.3" y="83.0" width="13" height="13.2" fill="#188a3e"/>
<line x1="92.8" y1="288.6" x2="261.1" y2="238.9" stroke="#1a5fb4" stroke-width="1.8"/>
<polygon points="268.8,236.6 262.3,242.7 260.0,235.0" fill="#1a5fb4"/>
<text x="92.8" y="302.6" fill="#1a5fb4" text-anchor="middle" style="font-weight:bold">low-ul hammer-ului: 62.10</text>
<text x="92.8" y="316.6" fill="#1a5fb4" text-anchor="middle" style="font-weight:bold">sub el, cererea care a făcut</text>
<text x="92.8" y="330.6" fill="#1a5fb4" text-anchor="middle" style="font-weight:bold">fitilul nu mai există</text>
<line x1="544.8" y1="66.0" x2="302.2" y2="164.0" stroke="#555" stroke-width="1.8"/>
<polygon points="294.8,167.0 300.7,160.3 303.7,167.7" fill="#555"/>
<text x="544.8" y="47.0" fill="#555" text-anchor="middle" style="font-weight:bold">riscul e distanța intrare - SL:</text>
<text x="544.8" y="61.0" fill="#555" text-anchor="middle" style="font-weight:bold">63.35 - 62.05 = 1.30 $ pe acțiune</text>
<text x="24" y="361.6" fill="#188a3e">bara 20: confirmare — close 63.35 peste high-ul hammer-ului 63.30 (intrare)</text>
<polyline points="370.0,177.6 376.0,177.6 376.0,234.8 370.0,234.8" fill="none" stroke="#c00" stroke-width="1.5"/><text x="382.0" y="210.2" fill="#c00" style="font-weight:bold">1R = 1.30 $</text><text x="24" y="393" fill="#333">Mărimea poziției, cu cifrele lecției: 2 % dintr-un cont de 10.000 $ = 200 $ de risc.</text><text x="24" y="409" fill="#333">200 $ / 1.30 $ pe acțiune = 153.8 → 153 de acțiuni (rotunjit în jos); pierderea maximă 198.90 $.</text><text x="24" y="425" fill="#555">Cei 5 cenți de sub low sunt marja folosită în tot capitolul pe exemplele construite de mine;</text><text x="24" y="441" fill="#555">unde cifra vine din material, e spusă acolo.</text></svg>

Before

Width:  |  Height:  |  Size: 4.7 KiB

After

Width:  |  Height:  |  Size: 4.7 KiB

View File

@@ -50,7 +50,7 @@ assert R[10].c < R[9].l, "dreapta: bara 10 nu închide sub low-ul candelei"
# --- desen ------------------------------------------------------------------
W, PW = 780, 358
PX = [24, 24 + PW + 20]
SCALE, TOP, SHIFT = 26.0, 104, 34
SCALE, TOP, SHIFT = 26.0, 104, 60
panels, inalt = [], []
for px, cds, (zt, zc), arr in (
@@ -79,13 +79,13 @@ H = int(max(inalt)) + SHIFT + 46
parts = [
f'<svg viewBox="0 0 {W} {H}" xmlns="http://www.w3.org/2000/svg" '
f'style="width:100%;height:auto;font:12px sans-serif">',
'<text x="24" y="24" fill="#333" style="font-weight:bold">'
'<text x="24" y="20" fill="#333" style="font-weight:bold">'
'Aceeași candelă, două contexte — daily, exemplu construit</text>',
f'<text x="{PX[0]}" y="48" fill="{GREEN}" style="font-weight:bold">'
f'<text x="{PX[0]}" y="42" fill="{GREEN}" style="font-weight:bold">'
'DA — după o scădere: hammer</text>',
f'<text x="{PX[1]}" y="48" fill="{RED}" style="font-weight:bold">'
f'<text x="{PX[1]}" y="42" fill="{RED}" style="font-weight:bold">'
'NU — după o urcare: hanging man</text>',
f'<line x1="{PX[1] - 10}" y1="40" x2="{PX[1] - 10}" y2="{H - 46}" stroke="#ccc"/>',
f'<line x1="{PX[1] - 10}" y1="48" x2="{PX[1] - 10}" y2="{H - 46}" stroke="#ccc"/>',
*panels,
f'<text x="24" y="{H - 26}" fill="{GREY}">Forma nu spune nimic singură: hammer-ul '
'e pattern de întoarcere doar după o scădere. Aceeași bară după o urcare</text>',

View File

@@ -1,9 +1,9 @@
<svg viewBox="0 0 780 509" xmlns="http://www.w3.org/2000/svg" style="width:100%;height:auto;font:12px sans-serif">
<text x="24" y="24" fill="#333" style="font-weight:bold">Aceeași candelă, două contexte — daily, exemplu construit</text>
<text x="24" y="48" fill="#188a3e" style="font-weight:bold">DA — după o scădere: hammer</text>
<text x="402" y="48" fill="#c00" style="font-weight:bold">NU — după o urcare: hanging man</text>
<line x1="392" y1="40" x2="392" y2="463" stroke="#ccc"/>
<g transform="translate(0,34)"><rect x="59.0" y="96.0" width="214.0" height="162.9" fill="#c00" fill-opacity="0.08" stroke="#c00" stroke-width="1"/>
<svg viewBox="0 0 780 535" xmlns="http://www.w3.org/2000/svg" style="width:100%;height:auto;font:12px sans-serif">
<text x="24" y="20" fill="#333" style="font-weight:bold">Aceeași candelă, două contexte — daily, exemplu construit</text>
<text x="24" y="42" fill="#188a3e" style="font-weight:bold">DA — după o scădere: hammer</text>
<text x="402" y="42" fill="#c00" style="font-weight:bold">NU — după o urcare: hanging man</text>
<line x1="392" y1="48" x2="392" y2="489" stroke="#ccc"/>
<g transform="translate(0,60)"><rect x="59.0" y="96.0" width="214.0" height="162.9" fill="#c00" fill-opacity="0.08" stroke="#c00" stroke-width="1"/>
<text x="59.0" y="91.0" fill="#c00" style="font-weight:bold">scădere de 9 candele</text>
<line x1="70.0" y1="104.0" x2="70.0" y2="122.2" stroke="#1a1a1a" stroke-width="1.2"/>
<rect x="64.0" y="107.9" width="12" height="10.4" fill="#c00"/>
@@ -37,7 +37,7 @@
<polygon points="310.0,231.3 302.3,226.7 309.0,222.4" fill="#188a3e"/>
<text x="214.0" y="63.4" fill="#188a3e" text-anchor="middle" style="font-weight:bold">close 63.35, peste high-ul hammer-ului:</text>
<text x="214.0" y="77.4" fill="#188a3e" text-anchor="middle" style="font-weight:bold">semnalul e valid, aici intri</text></g>
<g transform="translate(0,34)"><rect x="437.0" y="102.5" width="214.0" height="165.5" fill="#188a3e" fill-opacity="0.08" stroke="#188a3e" stroke-width="1"/>
<g transform="translate(0,60)"><rect x="437.0" y="102.5" width="214.0" height="165.5" fill="#188a3e" fill-opacity="0.08" stroke="#188a3e" stroke-width="1"/>
<text x="437.0" y="97.5" fill="#188a3e" style="font-weight:bold">urcare de 9 candele</text>
<line x1="448.0" y1="241.8" x2="448.0" y2="260.0" stroke="#1a1a1a" stroke-width="1.2"/>
<rect x="442.0" y="245.7" width="12" height="10.4" fill="#188a3e"/>
@@ -71,6 +71,6 @@
<polygon points="688.0,100.0 679.1,99.1 683.4,92.4" fill="#c00"/>
<text x="618.0" y="37.0" fill="#c00" text-anchor="middle" style="font-weight:bold">close 62.00, sub low-ul ei: scăderea</text>
<text x="618.0" y="51.0" fill="#c00" text-anchor="middle" style="font-weight:bold">începe — nu era semnal de cumpărare</text></g>
<text x="24" y="483" fill="#555">Forma nu spune nimic singură: hammer-ul e pattern de întoarcere doar după o scădere. Aceeași bară după o urcare</text>
<text x="24" y="499" fill="#555">e hanging man și are sensul opus. Prețurile sunt construite; regula de context e a cursului.</text>
<text x="24" y="509" fill="#555">Forma nu spune nimic singură: hammer-ul e pattern de întoarcere doar după o scădere. Aceeași bară după o urcare</text>
<text x="24" y="525" fill="#555">e hanging man și are sensul opus. Prețurile sunt construite; regula de context e a cursului.</text>
</svg>

Before

Width:  |  Height:  |  Size: 6.7 KiB

After

Width:  |  Height:  |  Size: 6.7 KiB

View File

@@ -45,7 +45,7 @@ assert S["MORT"][6].c < L_HAM, "MORT: candela următoare nu închide sub low"
# --- layout -----------------------------------------------------------------
W, PW = 760, 240
PX = [12, 12 + PW + 14, 12 + 2 * (PW + 14)]
SCALE, TOP, SHIFT = 46.0, 96, 30
SCALE, TOP, SHIFT = 46.0, 96, 54
CFG = [
("DA", PX[0], GREEN, "DA — închide peste high",
@@ -81,7 +81,7 @@ parts = [
'închide candela următoare — daily, exemplu construit</text>',
]
for (k, px, col, titlu, _), corp in zip(CFG, bodies):
parts.append(f'<text x="{px}" y="{40}" fill="{col}" style="font-weight:bold">{titlu}</text>')
parts.append(f'<text x="{px}" y="{38}" fill="{col}" style="font-weight:bold">{titlu}</text>')
for p, c, txt in ((H_HAM, ORANGE, "high 63.30"), (L_HAM, BLUE, "low 62.10")):
yy = y(p)
parts.append(f'<line x1="{px}" y1="{yy:.1f}" x2="{px + PW}" y2="{yy:.1f}" '
@@ -90,7 +90,7 @@ for (k, px, col, titlu, _), corp in zip(CFG, bodies):
f'{txt}</text>')
parts.append(corp)
for px in PX[1:]:
parts.append(f'<line x1="{px - 7}" y1="34" x2="{px - 7}" y2="{H - 40}" stroke="#ccc"/>')
parts.append(f'<line x1="{px - 7}" y1="44" x2="{px - 7}" y2="{H - 40}" stroke="#ccc"/>')
parts += [
f'<text x="12" y="{H - 22}" fill="{GREY}">Regula e a lecției de pattern: intri la close-ul '
'candelei următoare, dacă acea închidere e peste high-ul hammer-ului. O atingere</text>',

View File

@@ -1,11 +1,11 @@
<svg viewBox="0 0 760 487" xmlns="http://www.w3.org/2000/svg" style="width:100%;height:auto;font:12px sans-serif">
<svg viewBox="0 0 760 511" xmlns="http://www.w3.org/2000/svg" style="width:100%;height:auto;font:12px sans-serif">
<text x="12" y="20" fill="#333" style="font-weight:bold">Trigger-ul: contează unde se închide candela următoare — daily, exemplu construit</text>
<text x="12" y="40" fill="#188a3e" style="font-weight:bold">DA — închide peste high</text>
<line x1="12" y1="243.3" x2="252" y2="243.3" stroke="#b06000" stroke-width="1.3" stroke-dasharray="4 3"/>
<text x="250" y="238.3" fill="#b06000" text-anchor="end">high 63.30</text>
<line x1="12" y1="298.5" x2="252" y2="298.5" stroke="#1a5fb4" stroke-width="1.3" stroke-dasharray="4 3"/>
<text x="250" y="293.5" fill="#1a5fb4" text-anchor="end">low 62.10</text>
<g transform="translate(0,30)"><line x1="58.0" y1="96.0" x2="58.0" y2="132.8" stroke="#1a1a1a" stroke-width="1.2"/>
<text x="12" y="38" fill="#188a3e" style="font-weight:bold">DA — închide peste high</text>
<line x1="12" y1="267.3" x2="252" y2="267.3" stroke="#b06000" stroke-width="1.3" stroke-dasharray="4 3"/>
<text x="250" y="262.3" fill="#b06000" text-anchor="end">high 63.30</text>
<line x1="12" y1="322.5" x2="252" y2="322.5" stroke="#1a5fb4" stroke-width="1.3" stroke-dasharray="4 3"/>
<text x="250" y="317.5" fill="#1a5fb4" text-anchor="end">low 62.10</text>
<g transform="translate(0,54)"><line x1="58.0" y1="96.0" x2="58.0" y2="132.8" stroke="#1a1a1a" stroke-width="1.2"/>
<rect x="52.5" y="102.9" width="11" height="23.0" fill="#c00"/>
<line x1="78.0" y1="119.0" x2="78.0" y2="160.4" stroke="#1a1a1a" stroke-width="1.2"/>
<rect x="72.5" y="125.9" width="11" height="27.6" fill="#c00"/>
@@ -23,12 +23,12 @@
<polygon points="178.0,200.1 170.7,195.0 177.7,191.2" fill="#188a3e"/>
<text x="108.0" y="51.0" fill="#188a3e" text-anchor="middle" style="font-weight:bold">close 63.35, peste 63.30:</text>
<text x="108.0" y="65.0" fill="#188a3e" text-anchor="middle" style="font-weight:bold">aici intri</text></g>
<text x="266" y="40" fill="#c00" style="font-weight:bold">NU — încă sub high</text>
<line x1="266" y1="243.3" x2="506" y2="243.3" stroke="#b06000" stroke-width="1.3" stroke-dasharray="4 3"/>
<text x="504" y="238.3" fill="#b06000" text-anchor="end">high 63.30</text>
<line x1="266" y1="298.5" x2="506" y2="298.5" stroke="#1a5fb4" stroke-width="1.3" stroke-dasharray="4 3"/>
<text x="504" y="293.5" fill="#1a5fb4" text-anchor="end">low 62.10</text>
<g transform="translate(0,30)"><line x1="312.0" y1="96.0" x2="312.0" y2="132.8" stroke="#1a1a1a" stroke-width="1.2"/>
<text x="266" y="38" fill="#c00" style="font-weight:bold">NU — încă sub high</text>
<line x1="266" y1="267.3" x2="506" y2="267.3" stroke="#b06000" stroke-width="1.3" stroke-dasharray="4 3"/>
<text x="504" y="262.3" fill="#b06000" text-anchor="end">high 63.30</text>
<line x1="266" y1="322.5" x2="506" y2="322.5" stroke="#1a5fb4" stroke-width="1.3" stroke-dasharray="4 3"/>
<text x="504" y="317.5" fill="#1a5fb4" text-anchor="end">low 62.10</text>
<g transform="translate(0,54)"><line x1="312.0" y1="96.0" x2="312.0" y2="132.8" stroke="#1a1a1a" stroke-width="1.2"/>
<rect x="306.5" y="102.9" width="11" height="23.0" fill="#c00"/>
<line x1="332.0" y1="119.0" x2="332.0" y2="160.4" stroke="#1a1a1a" stroke-width="1.2"/>
<rect x="326.5" y="125.9" width="11" height="27.6" fill="#c00"/>
@@ -47,12 +47,12 @@
<text x="354.0" y="37.0" fill="#c00" text-anchor="middle" style="font-weight:bold">close 63.20, sub 63.30:</text>
<text x="354.0" y="51.0" fill="#c00" text-anchor="middle" style="font-weight:bold">nu s-a întâmplat nimic,</text>
<text x="354.0" y="65.0" fill="#c00" text-anchor="middle" style="font-weight:bold">aștepți mai departe</text></g>
<text x="520" y="40" fill="#c00" style="font-weight:bold">NU — închide sub low</text>
<line x1="520" y1="243.3" x2="760" y2="243.3" stroke="#b06000" stroke-width="1.3" stroke-dasharray="4 3"/>
<text x="758" y="238.3" fill="#b06000" text-anchor="end">high 63.30</text>
<line x1="520" y1="298.5" x2="760" y2="298.5" stroke="#1a5fb4" stroke-width="1.3" stroke-dasharray="4 3"/>
<text x="758" y="293.5" fill="#1a5fb4" text-anchor="end">low 62.10</text>
<g transform="translate(0,30)"><line x1="566.0" y1="96.0" x2="566.0" y2="132.8" stroke="#1a1a1a" stroke-width="1.2"/>
<text x="520" y="38" fill="#c00" style="font-weight:bold">NU — închide sub low</text>
<line x1="520" y1="267.3" x2="760" y2="267.3" stroke="#b06000" stroke-width="1.3" stroke-dasharray="4 3"/>
<text x="758" y="262.3" fill="#b06000" text-anchor="end">high 63.30</text>
<line x1="520" y1="322.5" x2="760" y2="322.5" stroke="#1a5fb4" stroke-width="1.3" stroke-dasharray="4 3"/>
<text x="758" y="317.5" fill="#1a5fb4" text-anchor="end">low 62.10</text>
<g transform="translate(0,54)"><line x1="566.0" y1="96.0" x2="566.0" y2="132.8" stroke="#1a1a1a" stroke-width="1.2"/>
<rect x="560.5" y="102.9" width="11" height="23.0" fill="#c00"/>
<line x1="586.0" y1="119.0" x2="586.0" y2="160.4" stroke="#1a1a1a" stroke-width="1.2"/>
<rect x="580.5" y="125.9" width="11" height="27.6" fill="#c00"/>
@@ -71,8 +71,8 @@
<text x="602.0" y="350.0" fill="#c00" text-anchor="middle" style="font-weight:bold">close 62.00, sub 62.10:</text>
<text x="602.0" y="364.0" fill="#c00" text-anchor="middle" style="font-weight:bold">vânzătorii au dus prețul</text>
<text x="602.0" y="378.0" fill="#c00" text-anchor="middle" style="font-weight:bold">sub fitil — setup mort</text></g>
<line x1="259" y1="34" x2="259" y2="447" stroke="#ccc"/>
<line x1="513" y1="34" x2="513" y2="447" stroke="#ccc"/>
<text x="12" y="465" fill="#555">Regula e a lecției de pattern: intri la close-ul candelei următoare, dacă acea închidere e peste high-ul hammer-ului. O atingere</text>
<text x="12" y="481" fill="#555">intraday peste 63.30, urmată de o închidere sub el, nu e trigger. Prețurile sunt construite.</text>
<line x1="259" y1="44" x2="259" y2="471" stroke="#ccc"/>
<line x1="513" y1="44" x2="513" y2="471" stroke="#ccc"/>
<text x="12" y="489" fill="#555">Regula e a lecției de pattern: intri la close-ul candelei următoare, dacă acea închidere e peste high-ul hammer-ului. O atingere</text>
<text x="12" y="505" fill="#555">intraday peste 63.30, urmată de o închidere sub el, nu e trigger. Prețurile sunt construite.</text>
</svg>

Before

Width:  |  Height:  |  Size: 6.7 KiB

After

Width:  |  Height:  |  Size: 6.7 KiB

View File

@@ -113,7 +113,7 @@ def build():
p.append(txt(BAR_X0 + PAD, BAR_Y + 66,
"divergență de volum — spun UNDE. Trigger-ul de candelă spune "
"CÂND.", 13, "400", BLACK, "start"))
p.append(txt(BAR_X1 - PAD, BAR_Y + 26, "02_mbt10.md:9-11, 43-49",
p.append(txt(BAR_X1 - PAD, BAR_Y + 26, "",
13, "400", GRAY, "end"))
# ------- conector bară -> cutii (un cot, fără săgeți redundante)
@@ -126,16 +126,16 @@ def build():
# ------- zona 2: cele două cutii
left_rows = [
(['„formă de candelă + downtrend”'], "05_patternuri_candele.md:77-88"),
(['„formă de candelă + downtrend”'], ""),
(['„trigger: close peste', 'high-ul hammer-ului”'],
"05_patternuri_candele.md:99-124"),
""),
(['„fără niciun indicator proprietar”'], None),
]
right_rows = [
(['„formula nu e publică nicăieri”'], "02_mbt10.md:21-39"),
(['„formula nu e publică nicăieri”'], ""),
(['„reconstituibil doar:', 'close peste pivotul daily”'],
"02_mbt10.md:179-188"),
(['„scanner + indicator proprietar”'], "02_mbt10.md:853-863"),
""),
(['„scanner + indicator proprietar”'], ""),
]
left_svg, left_area = box(
BOX_LX, "BUY HAMMER — pattern standard", BLUE, left_rows,
@@ -228,23 +228,23 @@ def verify(svg, left_area, right_area):
"Trigger de bottom: unde + când",
"Setup-urile de fond — suport, locul crimei, double bottom, buy doji,",
"divergență de volum — spun UNDE. Trigger-ul de candelă spune CÂND.",
"02_mbt10.md:9-11, 43-49",
"",
"BUY HAMMER — pattern standard",
"„formă de candelă + downtrend”",
"05_patternuri_candele.md:77-88",
"",
"„trigger: close peste",
"high-ul hammer-ului”",
"05_patternuri_candele.md:99-124",
"",
"„fără niciun indicator proprietar”",
"„pe BVB: se poate rula long-only”",
"MBT-10 — cutie neagră",
"„formula nu e publică nicăieri”",
"02_mbt10.md:21-39",
"",
"„reconstituibil doar:",
"close peste pivotul daily”",
"02_mbt10.md:179-188",
"",
"„scanner + indicator proprietar”",
"02_mbt10.md:853-863",
"",
"„pe BVB: nu, ca sistem”",
"Ce rămâne pe BVB: hammer la un nivel major",
"+ close peste PPD",

View File

@@ -7,7 +7,7 @@
<text x="56.0" y="108.0" font-size="15" font-weight="700" fill="#1a5fb4" text-anchor="start">Trigger de bottom: unde + când</text>
<text x="56.0" y="130.0" font-size="13" font-weight="400" fill="#000000" text-anchor="start">Setup-urile de fond — suport, locul crimei, double bottom, buy doji,</text>
<text x="56.0" y="148.0" font-size="13" font-weight="400" fill="#000000" text-anchor="start">divergență de volum — spun UNDE. Trigger-ul de candelă spune CÂND.</text>
<text x="644.0" y="108.0" font-size="13" font-weight="400" fill="#777777" text-anchor="end">02_mbt10.md:9-11, 43-49</text>
<text x="644.0" y="108.0" font-size="13" font-weight="400" fill="#777777" text-anchor="end"></text>
<line x1="350.0" y1="158.0" x2="350.0" y2="172.0" stroke="#777777" stroke-width="1.2"/>
<line x1="191.0" y1="172.0" x2="509.0" y2="172.0" stroke="#777777" stroke-width="1.2"/>
<line x1="191.0" y1="172.0" x2="191.0" y2="190.0" stroke="#777777" stroke-width="1.2"/>
@@ -16,10 +16,10 @@
<text x="56.0" y="216.0" font-size="15" font-weight="700" fill="#1a5fb4" text-anchor="start">BUY HAMMER — pattern standard</text>
<line x1="56.0" y1="228.0" x2="326.0" y2="228.0" stroke="#1a5fb4" stroke-width="1.0"/>
<text x="56.0" y="260.0" font-size="13" font-weight="400" fill="#000000" text-anchor="start">„formă de candelă + downtrend”</text>
<text x="56.0" y="294.0" font-size="13" font-weight="400" fill="#777777" text-anchor="start">05_patternuri_candele.md:77-88</text>
<text x="56.0" y="294.0" font-size="13" font-weight="400" fill="#777777" text-anchor="start"></text>
<text x="56.0" y="312.0" font-size="13" font-weight="400" fill="#000000" text-anchor="start">„trigger: close peste</text>
<text x="56.0" y="329.0" font-size="13" font-weight="400" fill="#000000" text-anchor="start">high-ul hammer-ului”</text>
<text x="56.0" y="346.0" font-size="13" font-weight="400" fill="#777777" text-anchor="start">05_patternuri_candele.md:99-124</text>
<text x="56.0" y="346.0" font-size="13" font-weight="400" fill="#777777" text-anchor="start"></text>
<text x="56.0" y="364.0" font-size="13" font-weight="400" fill="#000000" text-anchor="start">„fără niciun indicator proprietar”</text>
<line x1="56.0" y1="406.0" x2="326.0" y2="406.0" stroke="#188a3e" stroke-width="1.2"/>
<text x="56.0" y="432.0" font-size="13" font-weight="700" fill="#188a3e" text-anchor="start">„pe BVB: se poate rula long-only”</text>
@@ -27,12 +27,12 @@
<text x="374.0" y="216.0" font-size="15" font-weight="700" fill="#333333" text-anchor="start">MBT-10 — cutie neagră</text>
<line x1="374.0" y1="228.0" x2="644.0" y2="228.0" stroke="#333333" stroke-width="1.0"/>
<text x="374.0" y="260.0" font-size="13" font-weight="400" fill="#000000" text-anchor="start">„formula nu e publică nicăieri”</text>
<text x="374.0" y="294.0" font-size="13" font-weight="400" fill="#777777" text-anchor="start">02_mbt10.md:21-39</text>
<text x="374.0" y="294.0" font-size="13" font-weight="400" fill="#777777" text-anchor="start"></text>
<text x="374.0" y="312.0" font-size="13" font-weight="400" fill="#000000" text-anchor="start">„reconstituibil doar:</text>
<text x="374.0" y="329.0" font-size="13" font-weight="400" fill="#000000" text-anchor="start">close peste pivotul daily”</text>
<text x="374.0" y="346.0" font-size="13" font-weight="400" fill="#777777" text-anchor="start">02_mbt10.md:179-188</text>
<text x="374.0" y="346.0" font-size="13" font-weight="400" fill="#777777" text-anchor="start"></text>
<text x="374.0" y="364.0" font-size="13" font-weight="400" fill="#000000" text-anchor="start">„scanner + indicator proprietar”</text>
<text x="374.0" y="398.0" font-size="13" font-weight="400" fill="#777777" text-anchor="start">02_mbt10.md:853-863</text>
<text x="374.0" y="398.0" font-size="13" font-weight="400" fill="#777777" text-anchor="start"></text>
<line x1="374.0" y1="406.0" x2="644.0" y2="406.0" stroke="#c00" stroke-width="1.2"/>
<text x="374.0" y="432.0" font-size="13" font-weight="700" fill="#c00" text-anchor="start">„pe BVB: nu, ca sistem”</text>
<line x1="191.0" y1="446.0" x2="191.0" y2="460.0" stroke="#777777" stroke-width="1.2"/>

Before

Width:  |  Height:  |  Size: 5.5 KiB

After

Width:  |  Height:  |  Size: 5.3 KiB

View File

@@ -149,9 +149,9 @@ ch = Chart(
# explicațiile și legenda obligatorie: bloc de text sub grafic (nu se
# suprapun cu candelele, iar textele lungi nu încap pe verticală lângă bare).
cds[0].note = ("Legendă: MBT-10 nu se desenează — formula nu e publică "
"(02_mbt10.md:21-39); se marchează doar bara la care")
"; se marchează doar bara la care")
cds[1].note = ("semnalul s-a închis. Nivelurile sunt exemplul construit al "
"sumarizatorului (02_mbt10.md:165-173, 978-984).")
"sumarizatorului.")
cds[2].note = ("bara 9 = fostul vârf 52.10 (locul crimei); bara 21 = vârful "
"nou 58.90.")
cds[3].note = ("bara 29 = hammer: o 52.20, h/c 53.40, l 52.10 (codița exact "

View File

@@ -135,8 +135,8 @@
<text x="24" y="356.0" fill="#555">volum</text>
<text x="479.0" y="218.0" fill="#b06000" text-anchor="middle" style="font-weight:bold">hammer — codița pe 52.10</text>
<text x="494.0" y="110.0" fill="#188a3e" text-anchor="middle" style="font-weight:bold">MBT-10 închis</text>
<text x="24" y="454.0" fill="#188a3e">Legendă: MBT-10 nu se desenează — formula nu e publică (02_mbt10.md:21-39); se marchează doar bara la care</text>
<text x="24" y="471.0" fill="#188a3e">semnalul s-a închis. Nivelurile sunt exemplul construit al sumarizatorului (02_mbt10.md:165-173, 978-984).</text>
<text x="24" y="454.0" fill="#188a3e">Legendă: MBT-10 nu se desenează — formula nu e publică ; se marchează doar bara la care</text>
<text x="24" y="471.0" fill="#188a3e">semnalul s-a închis. Nivelurile sunt exemplul construit al sumarizatorului.</text>
<text x="24" y="488.0" fill="#188a3e">bara 9 = fostul vârf 52.10 (locul crimei); bara 21 = vârful nou 58.90.</text>
<text x="24" y="505.0" fill="#188a3e">bara 29 = hammer: o 52.20, h/c 53.40, l 52.10 (codița exact pe locul crimei); bara 30 = ziua închisă în MBT-10.</text>
</svg>

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 12 KiB

View File

@@ -0,0 +1,81 @@
#!/usr/bin/env python3
"""MBT-10 — „în formare" nu e semnal: exemplul care s-a dus în cealaltă parte.
Cazul din material: în timpul zilei prețul era la 55.30 și semnalul se vedea
în formare; ziua s-a închis la 52.90, deci semnalul n-a existat, iar a doua zi
prețul a închis la 51.50, sub locul crimei 52.10 — sub structura pe care se
sprijinea ideea. Cifrele 55.30, 52.90 și 51.50 și nivelul 52.10 sunt din
exemplul materialului; structura barelor din jur e construită.
Rulare: python3 gen/strategii/hammer_mbt10_mbt_close.py
"""
import re
import sys; sys.path.insert(0, "/workspace/atm-curs-dl")
from pathlib import Path
from svg_candles import Arrow, Candle, Chart, Level, Zone, from_closes
OUT = Path(__file__).with_suffix(".svg")
GREEN, RED, BLUE, ORANGE, GREY = "#188a3e", "#c00", "#1a5fb4", "#b06000", "#555"
CRIMEI = 52.10 # fostul vârf spart, structura pe care stă ideea
INTRADAY, CLOSE_ZI, A_DOUA_ZI = 55.30, 52.90, 51.50
CLOSES = [57.60, 58.20, 58.90, 58.10, 57.20, 56.40, 55.60, 54.80, 53.90,
53.20, 52.60, 53.40, 54.10]
cds = from_closes(CLOSES, wicks=[(0.25, 0.30)] * len(CLOSES), start=57.00)
I_ZI = len(cds) # bara „în formare"
cds.append(Candle(54.10, 55.40, 52.70, CLOSE_ZI))
cds.append(Candle(CLOSE_ZI, 53.00, 51.30, A_DOUA_ZI))
vols = [44, 48, 52, 46, 50, 54, 58, 60, 64, 68, 72, 55, 58, 96, 88]
for c, v in zip(cds, vols):
c.vol = v
# --- verificări -------------------------------------------------------------
assert len(cds) == len(vols) == 15
for i in range(1, len(cds)):
assert abs(cds[i].o - cds[i - 1].c) < 1e-9, f"open[{i}] != close[{i-1}]"
for i, c in enumerate(cds):
assert c.l <= min(c.o, c.c) and c.h >= max(c.o, c.c), f"bara {i}: h/l nu cuprind o/c"
zi = cds[I_ZI]
assert zi.h > INTRADAY > zi.c, "ziua trebuie să treacă peste 55.30 intraday și să închidă sub"
assert round(zi.c, 2) == CLOSE_ZI and zi.c > CRIMEI, \
"ziua se închide sub 55.30, dar tot deasupra locului crimei"
assert round(cds[I_ZI + 1].c, 2) == A_DOUA_ZI < CRIMEI, \
"a doua zi trebuie să închidă sub locul crimei"
assert max(c.c for c in cds[:I_ZI]) > CRIMEI, "toată coborârea vine de deasupra structurii"
ch = Chart(
candles=cds,
levels=[Level(INTRADAY, "intraday 55.30", GREY),
Level(CRIMEI, "locul crimei 52.10 — structura ideii", BLUE, label_at="left")],
zones=[Zone(I_ZI, I_ZI + 1, "cele două zile care contează", ORANGE)],
arrows=[
Arrow(I_ZI, "la 55.30, în timpul zilei, semnalul\nse vedea „în formare\" — dar ziua "
"nu se\nterminase, deci nu exista nimic",
price=INTRADAY, where="above", color=RED, dx=-330, dy=78),
Arrow(I_ZI, "s-a închis la 52.90: semnalul\nnu s-a produs niciodată",
where="below", color=RED, dx=-150, dy=40),
Arrow(I_ZI + 1, "a doua zi: 51.50, sub 52.10 —\nstructura a cedat, ideea a murit",
where="below", color=RED, dx=-70, dy=92),
],
scale=34.0, gap=26, body_w=13, left=64, width=700, top=58, vol_h=60, vol_label="volum",
title="MBT-10 — „în formare\" nu e semnal (cifrele exemplului din material)",
)
svg = ch.render()
m = re.search(r'viewBox="0 0 (\d+) (\d+)"', svg)
W, H = int(m.group(1)), int(m.group(2))
linii = [
("Te uiți la semnal o singură dată pe zi, la închidere. Cine a cumpărat la 55.30 a "
"cumpărat un semnal", "#333"),
("care nu s-a produs, și a doua zi era deja sub structura pe care se sprijinea ideea.", "#333"),
("Reale sunt 55.30, 52.90, 51.50 și faptul că 51.50 e sub locul crimei; barele din jur "
"sunt construite.", GREY),
]
add = 16 * len(linii) + 10
svg = svg.replace(f'viewBox="0 0 {W} {H}"', f'viewBox="0 0 {W} {H + add}"')
svg = svg.replace("</svg>", "".join(
f'<text x="24" y="{H + 10 + 16 * i}" fill="{c}">{t}</text>'
for i, (t, c) in enumerate(linii)) + "</svg>")
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})")

View File

@@ -0,0 +1,69 @@
<svg viewBox="0 0 751 676" xmlns="http://www.w3.org/2000/svg" style="width:100%;height:auto;font:12px sans-serif">
<text x="24" y="72" fill="#333" style="font-weight:bold">MBT-10 — „în formare" nu e semnal (cifrele exemplului din material)</text>
<rect x="442.3" y="199.5" width="49.0" height="155.4" fill="#b06000" fill-opacity="0.08" stroke="#b06000" stroke-width="1"/>
<text x="442.3" y="194.5" fill="#b06000" style="font-weight:bold">cele două zile care contează</text>
<line x1="24" y1="210.9" x2="737" y2="210.9" stroke="#555" stroke-width="1.5" stroke-dasharray="4 3"/>
<text x="723" y="204.9" fill="#555" text-anchor="end">intraday 55.30</text>
<line x1="24" y1="319.7" x2="737" y2="319.7" stroke="#1a5fb4" stroke-width="1.5" stroke-dasharray="4 3"/>
<text x="30" y="313.7" fill="#1a5fb4">locul crimei 52.10 — structura ideii</text>
<line x1="115.8" y1="124.2" x2="115.8" y2="163.3" stroke="#1a1a1a" stroke-width="1.2"/>
<rect x="109.3" y="132.7" width="13" height="20.4" fill="#188a3e"/>
<line x1="141.8" y1="103.8" x2="141.8" y2="142.9" stroke="#1a1a1a" stroke-width="1.2"/>
<rect x="135.3" y="112.3" width="13" height="20.4" fill="#188a3e"/>
<line x1="167.8" y1="80.0" x2="167.8" y2="122.5" stroke="#1a1a1a" stroke-width="1.2"/>
<rect x="161.3" y="88.5" width="13" height="23.8" fill="#188a3e"/>
<line x1="193.8" y1="80.0" x2="193.8" y2="125.9" stroke="#1a1a1a" stroke-width="1.2"/>
<rect x="187.3" y="88.5" width="13" height="27.2" fill="#c00"/>
<line x1="219.8" y1="107.2" x2="219.8" y2="156.5" stroke="#1a1a1a" stroke-width="1.2"/>
<rect x="213.3" y="115.7" width="13" height="30.6" fill="#c00"/>
<line x1="245.8" y1="137.8" x2="245.8" y2="183.7" stroke="#1a1a1a" stroke-width="1.2"/>
<rect x="239.3" y="146.3" width="13" height="27.2" fill="#c00"/>
<line x1="271.8" y1="165.0" x2="271.8" y2="210.9" stroke="#1a1a1a" stroke-width="1.2"/>
<rect x="265.3" y="173.5" width="13" height="27.2" fill="#c00"/>
<line x1="297.8" y1="192.2" x2="297.8" y2="238.1" stroke="#1a1a1a" stroke-width="1.2"/>
<rect x="291.3" y="200.7" width="13" height="27.2" fill="#c00"/>
<line x1="323.8" y1="219.4" x2="323.8" y2="268.7" stroke="#1a1a1a" stroke-width="1.2"/>
<rect x="317.3" y="227.9" width="13" height="30.6" fill="#c00"/>
<line x1="349.8" y1="250.0" x2="349.8" y2="292.5" stroke="#1a1a1a" stroke-width="1.2"/>
<rect x="343.3" y="258.5" width="13" height="23.8" fill="#c00"/>
<line x1="375.8" y1="273.8" x2="375.8" y2="312.9" stroke="#1a1a1a" stroke-width="1.2"/>
<rect x="369.3" y="282.3" width="13" height="20.4" fill="#c00"/>
<line x1="401.8" y1="267.0" x2="401.8" y2="312.9" stroke="#1a1a1a" stroke-width="1.2"/>
<rect x="395.3" y="275.5" width="13" height="27.2" fill="#188a3e"/>
<line x1="427.8" y1="243.2" x2="427.8" y2="285.7" stroke="#1a1a1a" stroke-width="1.2"/>
<rect x="421.3" y="251.7" width="13" height="23.8" fill="#188a3e"/>
<line x1="453.8" y1="207.5" x2="453.8" y2="299.3" stroke="#1a1a1a" stroke-width="1.2"/>
<rect x="447.3" y="251.7" width="13" height="40.8" fill="#c00"/>
<line x1="479.8" y1="289.1" x2="479.8" y2="346.9" stroke="#1a1a1a" stroke-width="1.2"/>
<rect x="473.3" y="292.5" width="13" height="47.6" fill="#c00"/>
<line x1="24" y1="591.9" x2="737" y2="591.9" stroke="#888"/>
<rect x="109.3" y="564.4" width="13" height="27.5" fill="#188a3e" opacity="0.55"/>
<rect x="135.3" y="561.9" width="13" height="30.0" fill="#188a3e" opacity="0.55"/>
<rect x="161.3" y="559.4" width="13" height="32.5" fill="#188a3e" opacity="0.55"/>
<rect x="187.3" y="563.2" width="13" height="28.8" fill="#c00" opacity="0.55"/>
<rect x="213.3" y="560.7" width="13" height="31.3" fill="#c00" opacity="0.55"/>
<rect x="239.3" y="558.2" width="13" height="33.8" fill="#c00" opacity="0.55"/>
<rect x="265.3" y="555.7" width="13" height="36.2" fill="#c00" opacity="0.55"/>
<rect x="291.3" y="554.4" width="13" height="37.5" fill="#c00" opacity="0.55"/>
<rect x="317.3" y="551.9" width="13" height="40.0" fill="#c00" opacity="0.55"/>
<rect x="343.3" y="549.4" width="13" height="42.5" fill="#c00" opacity="0.55"/>
<rect x="369.3" y="546.9" width="13" height="45.0" fill="#c00" opacity="0.55"/>
<rect x="395.3" y="557.5" width="13" height="34.4" fill="#188a3e" opacity="0.55"/>
<rect x="421.3" y="555.7" width="13" height="36.2" fill="#188a3e" opacity="0.55"/>
<rect x="447.3" y="531.9" width="13" height="60.0" fill="#c00" opacity="0.55"/>
<rect x="473.3" y="536.9" width="13" height="55.0" fill="#c00" opacity="0.55"/>
<text x="24" y="525.9" fill="#555">volum</text>
<line x1="123.8" y1="150.0" x2="445.9" y2="205.5" stroke="#c00" stroke-width="1.8"/>
<polygon points="453.8,206.9 445.2,209.5 446.6,201.6" fill="#c00"/>
<text x="123.8" y="117.0" fill="#c00" text-anchor="middle" style="font-weight:bold">la 55.30, în timpul zilei, semnalul</text>
<text x="123.8" y="131.0" fill="#c00" text-anchor="middle" style="font-weight:bold">se vedea „în formare" — dar ziua nu se</text>
<text x="123.8" y="145.0" fill="#c00" text-anchor="middle" style="font-weight:bold">terminase, deci nu exista nimic</text>
<line x1="303.8" y1="369.3" x2="446.5" y2="306.5" stroke="#c00" stroke-width="1.8"/>
<polygon points="453.8,303.3 448.1,310.2 444.9,302.9" fill="#c00"/>
<text x="303.8" y="383.3" fill="#c00" text-anchor="middle" style="font-weight:bold">s-a închis la 52.90: semnalul</text>
<text x="303.8" y="397.3" fill="#c00" text-anchor="middle" style="font-weight:bold">nu s-a produs niciodată</text>
<line x1="409.8" y1="468.9" x2="475.7" y2="357.8" stroke="#c00" stroke-width="1.8"/>
<polygon points="479.8,350.9 479.2,359.8 472.3,355.7" fill="#c00"/>
<text x="409.8" y="482.9" fill="#c00" text-anchor="middle" style="font-weight:bold">a doua zi: 51.50, sub 52.10 —</text>
<text x="409.8" y="496.9" fill="#c00" text-anchor="middle" style="font-weight:bold">structura a cedat, ideea a murit</text>
<text x="24" y="628" fill="#333">Te uiți la semnal o singură dată pe zi, la închidere. Cine a cumpărat la 55.30 a cumpărat un semnal</text><text x="24" y="644" fill="#333">care nu s-a produs, și a doua zi era deja sub structura pe care se sprijinea ideea.</text><text x="24" y="660" fill="#555">Reale sunt 55.30, 52.90, 51.50 și faptul că 51.50 e sub locul crimei; barele din jur sunt construite.</text></svg>

After

Width:  |  Height:  |  Size: 6.2 KiB

View File

@@ -26,9 +26,10 @@ SUP_W, PPD = 87.50, 89.60 # suport weekly, pivotul daily
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
VARF = 3 # ultimul maxim înainte de coborâre: high 95.20 = ținta
CLOSE_I = 19 # bara care se închide peste pivotul daily
CLOSES = [96.00, 95.00, 94.20, 94.60, 93.10, 92.00, 91.20, 90.10, 89.00, # 0-8
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
@@ -50,6 +51,9 @@ def serie():
# 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)
# bara de după vârf deschide chiar în el: fără fitil sus, ca vârful să
# rămână singurul maxim la 95.20
w[VARF + 1] = (0.00, 0.25)
cds = from_closes(CLOSES, wicks=w, vols=VOLS, start=96.60)
assert len(cds) == len(VOLS) == 27
for i in range(1, len(cds)):
@@ -70,6 +74,10 @@ def serie():
assert min(c.l for c in cds[CLOSE_I:]) > SL, "stopul ar fi fost atins după intrare"
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
assert round(cds[VARF].h, 2) == TP, cds[VARF].h
assert max(c.h for c in cds[VARF + 1:CLOSE_I]) < TP, \
"un maxim de după vârf trece peste țintă: ținta n-ar mai fi prima structură"
return cds

View File

@@ -10,10 +10,10 @@
<rect x="70.0" y="80.0" width="12" height="30.0" fill="#c00"/>
<line x1="98.0" y1="104.0" x2="98.0" y2="141.5" stroke="#1a1a1a" stroke-width="1.2"/>
<rect x="92.0" y="110.0" width="12" height="24.0" fill="#c00"/>
<line x1="120.0" y1="116.0" x2="120.0" y2="141.5" stroke="#1a1a1a" stroke-width="1.2"/>
<rect x="114.0" y="122.0" width="12" height="12.0" fill="#188a3e"/>
<line x1="142.0" y1="116.0" x2="142.0" y2="174.5" stroke="#1a1a1a" stroke-width="1.2"/>
<rect x="136.0" y="122.0" width="12" height="45.0" fill="#c00"/>
<line x1="120.0" y1="104.0" x2="120.0" y2="141.5" stroke="#1a1a1a" stroke-width="1.2"/>
<rect x="114.0" y="110.0" width="12" height="24.0" fill="#188a3e"/>
<line x1="142.0" y1="110.0" x2="142.0" y2="174.5" stroke="#1a1a1a" stroke-width="1.2"/>
<rect x="136.0" y="110.0" width="12" height="57.0" fill="#c00"/>
<line x1="164.0" y1="161.0" x2="164.0" y2="207.5" stroke="#1a1a1a" stroke-width="1.2"/>
<rect x="158.0" y="167.0" width="12" height="33.0" fill="#c00"/>
<line x1="186.0" y1="194.0" x2="186.0" y2="231.5" stroke="#1a1a1a" stroke-width="1.2"/>

Before

Width:  |  Height:  |  Size: 6.6 KiB

After

Width:  |  Height:  |  Size: 6.6 KiB

View File

@@ -166,7 +166,7 @@ W, H = int(m.group(1)), int(m.group(2))
linii = [
"MBT-10 #1: intrare 64.80 / SL 63.20 — risc 1R în bani",
"MBT-10 #2: intrare 62.20 / SL 60.40 — risc 1R în bani (mărime ajustată)",
"Exemplu construit (02_mbt10.md:728-734): #1 și #2 au același risc în bani; "
"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.",
]

View File

@@ -115,4 +115,4 @@
<text x="284.0" y="172.2" fill="#777" text-anchor="middle" style="font-weight:bold">MBT-10 #1</text>
<text x="314.0" y="330.0" fill="#c00" text-anchor="middle" style="font-weight:bold">stop #1 atins</text>
<text x="359.0" y="358.6" fill="#188a3e" text-anchor="middle" style="font-weight:bold">MBT-10 #2</text>
<text x="24" y="515" fill="#555">MBT-10 #1: intrare 64.80 / SL 63.20 — risc 1R în bani</text><text x="24" y="531" fill="#555">MBT-10 #2: intrare 62.20 / SL 60.40 — risc 1R în bani (mărime ajustată)</text><text x="24" y="547" fill="#555">Exemplu construit (02_mbt10.md:728-734): #1 și #2 au același risc în bani; #2 singur dă 4.7R.</text><text x="24" y="563" fill="#555">De aceea mărimea se împarte pe 2-3 încercări.</text></svg>
<text x="24" y="515" fill="#555">MBT-10 #1: intrare 64.80 / SL 63.20 — risc 1R în bani</text><text x="24" y="531" fill="#555">MBT-10 #2: intrare 62.20 / SL 60.40 — risc 1R în bani (mărime ajustată)</text><text x="24" y="547" fill="#555">Exemplu construit: #1 și #2 au același risc în bani; #2 singur dă 4.7R.</text><text x="24" y="563" fill="#555">De aceea mărimea se împarte pe 2-3 încercări.</text></svg>

Before

Width:  |  Height:  |  Size: 9.9 KiB

After

Width:  |  Height:  |  Size: 9.8 KiB

View File

@@ -0,0 +1,69 @@
#!/usr/bin/env python3
"""MBT-10 — ieșirea: ținta e o structură din stânga, nu un procent.
Toată seria pasului „unde" (importată), de la vârful din care a pornit
coborârea până la atingerea lui înapoi. Ținta 95.20 nu e aleasă: e high-ul
ultimului maxim dinaintea coborârii, verificat prin assert. Fișierul
principal nu fixează nicio regulă proprie de take-profit — de aceea ținta e
numită pe desen ca structură, nu ca regulă.
Rulare: python3 gen/strategii/hammer_mbt10_mbt_iesire.py
"""
import re
import sys; sys.path.insert(0, "/workspace/atm-curs-dl")
sys.path.insert(0, "/workspace/atm-curs-dl/gen/strategii")
from pathlib import Path
from hammer_mbt10_mbt_confluente import CLOSE_I, INTRARE, SL, TP, VARF, 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"
cds = serie()
RISC = round(INTRARE - SL, 2)
R_TINTA = round((TP - INTRARE) / RISC, 2)
prim_tp = next(i for i in range(CLOSE_I + 1, len(cds)) if cds[i].h >= TP)
# --- verificări -------------------------------------------------------------
assert round(cds[VARF].h, 2) == TP, "ținta nu e high-ul vârfului"
assert max(c.h for c in cds[VARF + 1:prim_tp]) < TP, "structura e depășită înainte de țintă"
assert prim_tp == 26 and R_TINTA == 2.04, (prim_tp, R_TINTA)
assert min(c.l for c in cds[CLOSE_I:]) > SL, "stopul ar fi fost atins înainte de țintă"
assert cds[VARF].h > cds[CLOSE_I].c > SL, "ordinea vârf / intrare / stop e greșită"
zile = prim_tp - CLOSE_I
assert zile == 7, zile
ch = Chart(
candles=cds,
levels=[Level(TP, "ținta 95.20 = ultimul maxim dinaintea coborârii", BLUE),
Level(INTRARE, "intrare 89.90", GREEN, label_at="left"),
Level(SL, "SL 87.30", RED, label_at="left")],
zones=[Zone(VARF, VARF, "de aici a pornit coborârea", ORANGE, p_top=95.9),
Zone(CLOSE_I, prim_tp, "drumul până la structură: 7 bare", GREEN)],
arrows=[
Arrow(prim_tp, f"ieși la 95.20 (+{R_TINTA:.2f}R):\nprima structură care a oprit\nprețul "
"ultima dată",
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)",
)
svg = ch.render()
m = re.search(r'viewBox="0 0 (\d+) (\d+)"', svg)
W, H = int(m.group(1)), int(m.group(2))
linii = [
("Materialul nu dă o regulă proprie de take-profit la MBT-10. Ce au în comun toate "
"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:.2f}R, în {zile} bare. Cifrele trade-ului sunt din "
"exemplul construit al materialului.", GREY),
]
add = 16 * len(linii) + 10
svg = svg.replace(f'viewBox="0 0 {W} {H}"', f'viewBox="0 0 {W} {H + add}"')
svg = svg.replace("</svg>", "".join(
f'<text x="24" y="{H + 10 + 16 * i}" fill="{c}">{t}</text>'
for i, (t, c) in enumerate(linii)) + "</svg>")
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}); ținta atinsă la bara {prim_tp} = +{R_TINTA}R")

View File

@@ -0,0 +1,101 @@
<svg viewBox="0 0 700 603" xmlns="http://www.w3.org/2000/svg" style="width:100%;height:auto;font:12px sans-serif">
<text x="24" y="72" fill="#333" style="font-weight:bold">MBT-10 — ieșirea la prima structură din stânga (exemplu construit)</text>
<rect x="95.0" y="103.4" width="20.0" height="58.7" fill="#b06000" fill-opacity="0.08" stroke="#b06000" stroke-width="1"/>
<text x="95.0" y="98.4" fill="#b06000" style="font-weight:bold">de aici a pornit coborârea</text>
<rect x="367.0" y="103.2" width="139.0" height="183.7" fill="#188a3e" fill-opacity="0.08" stroke="#188a3e" stroke-width="1"/>
<text x="367.0" y="98.2" fill="#188a3e" style="font-weight:bold">drumul până la structură: 7 bare</text>
<line x1="24" y1="121.6" x2="686" y2="121.6" stroke="#1a5fb4" stroke-width="1.5" stroke-dasharray="4 3"/>
<text x="672" y="115.6" fill="#1a5fb4" text-anchor="end">ținta 95.20 = ultimul maxim dinaintea coborârii</text>
<line x1="24" y1="259.4" x2="686" y2="259.4" stroke="#188a3e" stroke-width="1.5" stroke-dasharray="4 3"/>
<text x="30" y="253.4" fill="#188a3e">intrare 89.90</text>
<line x1="24" y1="327.0" x2="686" y2="327.0" stroke="#c00" stroke-width="1.5" stroke-dasharray="4 3"/>
<text x="30" y="321.0" fill="#c00">SL 87.30</text>
<line x1="54.0" y1="80.0" x2="54.0" y2="107.3" stroke="#1a1a1a" stroke-width="1.2"/>
<rect x="49.0" y="85.2" width="10" height="15.6" fill="#c00"/>
<line x1="71.0" y1="95.6" x2="71.0" y2="133.3" stroke="#1a1a1a" stroke-width="1.2"/>
<rect x="66.0" y="100.8" width="10" height="26.0" fill="#c00"/>
<line x1="88.0" y1="121.6" x2="88.0" y2="154.1" stroke="#1a1a1a" stroke-width="1.2"/>
<rect x="83.0" y="126.8" width="10" height="20.8" fill="#c00"/>
<line x1="105.0" y1="121.6" x2="105.0" y2="154.1" stroke="#1a1a1a" stroke-width="1.2"/>
<rect x="100.0" y="126.8" width="10" height="20.8" fill="#188a3e"/>
<line x1="122.0" y1="126.8" x2="122.0" y2="182.7" stroke="#1a1a1a" stroke-width="1.2"/>
<rect x="117.0" y="126.8" width="10" height="49.4" fill="#c00"/>
<line x1="139.0" y1="171.0" x2="139.0" y2="211.3" stroke="#1a1a1a" stroke-width="1.2"/>
<rect x="134.0" y="176.2" width="10" height="28.6" fill="#c00"/>
<line x1="156.0" y1="199.6" x2="156.0" y2="232.1" stroke="#1a1a1a" stroke-width="1.2"/>
<rect x="151.0" y="204.8" width="10" height="20.8" fill="#c00"/>
<line x1="173.0" y1="220.4" x2="173.0" y2="260.7" stroke="#1a1a1a" stroke-width="1.2"/>
<rect x="168.0" y="225.6" width="10" height="28.6" fill="#c00"/>
<line x1="190.0" y1="249.0" x2="190.0" y2="289.3" stroke="#1a1a1a" stroke-width="1.2"/>
<rect x="185.0" y="254.2" width="10" height="28.6" fill="#c00"/>
<line x1="207.0" y1="277.6" x2="207.0" y2="310.1" stroke="#1a1a1a" stroke-width="1.2"/>
<rect x="202.0" y="282.8" width="10" height="20.8" fill="#c00"/>
<line x1="224.0" y1="298.4" x2="224.0" y2="319.2" stroke="#1a1a1a" stroke-width="1.2"/>
<rect x="219.0" y="303.6" width="10" height="13.0" fill="#c00"/>
<line x1="241.0" y1="293.2" x2="241.0" y2="317.9" stroke="#1a1a1a" stroke-width="1.2"/>
<rect x="236.0" y="298.4" width="10" height="18.2" fill="#188a3e"/>
<line x1="258.0" y1="275.0" x2="258.0" y2="304.9" stroke="#1a1a1a" stroke-width="1.2"/>
<rect x="253.0" y="280.2" width="10" height="18.2" fill="#188a3e"/>
<line x1="275.0" y1="275.0" x2="275.0" y2="299.7" stroke="#1a1a1a" stroke-width="1.2"/>
<rect x="270.0" y="280.2" width="10" height="13.0" fill="#c00"/>
<line x1="292.0" y1="288.0" x2="292.0" y2="315.3" stroke="#1a1a1a" stroke-width="1.2"/>
<rect x="287.0" y="293.2" width="10" height="15.6" fill="#c00"/>
<line x1="309.0" y1="303.6" x2="309.0" y2="320.5" stroke="#1a1a1a" stroke-width="1.2"/>
<rect x="304.0" y="308.8" width="10" height="9.1" fill="#c00"/>
<line x1="326.0" y1="295.8" x2="326.0" y2="319.2" stroke="#1a1a1a" stroke-width="1.2"/>
<rect x="321.0" y="301.0" width="10" height="16.9" fill="#188a3e"/>
<line x1="343.0" y1="280.2" x2="343.0" y2="307.5" stroke="#1a1a1a" stroke-width="1.2"/>
<rect x="338.0" y="285.4" width="10" height="15.6" fill="#188a3e"/>
<line x1="360.0" y1="264.6" x2="360.0" y2="291.9" stroke="#1a1a1a" stroke-width="1.2"/>
<rect x="355.0" y="272.4" width="10" height="13.0" fill="#188a3e"/>
<line x1="377.0" y1="254.2" x2="377.0" y2="278.9" stroke="#1a1a1a" stroke-width="1.2"/>
<rect x="372.0" y="259.4" width="10" height="13.0" fill="#188a3e"/>
<line x1="394.0" y1="236.0" x2="394.0" y2="265.9" stroke="#1a1a1a" stroke-width="1.2"/>
<rect x="389.0" y="241.2" width="10" height="18.2" fill="#188a3e"/>
<line x1="411.0" y1="215.2" x2="411.0" y2="247.7" stroke="#1a1a1a" stroke-width="1.2"/>
<rect x="406.0" y="220.4" width="10" height="20.8" fill="#188a3e"/>
<line x1="428.0" y1="194.4" x2="428.0" y2="226.9" stroke="#1a1a1a" stroke-width="1.2"/>
<rect x="423.0" y="199.6" width="10" height="20.8" fill="#188a3e"/>
<line x1="445.0" y1="194.4" x2="445.0" y2="216.5" stroke="#1a1a1a" stroke-width="1.2"/>
<rect x="440.0" y="199.6" width="10" height="10.4" fill="#c00"/>
<line x1="462.0" y1="173.6" x2="462.0" y2="216.5" stroke="#1a1a1a" stroke-width="1.2"/>
<rect x="457.0" y="178.8" width="10" height="31.2" fill="#188a3e"/>
<line x1="479.0" y1="145.0" x2="479.0" y2="185.3" stroke="#1a1a1a" stroke-width="1.2"/>
<rect x="474.0" y="150.2" width="10" height="28.6" fill="#188a3e"/>
<line x1="496.0" y1="111.2" x2="496.0" y2="156.7" stroke="#1a1a1a" stroke-width="1.2"/>
<rect x="491.0" y="116.4" width="10" height="33.8" fill="#188a3e"/>
<line x1="24" y1="519.5" x2="686" y2="519.5" stroke="#888"/>
<rect x="49.0" y="482.0" width="10" height="37.5" fill="#c00" opacity="0.55"/>
<rect x="66.0" y="483.2" width="10" height="36.2" fill="#c00" opacity="0.55"/>
<rect x="83.0" y="485.1" width="10" height="34.4" fill="#c00" opacity="0.55"/>
<rect x="100.0" y="488.2" width="10" height="31.3" fill="#188a3e" opacity="0.55"/>
<rect x="117.0" y="480.7" width="10" height="38.8" fill="#c00" opacity="0.55"/>
<rect x="134.0" y="478.2" width="10" height="41.2" fill="#c00" opacity="0.55"/>
<rect x="151.0" y="475.7" width="10" height="43.8" fill="#c00" opacity="0.55"/>
<rect x="168.0" y="473.2" width="10" height="46.2" fill="#c00" opacity="0.55"/>
<rect x="185.0" y="469.5" width="10" height="50.0" fill="#c00" opacity="0.55"/>
<rect x="202.0" y="465.7" width="10" height="53.8" fill="#c00" opacity="0.55"/>
<rect x="219.0" y="460.7" width="10" height="58.8" fill="#c00" opacity="0.55"/>
<rect x="236.0" y="480.7" width="10" height="38.8" fill="#188a3e" opacity="0.55"/>
<rect x="253.0" y="483.2" width="10" height="36.2" fill="#188a3e" opacity="0.55"/>
<rect x="270.0" y="485.1" width="10" height="34.4" fill="#c00" opacity="0.55"/>
<rect x="287.0" y="482.0" width="10" height="37.5" fill="#c00" opacity="0.55"/>
<rect x="304.0" y="478.2" width="10" height="41.2" fill="#c00" opacity="0.55"/>
<rect x="321.0" y="485.7" width="10" height="33.8" fill="#188a3e" opacity="0.55"/>
<rect x="338.0" y="483.2" width="10" height="36.2" fill="#188a3e" opacity="0.55"/>
<rect x="355.0" y="480.7" width="10" height="38.8" fill="#188a3e" opacity="0.55"/>
<rect x="372.0" y="459.5" width="10" height="60.0" fill="#188a3e" opacity="0.55"/>
<rect x="389.0" y="475.7" width="10" height="43.8" fill="#188a3e" opacity="0.55"/>
<rect x="406.0" y="478.2" width="10" height="41.2" fill="#188a3e" opacity="0.55"/>
<rect x="423.0" y="479.5" width="10" height="40.0" fill="#188a3e" opacity="0.55"/>
<rect x="440.0" y="483.2" width="10" height="36.2" fill="#c00" opacity="0.55"/>
<rect x="457.0" y="477.0" width="10" height="42.5" fill="#188a3e" opacity="0.55"/>
<rect x="474.0" y="474.5" width="10" height="45.0" fill="#188a3e" opacity="0.55"/>
<rect x="491.0" y="469.5" width="10" height="50.0" fill="#188a3e" opacity="0.55"/>
<text x="24" y="453.5" fill="#555">volum</text>
<line x1="296.0" y1="382.5" x2="491.1" y2="131.9" stroke="#1a5fb4" stroke-width="1.8"/>
<polygon points="496.0,125.6 494.2,134.4 487.9,129.5" fill="#1a5fb4"/>
<text x="296.0" y="396.5" fill="#1a5fb4" text-anchor="middle" style="font-weight:bold">ieși la 95.20 (+2.04R):</text>
<text x="296.0" y="410.5" fill="#1a5fb4" text-anchor="middle" style="font-weight:bold">prima structură care a oprit</text>
<text x="296.0" y="424.5" fill="#1a5fb4" text-anchor="middle" style="font-weight:bold">prețul ultima dată</text>
<text x="24" y="555" fill="#333">Materialul nu dă o regulă proprie de take-profit la MBT-10. Ce au în comun toate exemplele lui e că</text><text x="24" y="571" fill="#333">ținta e o structură vizibilă în stânga: un vârf anterior, ultimul maxim mai jos, sau închiderea unui gap.</text><text x="24" y="587" fill="#555">Aici: 89.90 → 95.20 = 2.04R, în 7 bare. Cifrele trade-ului sunt din exemplul construit al materialului.</text></svg>

After

Width:  |  Height:  |  Size: 8.7 KiB

View File

@@ -33,14 +33,14 @@ ch = Chart(
candles=w,
levels=[Level(PPD, "pivotul daily 89.60", BLUE),
Level(SUP_W, "suport weekly 87.50", GREY, label_at="left")],
zones=[Zone(sh(NU), sh(DA), "cele două zile care se compară", ORANGE)],
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",
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",
where="above", color=GREEN, dx=-70, dy=-20),
],
scale=44.0, gap=26, body_w=13, left=64, width=680, vol_h=60, vol_label="volum",
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)",
)
svg = ch.render()

View File

@@ -1,62 +1,61 @@
<svg viewBox="0 0 686 554" xmlns="http://www.w3.org/2000/svg" style="width:100%;height:auto;font:12px sans-serif">
<text x="24" y="48" fill="#333" style="font-weight:bold">MBT-10 — condiția de preț: close peste pivotul daily (exemplu construit)</text>
<rect x="293.0" y="149.2" width="49.0" height="79.8" fill="#b06000" fill-opacity="0.08" stroke="#b06000" stroke-width="1"/>
<text x="293.0" y="47.0" fill="#b06000" style="font-weight:bold">cele două zile care se compară</text>
<line x1="24" y1="179.2" x2="672" y2="179.2" stroke="#1a5fb4" stroke-width="1.5" stroke-dasharray="4 3"/>
<text x="658" y="173.2" fill="#1a5fb4" text-anchor="end">pivotul daily 89.60</text>
<line x1="24" y1="271.6" x2="672" y2="271.6" stroke="#555" stroke-width="1.5" stroke-dasharray="4 3"/>
<text x="30" y="265.6" fill="#555">suport weekly 87.50</text>
<line x1="70.5" y1="196.8" x2="70.5" y2="251.8" stroke="#1a1a1a" stroke-width="1.2"/>
<rect x="64.0" y="205.6" width="13" height="35.2" fill="#c00"/>
<line x1="96.5" y1="232.0" x2="96.5" y2="267.2" stroke="#1a1a1a" stroke-width="1.2"/>
<rect x="90.0" y="240.8" width="13" height="22.0" fill="#c00"/>
<line x1="122.5" y1="223.2" x2="122.5" y2="265.0" stroke="#1a1a1a" stroke-width="1.2"/>
<rect x="116.0" y="232.0" width="13" height="30.8" fill="#188a3e"/>
<line x1="148.5" y1="192.4" x2="148.5" y2="243.0" stroke="#1a1a1a" stroke-width="1.2"/>
<rect x="142.0" y="201.2" width="13" height="30.8" fill="#188a3e"/>
<line x1="174.5" y1="192.4" x2="174.5" y2="234.2" stroke="#1a1a1a" stroke-width="1.2"/>
<rect x="168.0" y="201.2" width="13" height="22.0" fill="#c00"/>
<line x1="200.5" y1="214.4" x2="200.5" y2="260.6" stroke="#1a1a1a" stroke-width="1.2"/>
<rect x="194.0" y="223.2" width="13" height="26.4" fill="#c00"/>
<line x1="226.5" y1="240.8" x2="226.5" y2="269.4" stroke="#1a1a1a" stroke-width="1.2"/>
<rect x="220.0" y="249.6" width="13" height="15.4" fill="#c00"/>
<line x1="252.5" y1="227.6" x2="252.5" y2="267.2" stroke="#1a1a1a" stroke-width="1.2"/>
<rect x="246.0" y="236.4" width="13" height="28.6" fill="#188a3e"/>
<line x1="278.5" y1="201.2" x2="278.5" y2="247.4" stroke="#1a1a1a" stroke-width="1.2"/>
<rect x="272.0" y="210.0" width="13" height="26.4" fill="#188a3e"/>
<line x1="304.5" y1="174.8" x2="304.5" y2="221.0" stroke="#1a1a1a" stroke-width="1.2"/>
<rect x="298.0" y="188.0" width="13" height="22.0" fill="#188a3e"/>
<line x1="330.5" y1="157.2" x2="330.5" y2="199.0" stroke="#1a1a1a" stroke-width="1.2"/>
<rect x="324.0" y="166.0" width="13" height="22.0" fill="#188a3e"/>
<line x1="356.5" y1="126.4" x2="356.5" y2="177.0" stroke="#1a1a1a" stroke-width="1.2"/>
<rect x="350.0" y="135.2" width="13" height="30.8" fill="#188a3e"/>
<line x1="382.5" y1="91.2" x2="382.5" y2="146.2" stroke="#1a1a1a" stroke-width="1.2"/>
<rect x="376.0" y="100.0" width="13" height="35.2" fill="#188a3e"/>
<line x1="408.5" y1="56.0" x2="408.5" y2="111.0" stroke="#1a1a1a" stroke-width="1.2"/>
<rect x="402.0" y="64.8" width="13" height="35.2" fill="#188a3e"/>
<line x1="24" y1="454.4" x2="672" y2="454.4" stroke="#888"/>
<rect x="64.0" y="400.6" width="13" height="53.8" fill="#c00" opacity="0.55"/>
<rect x="90.0" y="395.6" width="13" height="58.8" fill="#c00" opacity="0.55"/>
<rect x="116.0" y="415.6" width="13" height="38.8" fill="#188a3e" opacity="0.55"/>
<rect x="142.0" y="418.1" width="13" height="36.2" fill="#188a3e" opacity="0.55"/>
<rect x="168.0" y="420.0" width="13" height="34.4" fill="#c00" opacity="0.55"/>
<rect x="194.0" y="416.9" width="13" height="37.5" fill="#c00" opacity="0.55"/>
<rect x="220.0" y="413.1" width="13" height="41.2" fill="#c00" opacity="0.55"/>
<rect x="246.0" y="420.6" width="13" height="33.8" fill="#188a3e" opacity="0.55"/>
<rect x="272.0" y="418.1" width="13" height="36.2" fill="#188a3e" opacity="0.55"/>
<rect x="298.0" y="415.6" width="13" height="38.8" fill="#188a3e" opacity="0.55"/>
<rect x="324.0" y="394.4" width="13" height="60.0" fill="#188a3e" opacity="0.55"/>
<rect x="350.0" y="410.6" width="13" height="43.8" fill="#188a3e" opacity="0.55"/>
<rect x="376.0" y="413.1" width="13" height="41.2" fill="#188a3e" opacity="0.55"/>
<rect x="402.0" y="414.4" width="13" height="40.0" fill="#188a3e" opacity="0.55"/>
<text x="24" y="388.4" fill="#555">volum</text>
<line x1="114.5" y1="317.4" x2="297.3" y2="228.5" stroke="#c00" stroke-width="1.8"/>
<polygon points="304.5,225.0 299.1,232.1 295.6,224.9" fill="#c00"/>
<text x="114.5" y="331.4" fill="#c00" text-anchor="middle" style="font-weight:bold">a atins 89.70 în timpul zilei,</text>
<text x="114.5" y="345.4" fill="#c00" text-anchor="middle" style="font-weight:bold">dar s-a închis la 89.40, sub pivot:</text>
<text x="114.5" y="359.4" fill="#c00" text-anchor="middle" style="font-weight:bold">nu e semnal</text>
<line x1="260.5" y1="98.4" x2="324.2" y2="148.3" stroke="#188a3e" stroke-width="1.8"/>
<polygon points="330.5,153.2 321.7,151.4 326.7,145.1" fill="#188a3e"/>
<text x="260.5" y="79.4" fill="#188a3e" text-anchor="middle" style="font-weight:bold">s-a închis la 89.90, peste pivot:</text>
<text x="260.5" y="93.4" fill="#188a3e" text-anchor="middle" style="font-weight:bold">aici intri, la close-ul zilei</text>
<text x="24" y="490" fill="#333">Pivotul daily se recalculează în fiecare zi din maximul, minimul și închiderea zilei precedente;</text><text x="24" y="506" fill="#333">linia desenată e valoarea din ziua intrării, 89.60, nu un nivel fix.</text><text x="24" y="522" fill="#555">Asta e tot ce se poate verifica din MBT-10 fără indicatorul proprietar — „prima componentă" din el,</text><text x="24" y="538" fill="#555">cum îi spune materialul; restul formulei nu e publicat nicăieri.</text></svg>
<svg viewBox="0 0 686 578" xmlns="http://www.w3.org/2000/svg" style="width:100%;height:auto;font:12px sans-serif">
<text x="24" y="72" fill="#333" style="font-weight:bold">MBT-10 — condiția de preț: close peste pivotul daily (exemplu construit)</text>
<rect x="293.0" y="168.0" width="49.0" height="85.0" fill="#b06000" fill-opacity="0.08" stroke="#b06000" stroke-width="1"/>
<line x1="24" y1="203.2" x2="672" y2="203.2" stroke="#1a5fb4" stroke-width="1.5" stroke-dasharray="4 3"/>
<text x="658" y="197.2" fill="#1a5fb4" text-anchor="end">pivotul daily 89.60</text>
<line x1="24" y1="295.6" x2="672" y2="295.6" stroke="#555" stroke-width="1.5" stroke-dasharray="4 3"/>
<text x="30" y="289.6" fill="#555">suport weekly 87.50</text>
<line x1="70.5" y1="220.8" x2="70.5" y2="275.8" stroke="#1a1a1a" stroke-width="1.2"/>
<rect x="64.0" y="229.6" width="13" height="35.2" fill="#c00"/>
<line x1="96.5" y1="256.0" x2="96.5" y2="291.2" stroke="#1a1a1a" stroke-width="1.2"/>
<rect x="90.0" y="264.8" width="13" height="22.0" fill="#c00"/>
<line x1="122.5" y1="247.2" x2="122.5" y2="289.0" stroke="#1a1a1a" stroke-width="1.2"/>
<rect x="116.0" y="256.0" width="13" height="30.8" fill="#188a3e"/>
<line x1="148.5" y1="216.4" x2="148.5" y2="267.0" stroke="#1a1a1a" stroke-width="1.2"/>
<rect x="142.0" y="225.2" width="13" height="30.8" fill="#188a3e"/>
<line x1="174.5" y1="216.4" x2="174.5" y2="258.2" stroke="#1a1a1a" stroke-width="1.2"/>
<rect x="168.0" y="225.2" width="13" height="22.0" fill="#c00"/>
<line x1="200.5" y1="238.4" x2="200.5" y2="284.6" stroke="#1a1a1a" stroke-width="1.2"/>
<rect x="194.0" y="247.2" width="13" height="26.4" fill="#c00"/>
<line x1="226.5" y1="264.8" x2="226.5" y2="293.4" stroke="#1a1a1a" stroke-width="1.2"/>
<rect x="220.0" y="273.6" width="13" height="15.4" fill="#c00"/>
<line x1="252.5" y1="251.6" x2="252.5" y2="291.2" stroke="#1a1a1a" stroke-width="1.2"/>
<rect x="246.0" y="260.4" width="13" height="28.6" fill="#188a3e"/>
<line x1="278.5" y1="225.2" x2="278.5" y2="271.4" stroke="#1a1a1a" stroke-width="1.2"/>
<rect x="272.0" y="234.0" width="13" height="26.4" fill="#188a3e"/>
<line x1="304.5" y1="198.8" x2="304.5" y2="245.0" stroke="#1a1a1a" stroke-width="1.2"/>
<rect x="298.0" y="212.0" width="13" height="22.0" fill="#188a3e"/>
<line x1="330.5" y1="181.2" x2="330.5" y2="223.0" stroke="#1a1a1a" stroke-width="1.2"/>
<rect x="324.0" y="190.0" width="13" height="22.0" fill="#188a3e"/>
<line x1="356.5" y1="150.4" x2="356.5" y2="201.0" stroke="#1a1a1a" stroke-width="1.2"/>
<rect x="350.0" y="159.2" width="13" height="30.8" fill="#188a3e"/>
<line x1="382.5" y1="115.2" x2="382.5" y2="170.2" stroke="#1a1a1a" stroke-width="1.2"/>
<rect x="376.0" y="124.0" width="13" height="35.2" fill="#188a3e"/>
<line x1="408.5" y1="80.0" x2="408.5" y2="135.0" stroke="#1a1a1a" stroke-width="1.2"/>
<rect x="402.0" y="88.8" width="13" height="35.2" fill="#188a3e"/>
<line x1="24" y1="478.4" x2="672" y2="478.4" stroke="#888"/>
<rect x="64.0" y="424.6" width="13" height="53.8" fill="#c00" opacity="0.55"/>
<rect x="90.0" y="419.6" width="13" height="58.8" fill="#c00" opacity="0.55"/>
<rect x="116.0" y="439.6" width="13" height="38.8" fill="#188a3e" opacity="0.55"/>
<rect x="142.0" y="442.1" width="13" height="36.2" fill="#188a3e" opacity="0.55"/>
<rect x="168.0" y="444.0" width="13" height="34.4" fill="#c00" opacity="0.55"/>
<rect x="194.0" y="440.9" width="13" height="37.5" fill="#c00" opacity="0.55"/>
<rect x="220.0" y="437.1" width="13" height="41.2" fill="#c00" opacity="0.55"/>
<rect x="246.0" y="444.6" width="13" height="33.8" fill="#188a3e" opacity="0.55"/>
<rect x="272.0" y="442.1" width="13" height="36.2" fill="#188a3e" opacity="0.55"/>
<rect x="298.0" y="439.6" width="13" height="38.8" fill="#188a3e" opacity="0.55"/>
<rect x="324.0" y="418.4" width="13" height="60.0" fill="#188a3e" opacity="0.55"/>
<rect x="350.0" y="434.6" width="13" height="43.8" fill="#188a3e" opacity="0.55"/>
<rect x="376.0" y="437.1" width="13" height="41.2" fill="#188a3e" opacity="0.55"/>
<rect x="402.0" y="438.4" width="13" height="40.0" fill="#188a3e" opacity="0.55"/>
<text x="24" y="412.4" fill="#555">volum</text>
<line x1="114.5" y1="341.4" x2="297.3" y2="252.5" stroke="#c00" stroke-width="1.8"/>
<polygon points="304.5,249.0 299.1,256.1 295.6,248.9" fill="#c00"/>
<text x="114.5" y="355.4" fill="#c00" text-anchor="middle" style="font-weight:bold">a atins 89.70 în timpul zilei,</text>
<text x="114.5" y="369.4" fill="#c00" text-anchor="middle" style="font-weight:bold">dar s-a închis la 89.40, sub pivot:</text>
<text x="114.5" y="383.4" fill="#c00" text-anchor="middle" style="font-weight:bold">nu e semnal</text>
<line x1="260.5" y1="122.4" x2="324.2" y2="172.3" stroke="#188a3e" stroke-width="1.8"/>
<polygon points="330.5,177.2 321.7,175.4 326.7,169.1" fill="#188a3e"/>
<text x="260.5" y="103.4" fill="#188a3e" text-anchor="middle" style="font-weight:bold">s-a închis la 89.90, peste pivot:</text>
<text x="260.5" y="117.4" fill="#188a3e" text-anchor="middle" style="font-weight:bold">aici intri, la close-ul zilei</text>
<text x="24" y="514" fill="#333">Pivotul daily se recalculează în fiecare zi din maximul, minimul și închiderea zilei precedente;</text><text x="24" y="530" fill="#333">linia desenată e valoarea din ziua intrării, 89.60, nu un nivel fix.</text><text x="24" y="546" fill="#555">Asta e tot ce se poate verifica din MBT-10 fără indicatorul proprietar — „prima componentă" din el,</text><text x="24" y="562" fill="#555">cum îi spune materialul; restul formulei nu e publicat nicăieri.</text></svg>

Before

Width:  |  Height:  |  Size: 5.7 KiB

After

Width:  |  Height:  |  Size: 5.6 KiB

View File

@@ -0,0 +1,80 @@
#!/usr/bin/env python3
"""MBT-10 — stopul sub structură și mărimea poziției (exemplu construit).
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.
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/strategii")
from pathlib import Path
from hammer_mbt10_mbt_confluente import (CLOSE_I, FUND1, FUND2, INTRARE, SL,
SUP_W, 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"
cds = serie()
I0, I1 = 8, 21
w = cds[I0:I1 + 1]
sh = lambda i: i - I0 # noqa: E731
RISC = round(INTRARE - SL, 2)
CONT, PROCENT = 10_000, 0.02
RISC_LEI = CONT * PROCENT
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 < 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"
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),
Level(SL, "SL 87.30", RED, label_at="left")],
zones=[Zone(sh(FUND1), sh(FUND2), "structura care ține ideea", 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",
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)",
)
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'<line x1="24" y1="([\d.]+)"', svg).group(1)) - ch._y(ch.levels[0].price))
y_in, y_sl = ch._y(INTRARE) + OFF, ch._y(SL) + OFF
xp = ch._cx(len(w) - 2)
brk = (f'<polyline points="{xp - 6:.1f},{y_in:.1f} {xp:.1f},{y_in:.1f} {xp:.1f},{y_sl:.1f} '
f'{xp - 6:.1f},{y_sl:.1f}" fill="none" stroke="{RED}" stroke-width="1.5"/>'
f'<text x="{xp + 6:.1f}" y="{(y_in + y_sl) / 2 + 4:.1f}" fill="{RED}" '
f'style="font-weight:bold">1R = 2.60 $</text>')
linii = [
(f"Mărimea, cu aceeași regulă ca la buy hammer: 2 % dintr-un cont de 10.000 $ = 200 $;",
"#333"),
(f"200 / 2.60 = {RISC_LEI / RISC:.1f} → {ACTIUNI} de acțiuni, pierdere maximă "
f"{ACTIUNI * RISC:.2f} $.", "#333"),
("87.30 e cifra materialului, nu marja mea de 5 cenți; suportul weekly 87.50 e construit "
"de mine ca stopul", GREY),
("acela să aibă sub ce sta. Materialul nu dă niciun procent fix de stop pentru MBT-10.", GREY),
]
add = 16 * len(linii) + 10
svg = svg.replace(f'viewBox="0 0 {W} {H}"', f'viewBox="0 0 {W} {H + add}"')
svg = svg.replace("</svg>", brk + "".join(
f'<text x="24" y="{H + 10 + 16 * i}" fill="{c}">{t}</text>'
for i, (t, c) in enumerate(linii)) + "</svg>")
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}); risc {RISC}, {ACTIUNI} acțiuni")

View File

@@ -0,0 +1,44 @@
<svg viewBox="0 0 680 443" xmlns="http://www.w3.org/2000/svg" style="width:100%;height:auto;font:12px sans-serif">
<text x="24" y="48" fill="#333" style="font-weight:bold">MBT-10 — stopul sub structură (exemplu construit)</text>
<rect x="104.5" y="140.0" width="153.0" height="86.0" fill="#b06000" fill-opacity="0.08" stroke="#b06000" stroke-width="1"/>
<text x="104.5" y="135.0" fill="#b06000" style="font-weight:bold">structura care ține ideea</text>
<line x1="24" y1="124.0" x2="666" y2="124.0" stroke="#188a3e" stroke-width="1.5" stroke-dasharray="4 3"/>
<text x="30" y="118.0" fill="#188a3e">intrare 89.90 (close-ul zilei)</text>
<line x1="24" y1="220.0" x2="666" y2="220.0" stroke="#1a5fb4" stroke-width="1.5" stroke-dasharray="4 3"/>
<text x="652" y="214.0" fill="#1a5fb4" text-anchor="end">suport weekly 87.50</text>
<line x1="24" y1="228.0" x2="666" y2="228.0" stroke="#c00" stroke-width="1.5" stroke-dasharray="4 3"/>
<text x="30" y="222.0" fill="#c00">SL 87.30</text>
<line x1="64.0" y1="108.0" x2="64.0" y2="170.0" stroke="#1a1a1a" stroke-width="1.2"/>
<rect x="57.5" y="116.0" width="13" height="44.0" fill="#c00"/>
<line x1="90.0" y1="152.0" x2="90.0" y2="202.0" stroke="#1a1a1a" stroke-width="1.2"/>
<rect x="83.5" y="160.0" width="13" height="32.0" fill="#c00"/>
<line x1="116.0" y1="184.0" x2="116.0" y2="216.0" stroke="#1a1a1a" stroke-width="1.2"/>
<rect x="109.5" y="192.0" width="13" height="20.0" fill="#c00"/>
<line x1="142.0" y1="176.0" x2="142.0" y2="214.0" stroke="#1a1a1a" stroke-width="1.2"/>
<rect x="135.5" y="184.0" width="13" height="28.0" fill="#188a3e"/>
<line x1="168.0" y1="148.0" x2="168.0" y2="194.0" stroke="#1a1a1a" stroke-width="1.2"/>
<rect x="161.5" y="156.0" width="13" height="28.0" fill="#188a3e"/>
<line x1="194.0" y1="148.0" x2="194.0" y2="186.0" stroke="#1a1a1a" stroke-width="1.2"/>
<rect x="187.5" y="156.0" width="13" height="20.0" fill="#c00"/>
<line x1="220.0" y1="168.0" x2="220.0" y2="210.0" stroke="#1a1a1a" stroke-width="1.2"/>
<rect x="213.5" y="176.0" width="13" height="24.0" fill="#c00"/>
<line x1="246.0" y1="192.0" x2="246.0" y2="218.0" stroke="#1a1a1a" stroke-width="1.2"/>
<rect x="239.5" y="200.0" width="13" height="14.0" fill="#c00"/>
<line x1="272.0" y1="180.0" x2="272.0" y2="216.0" stroke="#1a1a1a" stroke-width="1.2"/>
<rect x="265.5" y="188.0" width="13" height="26.0" fill="#188a3e"/>
<line x1="298.0" y1="156.0" x2="298.0" y2="198.0" stroke="#1a1a1a" stroke-width="1.2"/>
<rect x="291.5" y="164.0" width="13" height="24.0" fill="#188a3e"/>
<line x1="324.0" y1="132.0" x2="324.0" y2="174.0" stroke="#1a1a1a" stroke-width="1.2"/>
<rect x="317.5" y="144.0" width="13" height="20.0" fill="#188a3e"/>
<line x1="350.0" y1="116.0" x2="350.0" y2="154.0" stroke="#1a1a1a" stroke-width="1.2"/>
<rect x="343.5" y="124.0" width="13" height="20.0" fill="#188a3e"/>
<line x1="376.0" y1="88.0" x2="376.0" y2="134.0" stroke="#1a1a1a" stroke-width="1.2"/>
<rect x="369.5" y="96.0" width="13" height="28.0" fill="#188a3e"/>
<line x1="402.0" y1="56.0" x2="402.0" y2="106.0" stroke="#1a1a1a" stroke-width="1.2"/>
<rect x="395.5" y="64.0" width="13" height="32.0" fill="#188a3e"/>
<line x1="206.0" y1="292.0" x2="241.6" y2="238.7" stroke="#c00" stroke-width="1.8"/>
<polygon points="246.0,232.0 244.9,240.9 238.2,236.4" fill="#c00"/>
<text x="206.0" y="306.0" fill="#c00" text-anchor="middle" style="font-weight:bold">sub 87.30 nu mai e double bottom:</text>
<text x="206.0" y="320.0" fill="#c00" text-anchor="middle" style="font-weight:bold">ideea de la pasul 1 a murit,</text>
<text x="206.0" y="334.0" fill="#c00" text-anchor="middle" style="font-weight:bold">nu mai ai ce aștepta</text>
<polyline points="370.0,124.0 376.0,124.0 376.0,228.0 370.0,228.0" fill="none" stroke="#c00" stroke-width="1.5"/><text x="382.0" y="180.0" fill="#c00" style="font-weight:bold">1R = 2.60 $</text><text x="24" y="379" fill="#333">Mărimea, cu aceeași regulă ca la buy hammer: 2 % dintr-un cont de 10.000 $ = 200 $;</text><text x="24" y="395" fill="#333">200 / 2.60 = 76.9 → 76 de acțiuni, pierdere maximă 197.60 $.</text><text x="24" y="411" fill="#555">87.30 e cifra materialului, nu marja mea de 5 cenți; suportul weekly 87.50 e construit de mine ca stopul</text><text x="24" y="427" fill="#555">acela să aibă sub ce sta. Materialul nu dă niciun procent fix de stop pentru MBT-10.</text></svg>

After

Width:  |  Height:  |  Size: 4.3 KiB

View File

@@ -105,7 +105,7 @@ assert "<svg" in svg and svg.count("\n\n") == 0, "linie goală în SVG"
m = re.search(r'viewBox="0 0 (\d+) (\d+)"', svg)
W, H = int(m.group(1)), int(m.group(2))
legenda = [
"Cifrele 311.21 / 333.00 / +7.0 % sunt reale (03_2026-08-11.md:118-120);",
"Cifrele 311.21 / 333.00 / +7.0 % sunt reale;",
"structura barelor dintre ele e construită.",
"SL: materialul nu îl dă pentru acest exemplu.",
]

View File

@@ -56,4 +56,4 @@
<rect x="399.5" y="284.8" width="9" height="15.0" fill="#188a3e"/>
<text x="269.0" y="444.2" fill="#188a3e" text-anchor="middle" style="font-weight:bold">trigger MBT-10</text>
<text x="359.0" y="232.5" fill="#1a5fb4" text-anchor="middle" style="font-weight:bold">exact 6 bare</text>
<text x="24" y="468" fill="#555">Cifrele 311.21 / 333.00 / +7.0 % sunt reale (03_2026-08-11.md:118-120);</text><text x="24" y="484" fill="#555">structura barelor dintre ele e construită.</text><text x="24" y="500" fill="#555">SL: materialul nu îl dă pentru acest exemplu.</text></svg>
<text x="24" y="468" fill="#555">Cifrele 311.21 / 333.00 / +7.0 % sunt reale;</text><text x="24" y="484" fill="#555">structura barelor dintre ele e construită.</text><text x="24" y="500" fill="#555">SL: materialul nu îl dă pentru acest exemplu.</text></svg>

Before

Width:  |  Height:  |  Size: 4.9 KiB

After

Width:  |  Height:  |  Size: 4.9 KiB

View File

@@ -1257,6 +1257,6 @@ reinvestirea; cad BIM/trigger-ul proprietar, universul de indici US, levierul
<li>Risc și execuție: <a href="A1_risc.html"><code>A1_risc.md</code></a>.</li>
<li>Contradicțiile din material, toate la un loc:
<a href="A2_contradictii.html"><code>A2_contradictii.md</code></a>.</li>
</ul><nav class="pager"><a class="prev" href="04_selectia.html">← 04. 4. Selecția simbolului (pe ce te uiți, înainte de orice strategie)</a><a class="up" href="../index.html#17_STRATEGII">↑ index</a><a class="next" href="06_hammer_mbt10.html">06. 6. Buy hammer si MBT-10 →</a></nav>
</ul><nav class="pager"><a class="prev" href="04_selectia.html">← 04. 4. Selecția simbolului (pe ce te uiți, înainte de orice strategie)</a><a class="up" href="../index.html#17_STRATEGII">↑ index</a><a class="next" href="06_hammer_mbt10.html">06. 6. Buy hammer și MBT-10 →</a></nav>
</body>
</html>

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -1597,6 +1597,6 @@ zonă), <a href="02_mp2.html"><code>02_mp2.md</code></a> (unde; MDSRT adaugă de
<li>[ ] (6) Ținta 1 = distanța stopului; breakeven după jumătatea drumului; restul pe trail, citit pe candelă închisă.</li>
<li>[ ] NU intru dacă: nu e nivel sub piciorul 2, Power nu diverge, trigger-ul a apărut deasupra zonei, sau candela închide sub nivel și sub primul low.</li>
<li>[ ] Short: preț peste 10 $, piață slabă, toate regulile întoarse.</li>
</ul><nav class="pager"><a class="prev" href="06_hammer_mbt10.html">← 06. 6. Buy hammer si MBT-10</a><a class="up" href="../index.html#17_STRATEGII">↑ index</a><a class="next" href="08_mbp.html">08. 8. MBP / Mbappé (Strategia 6) →</a></nav>
</ul><nav class="pager"><a class="prev" href="06_hammer_mbt10.html">← 06. 6. Buy hammer și MBT-10</a><a class="up" href="../index.html#17_STRATEGII">↑ index</a><a class="next" href="08_mbp.html">08. 8. MBP / Mbappé (Strategia 6) →</a></nav>
</body>
</html>

View File

@@ -111,6 +111,6 @@ tranșe / ieșire anticipată, neacoperite: <code>main</code>: 170-179; (5) data
atingerii TP1 (ASR): <code>main</code>: 358-363; (6) extinderea acronimului „ATMI" nu
apare nicăieri în material.</p>
<p><strong>Legături</strong> — <code>26_2025-06-11</code>: 915-917 (autorul recomandă combinarea ATMI cu
MP² la suport/pivot important).</p><nav class="pager"><a class="prev" href="04_selectia_surse.html">← 04. Surse — 4. Selecția simbolului</a><a class="up" href="../../index.html#17_STRATEGII">↑ index</a><a class="next" href="07_mdsrt_surse.html">07. Surse — 7. MDSRT →</a></nav>
MP² la suport/pivot important).</p><nav class="pager"><a class="prev" href="04_selectia_surse.html">← 04. Surse — 4. Selecția simbolului</a><a class="up" href="../../index.html#17_STRATEGII">↑ index</a><a class="next" href="06_hammer_mbt10_surse.html">06. Surse — 6. Buy hammer și MBT-10 →</a></nav>
</body>
</html>

View File

@@ -0,0 +1,166 @@
<!DOCTYPE html>
<html lang="ro">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Surse — 6. Buy hammer și MBT-10</title>
<style>
body { max-width: 720px; margin: 0 auto; padding: 16px 20px 60px;
font: 18px/1.55 -apple-system, Segoe UI, Roboto, sans-serif;
color: #1a1a1a; }
h1 { font-size: 1.4em; }
h2 { font-size: 1.15em; margin-top: 1.6em; border-top: 1px solid #ddd; padding-top: .8em; }
code { font-size: .95em; background: #f0f0f0; padding: .1em .3em; border-radius: 3px; }
a { color: #1a5fb4; }
hr { border: none; border-top: 1px solid #ddd; margin: 2em 0; }
em { color: #555; }
table { border-collapse: collapse; width: 100%; margin: 1.4em 0;
font-size: .92em; display: block; overflow-x: auto; }
th, td { border: 1px solid #ccc; padding: .5em .7em; text-align: left;
vertical-align: top; }
th { background: #eceff3; font-weight: 600; }
tbody tr:nth-child(even) td { background: #f7f8fa; }
nav { font-size: .8em; color: #888; line-height: 1.5; }
nav a { color: #777; text-decoration: none; }
nav a:hover { text-decoration: underline; }
.crumbs { padding-bottom: .5em; border-bottom: 1px solid #eee; }
.crumbs .sep { margin: 0 .35em; color: #bbb; }
.pager { margin-top: 3em; padding-top: 1em; border-top: 1px solid #ddd;
display: flex; flex-wrap: wrap; gap: .6em 1em; justify-content: space-between; }
.pager a { overflow-wrap: anywhere; }
.pager .next { text-align: right; margin-left: auto; }
</style>
</head>
<body>
<nav class="crumbs"><a href="../../index.html">Sumarizări</a><span class="sep">/</span><a href="../../index.html#17_STRATEGII">Strategii</a><span class="sep">/</span>fișe<span class="sep">/</span>Surse — 6. Buy hammer și MBT-10</nav><h1 id="surse-6-buy-hammer-si-mbt-10">Surse — 6. Buy hammer și MBT-10</h1>
<p>Trimiterile la material pentru <a href="../06_hammer_mbt10.html"><code>06_hammer_mbt10.md</code></a>.
Stau aici, nu în capitol: în corpul tutorialului îngreunează cititul, dar
fără ele nu se mai poate verifica nimic. Cifrele sunt linii din fișierele de
sumarizare, nu din transcrieri.</p>
<p>Textul fără trimitere e explicația mea și nu adaugă reguli; ce completez eu
începe cu <strong>Completare proprie</strong>. Diagramele sunt exemple construite, cu două
excepții: LABU (real e doar „+20 % în jumătate de lună") și Tesla (reale sunt
311.21, 333.00 și +7,0 %).</p>
<p><strong>Prescurtări:</strong>
<code>mbt</code> = <a href="../../08_ANALIZA_ZILNICA/02_mbt10.html"><code>02_mbt10.md</code></a>
(fișierul principal al strategiei; toate setup-urile și exemplele
construite) ·
<code>sinteza</code> = <a href="../../08_ANALIZA_ZILNICA/10_sinteza.html"><code>10_sinteza.md</code></a> ·
<code>earnings</code> = <a href="../../08_ANALIZA_ZILNICA/09_earnings_si_optiuni.html"><code>09_earnings_si_optiuni.md</code></a> ·
<code>mici</code> = <a href="../../08_ANALIZA_ZILNICA/01_buy_doji_si_strategia_mici.html"><code>01_buy_doji_si_strategia_mici.md</code></a> ·
<code>volum</code> = <a href="../../08_ANALIZA_ZILNICA/05_volum.html"><code>05_volum.md</code></a> ·
<code>crimei</code> = <a href="../../08_ANALIZA_ZILNICA/03_locul_crimei_si_pullback.html"><code>03_locul_crimei_si_pullback.md</code></a> ·
<code>context</code> = <a href="../../08_ANALIZA_ZILNICA/07_context_de_piata.html"><code>07_context_de_piata.md</code></a> ·
<code>pattern</code> = <a href="../../01_MODUL_1/05_patternuri_candele.html"><code>05_patternuri_candele.md</code></a>
(definiția hammer, trigger, SL/TP, hanging man) ·
<code>scaner</code> = <a href="../../03_MODUL_2/11_construire_scanere_sf_byd_sld.html"><code>11_construire_scanere_sf_byd_sld.md</code></a> ·
<code>byh</code> = <a href="../../03_MODUL_2/13_strategia_3_byh.html"><code>13_strategia_3_byh.md</code></a> ·
<code>filtre</code> = <a href="../../04_MODUL_3/01_filtre_scaner_bull_bear_reversal_pp.html"><code>01_filtre_scaner_bull_bear_reversal_pp.md</code></a> ·
<code>mdsrt</code> = <a href="../../05_MODUL_4/02_strategia_5_mdsrt.html"><code>02_strategia_5_mdsrt.md</code></a> ·
<code>mbp</code> = <a href="../../05_MODUL_4/03_strategia_6_mbp_mbappe.html"><code>03_strategia_6_mbp_mbappe.md</code></a> ·
<code>mm</code> = <a href="../../03_MODUL_2/04_money_management_position_sizing.html"><code>04_money_management_position_sizing.md</code></a> ·
<code>DECIZII</code> = <a href="../../../triaj/DECIZII.md"><code>triaj/DECIZII.md</code></a> (registrul de triaj
al materialului) ·
fișa capitolului: <a href="mbt10.html"><code>fise/mbt10.md</code></a> ·
fișierele datate sunt sesiuni Q&amp;A din <code>../../09_QA/</code>.</p>
<h2 id="nivelul-1">Nivelul 1</h2>
<p><strong>De ce sunt două jumătăți</strong> — <code>mbt</code>: 5-11, 21-39, 34-35, 179-188, 213-218,
853-863, 978-989 · <code>sinteza</code>: 802-809 · <code>01_2026-08-25</code>: 856-861 ·
<code>pattern</code>: 77-88, 99-124.</p>
<p><strong>Ce e un hammer</strong> — <code>pattern</code>: 77-80, 79-88 (exemplul O 63.05 / H = C 63.30 /
L 62.10), 91-92. Pragul „corpul în treimea de sus" e completarea mea; cursul
spune doar „corp mic sus, fitil de sus aproape inexistent" (<code>pattern</code>: 79-80).</p>
<p><strong>Ce face buy hammer</strong> — <code>pattern</code>: 99-124 (trigger), 210-215 (exemplul cu
cifre: intrare 63.35, SL 62.05, TP 65.95), 213 (locul stopului) ·
<code>mici</code>: 146-152 (65-70 %) · <code>26_2025-06-11</code>: 498-508 (mecanismul fitilului),
711-715 („așa la 60 %").</p>
<p><strong>Ce face MBT-10</strong> — <code>mbt</code>: 5-11 (ce e), 43-60, 51, 165-173 (exemplul
construit 52.10 / 54.60 / 52.00 / 58.90), 7-8 și 70-71 („în formare" nu e
semnal) · <code>crimei</code>: pentru noțiunea de loc al crimei.</p>
<p><strong>Mini-glosar</strong> — hanging man și inverted hammer: <code>pattern</code>: 77-80, 254-265,
1118-1120 · nivel major: <code>26_2025-06-11</code>: 701-703; <code>pattern</code>: 1115-1117 ·
pivotul daily: <code>mbt</code>: 179-195, 213-218 · locul crimei: <code>mbt</code>: 165-168 ·
divergență de volum: <code>mbt</code>: 469-474; <code>volum</code>: 2169 · gap: <code>crimei</code>: 335;
<code>earnings</code>: 502-508 · earnings / gamble trade: <code>earnings</code>: 36-37, 43-45,
77-80, 166-174 · short covering: <code>26_2025-06-11</code>: 507-508 · 2 %: <code>mm</code>: 4-11,
28-34.</p>
<p><strong>Fraza de decizie (hammer)</strong> — <code>pattern</code>: 99-124, 213 · <code>mbp</code>: 93-97 ·
<code>mdsrt</code>: 174, 322-324, 342. <strong>(MBT-10)</strong> — <code>mbt</code>: 5-11, 179-195, 347-350.</p>
<h2 id="nivelul-2a-buy-hammer">Nivelul 2A — buy hammer</h2>
<p><strong>Filtrul de listă</strong> — <code>scaner</code>: 70-73 (volum mediu ≥ 500.000, preț 30-40 $) ·
<code>28_2025-05-27</code>: 372-380, 400 (sub 10 $ nu se shortează) · <code>earnings</code>: 43-45
(veto de eveniment).</p>
<p><strong>Pasul A1</strong> — <code>pattern</code>: 77-80 (fără downtrend nu e reversal), 79-88 (forma),
254-265 (hanging man), 1118-1120.</p>
<p><strong>Pasul A2</strong> — <code>26_2025-06-11</code>: 701-703 („contează mult mai mult la un suport
important [...] decât în mijlocul range-ului"), 505 · <code>pattern</code>: 1115-1117 ·
<code>volum</code>: 1024. Pragul de 1-2 % e împrumutat de la buy doji (<code>byh</code>: 188-190) și
marcat ca atare — materialul nu dă unul pentru hammer.</p>
<p><strong>Pasul A3</strong> — <code>pattern</code>: 99-124 (trigger valid, prea devreme, invalidat),
102-124 · <code>26_2025-06-11</code>: 507-508 (mecanismul) · <code>scaner</code>: 30 (<code>BHATM = 0</code>),
63-73, 115-116 · <code>earnings</code>: 502-508 (hammer în gap: low 64.30, close 66.90,
SL 64.10).</p>
<p><strong>Pasul A4</strong> — <code>pattern</code>: 210-215 (risc 1.30), 213 (de ce acolo), 217-219
(2 % din 10.000 $ = 200 $ → 153 de acțiuni) · <code>earnings</code>: 167-169 (stop sub
double bottom), 504-505 (stop sub hammer, în gap) · <code>mm</code>: 4-11, 28-34.</p>
<p><strong>Pasul A5</strong> — <code>pattern</code>: 1121-1122 („un pattern nu îți spune cât de departe
merge prețul"), 210-215 (TP 65.95 = 2R) · <code>mbp</code>: 93-97 (TP1 1:1, apoi trail) ·
<code>mdsrt</code>: 174, 322-324, 342 (target simetric + trail) · <code>earnings</code>: 167-171,
504-508 · <code>crimei</code>: 335 (ținta la gap).</p>
<p><strong>Oglinda pe short</strong> — <code>mdsrt</code>: 330-342 (Sell Hammer ca simetric, „nemenționat
explicit ca nume dar simetric cu Buy Hammer") · <code>28_2025-05-27</code>: 372-380, 400.
Regulile scrise ale oglinzii sunt simetria aplicată de mine.</p>
<h2 id="nivelul-2b-mbt-10">Nivelul 2B — MBT-10</h2>
<p><strong>Pasul B1</strong> — <code>mbt</code>: 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) · <code>volum</code>: 2169.</p>
<p><strong>Pasul B2</strong> — <code>mbt</code>: 7-8, 70-71, 243-330 (intraday 55.30, close 52.90, a doua
zi 51.50), 325-330, 929-930 · <code>04_2026-08-04</code>: 298-333, 317 („dacă se închide,
e mișto de intrat").</p>
<p><strong>Pasul B3</strong> — <code>mbt</code>: 179-188 („prima componentă din MBT-10"), 183-195,
199-211, 213-218 · <code>sinteza</code>: 802-809 · <code>DECIZII</code>: 50, 124-127.</p>
<p><strong>Pasul B4</strong> — <code>mbt</code>: 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
cifrele sunt ale sumarizatorului) · <code>mm</code>: 4-11, 28-34 · <code>sinteza</code>: 395-396
(exemplul de sizing 25 / 2.00 → 12 acțiuni) · <code>03_2026-08-11</code>: 146-152,
173-178. Mărimea minimă de cont și riscul per trade la MBT-10:
<strong>neacoperite</strong> (<code>fise/mbt10.md</code>: 38).</p>
<p><strong>Pasul B5</strong> — <code>mbt</code>: 173 (58.90 = 1.65R), 451 (95.20 = 2.0R), 624 (39.20 =
3.6R), 733 (70.60 = 4.7R), 845-846 (54.00 = 1.8R), 876 (reintrarea după primul
target), 631-633, 978-984. <strong>Regulă de TP proprie: neacoperită în material.</strong></p>
<h2 id="nivelul-3">Nivelul 3</h2>
<p><strong>A+ la hammer</strong> — <code>26_2025-06-11</code>: 699-703, 711-719 · <code>pattern</code>: 254-265,
1115-1117 · <code>volum</code>: 2169 · <code>earnings</code>: 77-80 · <code>filtre</code>: 19-25, 44-52, 64-69
(Bear Reversal e selectat implicit) · <code>mici</code>: 50, 543-545, 838-839 ·
<code>06_2026-04-28</code>: 140 (confluența higher low + buy hammer) ·
<code>11_2025-11-25</code>: 207 (low-ul zilei e de obicei un doji sau un hammer) ·
<code>DECIZII</code>: 107-110, 118.</p>
<p><strong>A+ la MBT-10</strong> — <code>mbt</code>: 14-15, 461-474, 933-935, 938-941 (spike low) ·
<code>DECIZII</code>: 130 (regula 02.4), 183, 319-320.</p>
<p><strong>Gap down</strong> — <code>mbt</code>: 16-17, 639-641, 728-734, 931-932 · <code>03_2026-08-11</code>:
146-152, 173-178.</p>
<p><strong>Cascada</strong> — <code>04_2026-08-04</code>: 322-350 · <code>mbt</code>: 858-860 · <code>DECIZII</code>: 93.</p>
<p><strong>LABU</strong> — <code>18_2025-09-23</code>: 721-726 (singura cifră reală: +20 % în jumătate de
lună; „din suportul nostru monthly a plecat"). Entry / SL / TP: <strong>nedate</strong>.</p>
<p><strong>Tesla</strong> — <code>03_2026-08-11</code>: 118-131 (intrare 311.21, ieșire 333.00, +7,0 %,
opțiuni 50-70 %). SL: <strong>nedat</strong>. <strong>Oracle</strong> — <code>earnings</code>: 77-80 (fără prețuri).</p>
<p><strong>Transfer</strong> — <code>26_2025-06-11</code>: 214-222 (regula generală de prop) ·
<code>mbt</code>: 886-888 (veto de eveniment), 16-17, 736-740 · <code>mm</code>: 4-11 ·
<code>scaner</code>: 70-73, 296-304 · <code>09_2025-12-09</code>: 1177-1180 (pivoții se calculează
„1 la 1" pe BVB) · <code>28_2025-05-27</code>: 372-380. Pragurile BVB, universul de
8-12 nume, cifrele de sizing și procentele „cât supraviețuiește" sunt
<strong>estimarea mea</strong>; materialul nu dă niciun prag pentru BVB.</p>
<p><strong>Contradicțiile</strong> — (1) <code>mbt</code>: 196-198 vs. 199-211; <code>sinteza</code>: 802-809;
(2) <code>scaner</code>: 30 vs. <code>pattern</code>: 99-124; (3) <code>mbt</code>: 858-860 vs. <code>sinteza</code>:
645-668; <code>04_2026-08-04</code>: 322-350; (4) <code>mbt</code>: 461-474 vs. <code>sinteza</code>: 718-727,
726-734; (5) <code>mici</code>: 146-152 („în 70% din cazuri 65-70% din cazuri va
funcționa" [sic]) vs. <code>26_2025-06-11</code>: 711-715; (6) <code>mbt</code>: 21-39, 978-989;
<code>sinteza</code>: 802-809.</p>
<p><strong>Alte mențiuni</strong> — merge pe orice piață (Forex, Bitcoin, aur, bonduri),
pentru că e price action pe pivoți: <code>01_2026-08-25</code>: 856-865 · hammer folosit
și pe SPY 5 min: <code>24_2025-07-15</code>: 13, 128, 140; <code>context</code>: 1199-1201 ·
backtesting: <code>11_2025-11-25</code>: 207.</p><nav class="pager"><a class="prev" href="05_atmi_surse.html">← 05. Surse — 5. ATMI</a><a class="up" href="../../index.html#17_STRATEGII">↑ index</a><a class="next" href="07_mdsrt_surse.html">07. Surse — 7. MDSRT →</a></nav>
</body>
</html>

View File

@@ -0,0 +1,164 @@
# Surse — 6. Buy hammer și MBT-10
Trimiterile la material pentru [`06_hammer_mbt10.md`](../06_hammer_mbt10.md).
Stau aici, nu în capitol: în corpul tutorialului îngreunează cititul, dar
fără ele nu se mai poate verifica nimic. Cifrele sunt linii din fișierele de
sumarizare, nu din transcrieri.
Textul fără trimitere e explicația mea și nu adaugă reguli; ce completez eu
începe cu **Completare proprie**. Diagramele sunt exemple construite, cu două
excepții: LABU (real e doar „+20 % în jumătate de lună") și Tesla (reale sunt
311.21, 333.00 și +7,0 %).
**Prescurtări:**
`mbt` = [`02_mbt10.md`](../../08_ANALIZA_ZILNICA/02_mbt10.md)
(fișierul principal al strategiei; toate setup-urile și exemplele
construite) ·
`sinteza` = [`10_sinteza.md`](../../08_ANALIZA_ZILNICA/10_sinteza.md) ·
`earnings` = [`09_earnings_si_optiuni.md`](../../08_ANALIZA_ZILNICA/09_earnings_si_optiuni.md) ·
`mici` = [`01_buy_doji_si_strategia_mici.md`](../../08_ANALIZA_ZILNICA/01_buy_doji_si_strategia_mici.md) ·
`volum` = [`05_volum.md`](../../08_ANALIZA_ZILNICA/05_volum.md) ·
`crimei` = [`03_locul_crimei_si_pullback.md`](../../08_ANALIZA_ZILNICA/03_locul_crimei_si_pullback.md) ·
`context` = [`07_context_de_piata.md`](../../08_ANALIZA_ZILNICA/07_context_de_piata.md) ·
`pattern` = [`05_patternuri_candele.md`](../../01_MODUL_1/05_patternuri_candele.md)
(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) ·
`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) ·
`mm` = [`04_money_management_position_sizing.md`](../../03_MODUL_2/04_money_management_position_sizing.md) ·
`DECIZII` = [`triaj/DECIZII.md`](../../../triaj/DECIZII.md) (registrul de triaj
al materialului) ·
fișa capitolului: [`fise/mbt10.md`](mbt10.md) ·
fișierele datate sunt sesiuni Q&A din `../../09_QA/`.
## Nivelul 1
**De ce sunt două jumătăți** — `mbt`: 5-11, 21-39, 34-35, 179-188, 213-218,
853-863, 978-989 · `sinteza`: 802-809 · `01_2026-08-25`: 856-861 ·
`pattern`: 77-88, 99-124.
**Ce e un hammer** — `pattern`: 77-80, 79-88 (exemplul O 63.05 / H = C 63.30 /
L 62.10), 91-92. Pragul „corpul în treimea de sus" e completarea mea; cursul
spune doar „corp mic sus, fitil de sus aproape inexistent" (`pattern`: 79-80).
**Ce face buy hammer** — `pattern`: 99-124 (trigger), 210-215 (exemplul cu
cifre: intrare 63.35, SL 62.05, TP 65.95), 213 (locul stopului) ·
`mici`: 146-152 (65-70 %) · `26_2025-06-11`: 498-508 (mecanismul fitilului),
711-715 („așa la 60 %").
**Ce face MBT-10** — `mbt`: 5-11 (ce e), 43-60, 51, 165-173 (exemplul
construit 52.10 / 54.60 / 52.00 / 58.90), 7-8 și 70-71 („în formare" nu e
semnal) · `crimei`: pentru noțiunea de loc al crimei.
**Mini-glosar** — hanging man și inverted hammer: `pattern`: 77-80, 254-265,
1118-1120 · nivel major: `26_2025-06-11`: 701-703; `pattern`: 1115-1117 ·
pivotul daily: `mbt`: 179-195, 213-218 · locul crimei: `mbt`: 165-168 ·
divergență de volum: `mbt`: 469-474; `volum`: 2169 · gap: `crimei`: 335;
`earnings`: 502-508 · earnings / gamble trade: `earnings`: 36-37, 43-45,
77-80, 166-174 · short covering: `26_2025-06-11`: 507-508 · 2 %: `mm`: 4-11,
28-34.
**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).
**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 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,
SL 64.10).
**Pasul A4** — `pattern`: 210-215 (risc 1.30), 213 (de ce acolo), 217-219
(2 % din 10.000 $ = 200 $ → 153 de acțiuni) · `earnings`: 167-169 (stop sub
double bottom), 504-505 (stop sub hammer, în gap) · `mm`: 4-11, 28-34.
**Pasul A5** — `pattern`: 1121-1122 („un pattern nu îți spune cât de departe
merge prețul"), 210-215 (TP 65.95 = 2R) · `mbp`: 93-97 (TP1 1:1, apoi trail) ·
`mdsrt`: 174, 322-324, 342 (target simetric + trail) · `earnings`: 167-171,
504-508 · `crimei`: 335 (ținta la gap).
**Oglinda pe short** — `mdsrt`: 330-342 (Sell Hammer ca simetric, „nemenționat
explicit ca nume dar simetric cu Buy Hammer") · `28_2025-05-27`: 372-380, 400.
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.
**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
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:
**neacoperite** (`fise/mbt10.md`: 38).
**Pasul B5** — `mbt`: 173 (58.90 = 1.65R), 451 (95.20 = 2.0R), 624 (39.20 =
3.6R), 733 (70.60 = 4.7R), 845-846 (54.00 = 1.8R), 876 (reintrarea după primul
target), 631-633, 978-984. **Regulă de TP proprie: neacoperită în material.**
## Nivelul 3
**A+ la hammer** — `26_2025-06-11`: 699-703, 711-719 · `pattern`: 254-265,
1115-1117 · `volum`: 2169 · `earnings`: 77-80 · `filtre`: 19-25, 44-52, 64-69
(Bear Reversal e selectat implicit) · `mici`: 50, 543-545, 838-839 ·
`06_2026-04-28`: 140 (confluența higher low + buy hammer) ·
`11_2025-11-25`: 207 (low-ul zilei e de obicei un doji sau un hammer) ·
`DECIZII`: 107-110, 118.
**A+ la MBT-10** — `mbt`: 14-15, 461-474, 933-935, 938-941 (spike low) ·
`DECIZII`: 130 (regula 02.4), 183, 319-320.
**Gap down** — `mbt`: 16-17, 639-641, 728-734, 931-932 · `03_2026-08-11`:
146-152, 173-178.
**Cascada** — `04_2026-08-04`: 322-350 · `mbt`: 858-860 · `DECIZII`: 93.
**LABU** — `18_2025-09-23`: 721-726 (singura cifră reală: +20 % în jumătate de
lună; „din suportul nostru monthly a plecat"). Entry / SL / TP: **nedate**.
**Tesla** — `03_2026-08-11`: 118-131 (intrare 311.21, ieșire 333.00, +7,0 %,
opțiuni 50-70 %). SL: **nedat**. **Oracle** — `earnings`: 77-80 (fără prețuri).
**Transfer** — `26_2025-06-11`: 214-222 (regula generală de prop) ·
`mbt`: 886-888 (veto de eveniment), 16-17, 736-740 · `mm`: 4-11 ·
`scaner`: 70-73, 296-304 · `09_2025-12-09`: 1177-1180 (pivoții se calculează
„1 la 1" pe BVB) · `28_2025-05-27`: 372-380. Pragurile BVB, universul de
8-12 nume, cifrele de sizing și procentele „cât supraviețuiește" sunt
**estimarea mea**; materialul nu dă niciun prag pentru BVB.
**Contradicțiile** — (1) `mbt`: 196-198 vs. 199-211; `sinteza`: 802-809;
(2) `scaner`: 30 vs. `pattern`: 99-124; (3) `mbt`: 858-860 vs. `sinteza`:
645-668; `04_2026-08-04`: 322-350; (4) `mbt`: 461-474 vs. `sinteza`: 718-727,
726-734; (5) `mici`: 146-152 („în 70% din cazuri 65-70% din cazuri va
funcționa" [sic]) vs. `26_2025-06-11`: 711-715; (6) `mbt`: 21-39, 978-989;
`sinteza`: 802-809.
**Alte mențiuni** — merge pe orice piață (Forex, Bitcoin, aur, bonduri),
pentru că e price action pe pivoți: `01_2026-08-25`: 856-865 · hammer folosit
și pe SPY 5 min: `24_2025-07-15`: 13, 128, 140; `context`: 1199-1201 ·
backtesting: `11_2025-11-25`: 207.

View File

@@ -125,6 +125,6 @@ față de 246. Toate, la un loc, în
numerice (marja de 0.10, intrarea la spargerea maximului, ținta 1:1); <code>picior</code>,
<code>trigger</code>, <code>stop</code>, <code>iesire</code> și <code>short</code> o importă de acolo, ca să nu existe două
reguli diferite în același capitol. <code>zona</code> desface două candele daily în 14
bare de 60 de minute, cu agregare verificată bară cu bară.</p><nav class="pager"><a class="prev" href="05_atmi_surse.html">← 05. Surse — 5. ATMI</a><a class="up" href="../../index.html#17_STRATEGII">↑ index</a><a class="next" href="08_mbp_surse.html">08. Surse — 8. MBP / Mbappé →</a></nav>
bare de 60 de minute, cu agregare verificată bară cu bară.</p><nav class="pager"><a class="prev" href="06_hammer_mbt10_surse.html">← 06. Surse — 6. Buy hammer și MBT-10</a><a class="up" href="../../index.html#17_STRATEGII">↑ index</a><a class="next" href="08_mbp_surse.html">08. Surse — 8. MBP / Mbappé →</a></nav>
</body>
</html>

File diff suppressed because one or more lines are too long