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) m = re.search(r'viewBox="0 0 (\d+) (\d+)"', svg)
W, H = int(m.group(1)), int(m.group(2)) W, H = int(m.group(1)), int(m.group(2))
legenda = [ legenda = [
"Exemplu ilustrativ (XYZ) din lecția de pattern (01_MODUL_1/05_patternuri_candele.md:210-215);", "Exemplu ilustrativ (XYZ) din lecția de pattern; prețurile sunt cele ale lecției,",
"prețurile sunt cele ale lecției, structura barelor dintre ele e construită.", "structura barelor dintre ele e construită.",
] ]
extra = 16 * len(legenda) + 6 extra = 16 * len(legenda) + 6
svg = svg.replace(f'viewBox="0 0 {W} {H}"', f'viewBox="0 0 {W} {H + extra}"') 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="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="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="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)], Mark(CONF_A, "acumulare", GREEN, "above", dy=-26)],
mas=[], scale=SCALE, gap=15, body_w=9, left=44, width=PW, vol_h=60, mas=[], scale=SCALE, gap=15, body_w=9, left=44, width=PW, vol_h=60,
vol_label="volum", vol_label="volum",
title="A+ — hammer la suport monthly, volum în acumulare", title="A+ — hammer la suport monthly",
caption="bara 13: 42.95 > high 42.90, pe volum peste medie.", caption="bara 13: 42.95 peste 42.90, volum bun.",
) )
ch_n = Chart( ch_n = Chart(
candles=cds_n, candles=cds_n,
@@ -166,8 +166,8 @@ ch_n = Chart(
Mark(CONF_N, "volum slab", RED, "above", dy=0)], Mark(CONF_N, "volum slab", RED, "above", dy=0)],
mas=[], scale=SCALE, gap=15, body_w=9, left=44, width=PW, vol_h=60, mas=[], scale=SCALE, gap=15, body_w=9, left=44, width=PW, vol_h=60,
vol_label="volum", vol_label="volum",
title="Mediocru — hammer în mijloc de range, fără nivel", title="Mediocru — hammer fără nivel",
caption="bara 13: 45.15 > 45.10, dar pe volum slab.", caption="bara 13: 45.15 peste 45.10, volum slab.",
) )
# ============================================================ wrapper: două panouri alăturate # ============================================================ wrapper: două panouri alăturate
@@ -195,8 +195,8 @@ OFF_A = (PAD, PAD + TITLE_H)
OFF_N = (PAD + PW + PANEL_GAP, PAD + TITLE_H) OFF_N = (PAD + PW + PANEL_GAP, PAD + TITLE_H)
TOP_TITLE = "Buy hammer A+ vs. mediocru (două panouri, exemple construite)" 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), " FOOTER1 = ("Reguli din curs: locația la un nivel major, scăderea dinainte și volumul; "
"05_patternuri_candele.md:77-80, 05_volum.md:2169.") "trimiterile stau în fișa de surse.")
FOOTER2 = ("Nivelurile 42.00 / 42.50 și cifrele de preț sunt construite " FOOTER2 = ("Nivelurile 42.00 / 42.50 și cifrele de preț sunt construite "
"(materialul nu dă prețuri pentru acest contrast).") "(materialul nu dă prețuri pentru acest contrast).")
FOOTER = FOOTER1 + " " + FOOTER2 FOOTER = FOOTER1 + " " + FOOTER2
@@ -270,8 +270,8 @@ for i in range(len(all_txt)):
# etichetele cerute de spec există în desen # etichetele cerute de spec există în desen
for cheie in ("suport monthly 42.00", "hammer la nivel", "acumulare", for cheie in ("suport monthly 42.00", "hammer la nivel", "acumulare",
"fără nivel apropiat (suport 42.50 la −3,6 %)", "volum slab", "fără nivel apropiat (suport 42.50 la −3,6 %)", "volum slab",
"A+ — hammer la suport monthly, volum în acumulare", "A+ — hammer la suport monthly",
"Mediocru — hammer în mijloc de range, fără nivel"): "Mediocru — hammer fără nivel"):
assert cheie in wrapper, f"lipsește din desen: {cheie!r}" assert cheie in wrapper, f"lipsește din desen: {cheie!r}"
OUT.write_text(wrapper, encoding="utf-8") 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)"> <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"/> <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> <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"/> <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="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="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="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)"> </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"/> <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> <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"/> <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="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="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="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> <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: 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> </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ă) # (nume, o, h, l, c, verdict, rânduri de etichetă sub candelă)
CANDLES = [ CANDLES = [
("A", 63.05, H, L, 63.30, "DA", ["DA: corp 0.25,", "fitil jos 0.95 = 3,8x corpul"]), ("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"]), ("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"]), ("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> <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"/> <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"/> <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="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">fitil jos 0.80 = exact 2x</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"/> <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"/> <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> <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 = [ linii = [
("Trail-ul urcă doar sub un swing low nou — 63.05, apoi 65.10, apoi 66.00 — și nu coboară " ("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"), "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 " ("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 e construită.", GREY), ("exemplului din lecție. Continuarea barelor de după 33 e construită.", GREY),
] ]
add = 16 * len(linii) + 10 add = 16 * len(linii) + 10
svg = svg.replace(f'viewBox="0 0 {W} {H}"', f'viewBox="0 0 {W} {H + add}"') 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> <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"/> <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> <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"/> <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="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> <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 " cds[1].note = ("bara 24 = confirmare: close 81.30 — close peste high-ul "
"hammer-ului 80.90 = intrare 81.30 (construit)") "hammer-ului 80.90 = intrare 81.30 (construit)")
cds[2].note = ("Procentul (+20 % în jumătate de lună) și contextul (suport " 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() svg = ch.render()
assert "\n\n" not in svg and "<svg" in svg, "SVG invalid (linie goală?)" 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="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="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="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> <text x="24" y="379" fill="#555">nivelurile de preț sunt construite de sumarizator.</text>
</svg> </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(".", ",") PCT_DA, PCT_NU = f"{d_da:.2f}".replace(".", ","), f"{d_nu:.2f}".replace(".", ",")
y_bot = y(SUP_NU) y_bot = y(SUP_NU)
parts = [ 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">', 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 ' '<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>', 'î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), *level(PX[1], SUP_NU, "baza range-ului 58.00", BLUE, below=True),
body_da, body_nu, body_da, body_nu,
f'<text x="24" y="{y_bot + 34:.0f}" fill="{GREY}">Completare proprie: materialul cere ' 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 ' '„un nivel major (weekly / monthly / quarterly), nu mijlocul</text>',
'numeric.</text>', f'<text x="24" y="{y_bot + 50:.0f}" fill="{GREY}">range-ului", dar nu dă un prag numeric. '
f'<text x="24" y="{y_bot + 52:.0f}" fill="{GREY}">Pragul de 1-2 % e împrumutat de la buy ' f'Pragul de 1-2 % e împrumutat de la buy doji, ca să ai ce</text>',
f'doji, ca să ai ce măsura: aici {PCT_DA} % în stânga, {PCT_NU} % în dreapta.</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>",
] ]
svg = "\n ".join(parts).replace("\n </svg>", "\n</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): 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)}" 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") 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="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="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> <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="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="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="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="404" fill="#555">Completare proprie: materialul cere „un nivel major (weekly / monthly / quarterly), nu mijlocul</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="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> </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ă", 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), 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", 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, 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)", 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"), ("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"200 $ / 1.30 $ pe acțiune = {200 / RISC:.1f} → {ACTIUNI} de acțiuni (rotunjit în jos); "
f"pierderea maximă {ACTIUNI * RISC:.2f} $.", "#333"), f"pierderea maximă {ACTIUNI * RISC:.2f} $.", "#333"),
("Cei 5 cenți de sub low sunt marja folosită în tot capitolul pe exemplele construite de " ("Cei 5 cenți de sub low sunt marja folosită în tot capitolul pe exemplele construite de mine;", GREY),
"mine; unde cifra vine din material, e spusă acolo.", GREY), ("unde cifra vine din material, e spusă acolo.", GREY),
] ]
extra = 16 * len(linii) + 10 extra = 16 * len(linii) + 10
svg = svg.replace(f'viewBox="0 0 {W} {H}"', f'viewBox="0 0 {W} {H + extra}"') 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"> <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="70" fill="#333" style="font-weight:bold">Buy hammer — stopul și mărimea poziției (daily, ticker ilustrativ XYZ)</text> <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="169.0" width="49.0" height="77.6" fill="#b06000" fill-opacity="0.08" stroke="#b06000" stroke-width="1"/> <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="95.4" fill="#b06000" style="font-weight:bold">cele două bare care dau stopul</text> <text x="257.3" y="89.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"/> <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="177.6" fill="#188a3e">intrare 63.35 (close-ul confirmării)</text> <text x="30" y="171.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"/> <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="234.8" fill="#c00">SL 62.05</text> <text x="30" y="228.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"/> <line x1="138.8" y1="85.2" x2="138.8" y2="122.6" stroke="#1a1a1a" stroke-width="1.2"/>
<rect x="132.3" y="102.2" width="13" height="13.2" fill="#188a3e"/> <rect x="132.3" y="96.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"/> <line x1="164.8" y1="85.2" x2="164.8" y2="157.8" stroke="#1a1a1a" stroke-width="1.2"/>
<rect x="158.3" y="102.2" width="13" height="48.4" fill="#c00"/> <rect x="158.3" y="96.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"/> <line x1="190.8" y1="133.6" x2="190.8" y2="188.6" stroke="#1a1a1a" stroke-width="1.2"/>
<rect x="184.3" y="150.6" width="13" height="30.8" fill="#c00"/> <rect x="184.3" y="144.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"/> <line x1="216.8" y1="151.2" x2="216.8" y2="188.6" stroke="#1a1a1a" stroke-width="1.2"/>
<rect x="210.3" y="168.2" width="13" height="13.2" fill="#188a3e"/> <rect x="210.3" y="162.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"/> <line x1="242.8" y1="151.2" x2="242.8" y2="204.0" stroke="#1a1a1a" stroke-width="1.2"/>
<rect x="236.3" y="168.2" width="13" height="28.6" fill="#c00"/> <rect x="236.3" y="162.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"/> <line x1="268.8" y1="179.8" x2="268.8" y2="232.6" stroke="#1a1a1a" stroke-width="1.2"/>
<rect x="262.3" y="185.8" width="13" height="11.0" fill="#188a3e"/> <rect x="262.3" y="179.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"/> <line x1="294.8" y1="171.0" x2="294.8" y2="186.4" stroke="#1a1a1a" stroke-width="1.2"/>
<rect x="288.3" y="183.6" width="13" height="2.2" fill="#188a3e"/> <rect x="288.3" y="177.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"/> <line x1="320.8" y1="146.8" x2="320.8" y2="190.8" stroke="#1a1a1a" stroke-width="1.2"/>
<rect x="314.3" y="163.8" width="13" height="19.8" fill="#188a3e"/> <rect x="314.3" y="157.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"/> <line x1="346.8" y1="129.2" x2="346.8" y2="171.0" stroke="#1a1a1a" stroke-width="1.2"/>
<rect x="340.3" y="146.2" width="13" height="17.6" fill="#188a3e"/> <rect x="340.3" y="140.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"/> <line x1="372.8" y1="111.6" x2="372.8" y2="153.4" stroke="#1a1a1a" stroke-width="1.2"/>
<rect x="366.3" y="128.6" width="13" height="17.6" fill="#188a3e"/> <rect x="366.3" y="122.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"/> <line x1="398.8" y1="111.6" x2="398.8" y2="144.6" stroke="#1a1a1a" stroke-width="1.2"/>
<rect x="392.3" y="128.6" width="13" height="8.8" fill="#c00"/> <rect x="392.3" y="122.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"/> <line x1="424.8" y1="98.4" x2="424.8" y2="144.6" stroke="#1a1a1a" stroke-width="1.2"/>
<rect x="418.3" y="115.4" width="13" height="22.0" fill="#188a3e"/> <rect x="418.3" y="109.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"/> <line x1="450.8" y1="85.2" x2="450.8" y2="122.6" stroke="#1a1a1a" stroke-width="1.2"/>
<rect x="444.3" y="102.2" width="13" height="13.2" fill="#188a3e"/> <rect x="444.3" y="96.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"/> <line x1="476.8" y1="72.0" x2="476.8" y2="109.4" stroke="#1a1a1a" stroke-width="1.2"/>
<rect x="470.3" y="89.0" width="13" height="13.2" fill="#188a3e"/> <rect x="470.3" y="83.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"/> <line x1="92.8" y1="288.6" x2="261.1" y2="238.9" stroke="#1a5fb4" stroke-width="1.8"/>
<polygon points="268.8,242.6 262.3,248.7 260.0,241.0" fill="#1a5fb4"/> <polygon points="268.8,236.6 262.3,242.7 260.0,235.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="302.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="316.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> <text x="92.8" y="330.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"/> <line x1="544.8" y1="66.0" x2="302.2" y2="164.0" stroke="#555" stroke-width="1.8"/>
<polygon points="294.8,173.0 299.7,165.5 303.7,172.5" fill="#555"/> <polygon points="294.8,167.0 300.7,160.3 303.7,167.7" 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="544.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="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="367.6" fill="#188a3e">bara 20: confirmare — close 63.35 peste high-ul hammer-ului 63.30 (intrare)</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,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> <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 ------------------------------------------------------------------ # --- desen ------------------------------------------------------------------
W, PW = 780, 358 W, PW = 780, 358
PX = [24, 24 + PW + 20] PX = [24, 24 + PW + 20]
SCALE, TOP, SHIFT = 26.0, 104, 34 SCALE, TOP, SHIFT = 26.0, 104, 60
panels, inalt = [], [] panels, inalt = [], []
for px, cds, (zt, zc), arr in ( for px, cds, (zt, zc), arr in (
@@ -79,13 +79,13 @@ H = int(max(inalt)) + SHIFT + 46
parts = [ parts = [
f'<svg viewBox="0 0 {W} {H}" xmlns="http://www.w3.org/2000/svg" ' f'<svg viewBox="0 0 {W} {H}" xmlns="http://www.w3.org/2000/svg" '
f'style="width:100%;height:auto;font:12px sans-serif">', 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>', '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>', '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>', '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, *panels,
f'<text x="24" y="{H - 26}" fill="{GREY}">Forma nu spune nimic singură: hammer-ul ' 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>', '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"> <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="24" fill="#333" style="font-weight:bold">Aceeași candelă, două contexte — daily, exemplu construit</text> <text x="24" y="20" 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="24" y="42" 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> <text x="402" y="42" fill="#c00" style="font-weight:bold">NU — după o urcare: hanging man</text>
<line x1="392" y1="40" x2="392" y2="463" stroke="#ccc"/> <line x1="392" y1="48" x2="392" y2="489" 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"/> <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> <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"/> <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"/> <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"/> <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="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> <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> <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"/> <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"/> <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"/> <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="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="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="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="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="525" fill="#555">e hanging man și are sensul opus. Prețurile sunt construite; regula de context e a cursului.</text>
</svg> </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 ----------------------------------------------------------------- # --- layout -----------------------------------------------------------------
W, PW = 760, 240 W, PW = 760, 240
PX = [12, 12 + PW + 14, 12 + 2 * (PW + 14)] PX = [12, 12 + PW + 14, 12 + 2 * (PW + 14)]
SCALE, TOP, SHIFT = 46.0, 96, 30 SCALE, TOP, SHIFT = 46.0, 96, 54
CFG = [ CFG = [
("DA", PX[0], GREEN, "DA — închide peste high", ("DA", PX[0], GREEN, "DA — închide peste high",
@@ -81,7 +81,7 @@ parts = [
'închide candela următoare — daily, exemplu construit</text>', 'închide candela următoare — daily, exemplu construit</text>',
] ]
for (k, px, col, titlu, _), corp in zip(CFG, bodies): 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")): for p, c, txt in ((H_HAM, ORANGE, "high 63.30"), (L_HAM, BLUE, "low 62.10")):
yy = y(p) yy = y(p)
parts.append(f'<line x1="{px}" y1="{yy:.1f}" x2="{px + PW}" y2="{yy:.1f}" ' 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>') f'{txt}</text>')
parts.append(corp) parts.append(corp)
for px in PX[1:]: 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 += [ parts += [
f'<text x="12" y="{H - 22}" fill="{GREY}">Regula e a lecției de pattern: intri la close-ul ' 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>', '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="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> <text x="12" y="38" 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"/> <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="238.3" fill="#b06000" text-anchor="end">high 63.30</text> <text x="250" y="262.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"/> <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="293.5" fill="#1a5fb4" text-anchor="end">low 62.10</text> <text x="250" y="317.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"/> <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"/> <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"/> <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"/> <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"/> <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="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="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> <text x="266" y="38" 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"/> <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="238.3" fill="#b06000" text-anchor="end">high 63.30</text> <text x="504" y="262.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"/> <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="293.5" fill="#1a5fb4" text-anchor="end">low 62.10</text> <text x="504" y="317.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"/> <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"/> <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"/> <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"/> <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="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="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="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> <text x="520" y="38" 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"/> <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="238.3" fill="#b06000" text-anchor="end">high 63.30</text> <text x="758" y="262.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"/> <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="293.5" fill="#1a5fb4" text-anchor="end">low 62.10</text> <text x="758" y="317.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"/> <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"/> <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"/> <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"/> <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="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="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> <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="259" y1="44" x2="259" y2="471" stroke="#ccc"/>
<line x1="513" y1="34" x2="513" y2="447" stroke="#ccc"/> <line x1="513" y1="44" x2="513" y2="471" 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="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="481" fill="#555">intraday peste 63.30, urmată de o închidere sub el, nu e trigger. Prețurile sunt construite.</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> </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, p.append(txt(BAR_X0 + PAD, BAR_Y + 66,
"divergență de volum — spun UNDE. Trigger-ul de candelă spune " "divergență de volum — spun UNDE. Trigger-ul de candelă spune "
"CÂND.", 13, "400", BLACK, "start")) "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")) 13, "400", GRAY, "end"))
# ------- conector bară -> cutii (un cot, fără săgeți redundante) # ------- conector bară -> cutii (un cot, fără săgeți redundante)
@@ -126,16 +126,16 @@ def build():
# ------- zona 2: cele două cutii # ------- zona 2: cele două cutii
left_rows = [ left_rows = [
(['„formă de candelă + downtrend”'], "05_patternuri_candele.md:77-88"), (['„formă de candelă + downtrend”'], ""),
(['„trigger: close peste', 'high-ul hammer-ului”'], (['„trigger: close peste', 'high-ul hammer-ului”'],
"05_patternuri_candele.md:99-124"), ""),
(['„fără niciun indicator proprietar”'], None), (['„fără niciun indicator proprietar”'], None),
] ]
right_rows = [ 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”'], (['„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( left_svg, left_area = box(
BOX_LX, "BUY HAMMER — pattern standard", BLUE, left_rows, 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", "Trigger de bottom: unde + când",
"Setup-urile de fond — suport, locul crimei, double bottom, buy doji,", "Setup-urile de fond — suport, locul crimei, double bottom, buy doji,",
"divergență de volum — spun UNDE. Trigger-ul de candelă spune CÂND.", "divergență de volum — spun UNDE. Trigger-ul de candelă spune CÂND.",
"02_mbt10.md:9-11, 43-49", "",
"BUY HAMMER — pattern standard", "BUY HAMMER — pattern standard",
"„formă de candelă + downtrend”", "„formă de candelă + downtrend”",
"05_patternuri_candele.md:77-88", "",
"„trigger: close peste", "„trigger: close peste",
"high-ul hammer-ului”", "high-ul hammer-ului”",
"05_patternuri_candele.md:99-124", "",
"„fără niciun indicator proprietar”", "„fără niciun indicator proprietar”",
"„pe BVB: se poate rula long-only”", "„pe BVB: se poate rula long-only”",
"MBT-10 — cutie neagră", "MBT-10 — cutie neagră",
"„formula nu e publică nicăieri”", "„formula nu e publică nicăieri”",
"02_mbt10.md:21-39", "",
"„reconstituibil doar:", "„reconstituibil doar:",
"close peste pivotul daily”", "close peste pivotul daily”",
"02_mbt10.md:179-188", "",
"„scanner + indicator proprietar”", "„scanner + indicator proprietar”",
"02_mbt10.md:853-863", "",
"„pe BVB: nu, ca sistem”", "„pe BVB: nu, ca sistem”",
"Ce rămâne pe BVB: hammer la un nivel major", "Ce rămâne pe BVB: hammer la un nivel major",
"+ close peste PPD", "+ 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="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="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="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="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="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"/> <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> <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"/> <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="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="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="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> <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"/> <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> <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> <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"/> <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="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="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="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="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"/> <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> <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"/> <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 # 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). # 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ă " 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 " 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 " cds[2].note = ("bara 9 = fostul vârf 52.10 (locul crimei); bara 21 = vârful "
"nou 58.90.") "nou 58.90.")
cds[3].note = ("bara 29 = hammer: o 52.20, h/c 53.40, l 52.10 (codița exact " 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="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="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="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="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 (02_mbt10.md:165-173, 978-984).</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="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> <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> </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 INTRARE, SL, TP = 89.90, 87.30, 95.20
R = round(INTRARE - SL, 2) R = round(INTRARE - SL, 2)
FUND1, FUND2 = 10, 15 # cele două picioare ale double bottom-ului 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 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.20, 87.70, 88.40, 89.10, # 9-12
88.60, 88.00, 87.65, 88.30, # 13-16 88.60, 88.00, 87.65, 88.30, # 13-16
88.90, 89.40, 89.90, # 17-19 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 # bara 18 atinge pivotul intraday, dar se închide sub el: contraexemplul
# de la pasul cu condiția de preț # de la pasul cu condiția de preț
w[CLOSE_I - 1] = (0.30, 0.25) 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) cds = from_closes(CLOSES, wicks=w, vols=VOLS, start=96.60)
assert len(cds) == len(VOLS) == 27 assert len(cds) == len(VOLS) == 27
for i in range(1, len(cds)): 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" 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) prim_tp = next(i for i in range(CLOSE_I + 1, len(cds)) if cds[i].h >= TP)
assert prim_tp == 26, prim_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 return cds

View File

@@ -10,10 +10,10 @@
<rect x="70.0" y="80.0" width="12" height="30.0" fill="#c00"/> <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"/> <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"/> <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"/> <line x1="120.0" y1="104.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"/> <rect x="114.0" y="110.0" width="12" height="24.0" fill="#188a3e"/>
<line x1="142.0" y1="116.0" x2="142.0" y2="174.5" stroke="#1a1a1a" stroke-width="1.2"/> <line x1="142.0" y1="110.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"/> <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"/> <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"/> <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"/> <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 = [ linii = [
"MBT-10 #1: intrare 64.80 / SL 63.20 — risc 1R în bani", "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ă)", "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.", "#2 singur dă 4.7R.",
"De aceea mărimea se împarte pe 2-3 încercări.", "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="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="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="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, candles=w,
levels=[Level(PPD, "pivotul daily 89.60", BLUE), levels=[Level(PPD, "pivotul daily 89.60", BLUE),
Level(SUP_W, "suport weekly 87.50", GREY, label_at="left")], 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=[ arrows=[
Arrow(sh(NU), "a atins 89.70 în timpul zilei,\ndar s-a închis la 89.40, sub pivot:\nnu e semnal", Arrow(sh(NU), "a atins 89.70 în timpul zilei,\ndar s-a închis la 89.40, sub pivot:\nnu e semnal",
where="below", color=RED, dx=-190, dy=40), where="below", color=RED, dx=-190, dy=40),
Arrow(sh(DA), "s-a închis la 89.90, peste pivot:\naici intri, la close-ul zilei", Arrow(sh(DA), "s-a închis la 89.90, peste pivot:\naici intri, la close-ul zilei",
where="above", color=GREEN, dx=-70, dy=-20), 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)", title="MBT-10 — condiția de preț: close peste pivotul daily (exemplu construit)",
) )
svg = ch.render() 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"> <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="48" fill="#333" style="font-weight:bold">MBT-10 — condiția de preț: close peste pivotul daily (exemplu construit)</text> <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="149.2" width="49.0" height="79.8" fill="#b06000" fill-opacity="0.08" stroke="#b06000" stroke-width="1"/> <rect x="293.0" y="168.0" width="49.0" height="85.0" 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="203.2" x2="672" y2="203.2" stroke="#1a5fb4" stroke-width="1.5" stroke-dasharray="4 3"/>
<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="197.2" fill="#1a5fb4" text-anchor="end">pivotul daily 89.60</text>
<text x="658" y="173.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"/>
<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="289.6" fill="#555">suport weekly 87.50</text>
<text x="30" y="265.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"/>
<line x1="70.5" y1="196.8" x2="70.5" y2="251.8" stroke="#1a1a1a" stroke-width="1.2"/> <rect x="64.0" y="229.6" width="13" height="35.2" fill="#c00"/>
<rect x="64.0" y="205.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"/>
<line x1="96.5" y1="232.0" x2="96.5" y2="267.2" stroke="#1a1a1a" stroke-width="1.2"/> <rect x="90.0" y="264.8" width="13" height="22.0" fill="#c00"/>
<rect x="90.0" y="240.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"/>
<line x1="122.5" y1="223.2" x2="122.5" y2="265.0" stroke="#1a1a1a" stroke-width="1.2"/> <rect x="116.0" y="256.0" width="13" height="30.8" fill="#188a3e"/>
<rect x="116.0" y="232.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"/>
<line x1="148.5" y1="192.4" x2="148.5" y2="243.0" stroke="#1a1a1a" stroke-width="1.2"/> <rect x="142.0" y="225.2" width="13" height="30.8" fill="#188a3e"/>
<rect x="142.0" y="201.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"/>
<line x1="174.5" y1="192.4" x2="174.5" y2="234.2" stroke="#1a1a1a" stroke-width="1.2"/> <rect x="168.0" y="225.2" width="13" height="22.0" fill="#c00"/>
<rect x="168.0" y="201.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"/>
<line x1="200.5" y1="214.4" x2="200.5" y2="260.6" stroke="#1a1a1a" stroke-width="1.2"/> <rect x="194.0" y="247.2" width="13" height="26.4" fill="#c00"/>
<rect x="194.0" y="223.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"/>
<line x1="226.5" y1="240.8" x2="226.5" y2="269.4" stroke="#1a1a1a" stroke-width="1.2"/> <rect x="220.0" y="273.6" width="13" height="15.4" fill="#c00"/>
<rect x="220.0" y="249.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"/>
<line x1="252.5" y1="227.6" x2="252.5" y2="267.2" stroke="#1a1a1a" stroke-width="1.2"/> <rect x="246.0" y="260.4" width="13" height="28.6" fill="#188a3e"/>
<rect x="246.0" y="236.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"/>
<line x1="278.5" y1="201.2" x2="278.5" y2="247.4" stroke="#1a1a1a" stroke-width="1.2"/> <rect x="272.0" y="234.0" width="13" height="26.4" fill="#188a3e"/>
<rect x="272.0" y="210.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"/>
<line x1="304.5" y1="174.8" x2="304.5" y2="221.0" stroke="#1a1a1a" stroke-width="1.2"/> <rect x="298.0" y="212.0" width="13" height="22.0" fill="#188a3e"/>
<rect x="298.0" y="188.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"/>
<line x1="330.5" y1="157.2" x2="330.5" y2="199.0" stroke="#1a1a1a" stroke-width="1.2"/> <rect x="324.0" y="190.0" width="13" height="22.0" fill="#188a3e"/>
<rect x="324.0" y="166.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"/>
<line x1="356.5" y1="126.4" x2="356.5" y2="177.0" stroke="#1a1a1a" stroke-width="1.2"/> <rect x="350.0" y="159.2" width="13" height="30.8" fill="#188a3e"/>
<rect x="350.0" y="135.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"/>
<line x1="382.5" y1="91.2" x2="382.5" y2="146.2" stroke="#1a1a1a" stroke-width="1.2"/> <rect x="376.0" y="124.0" width="13" height="35.2" fill="#188a3e"/>
<rect x="376.0" y="100.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"/>
<line x1="408.5" y1="56.0" x2="408.5" y2="111.0" stroke="#1a1a1a" stroke-width="1.2"/> <rect x="402.0" y="88.8" width="13" height="35.2" fill="#188a3e"/>
<rect x="402.0" y="64.8" width="13" height="35.2" fill="#188a3e"/> <line x1="24" y1="478.4" x2="672" y2="478.4" stroke="#888"/>
<line x1="24" y1="454.4" x2="672" y2="454.4" stroke="#888"/> <rect x="64.0" y="424.6" width="13" height="53.8" fill="#c00" opacity="0.55"/>
<rect x="64.0" y="400.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="90.0" y="395.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="116.0" y="415.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="142.0" y="418.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="168.0" y="420.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="194.0" y="416.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="220.0" y="413.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="246.0" y="420.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="272.0" y="418.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="298.0" y="415.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="324.0" y="394.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="350.0" y="410.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="376.0" y="413.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"/>
<rect x="402.0" y="414.4" width="13" height="40.0" fill="#188a3e" opacity="0.55"/> <text x="24" y="412.4" fill="#555">volum</text>
<text x="24" y="388.4" fill="#555">volum</text> <line x1="114.5" y1="341.4" x2="297.3" y2="252.5" stroke="#c00" stroke-width="1.8"/>
<line x1="114.5" y1="317.4" x2="297.3" y2="228.5" stroke="#c00" stroke-width="1.8"/> <polygon points="304.5,249.0 299.1,256.1 295.6,248.9" fill="#c00"/>
<polygon points="304.5,225.0 299.1,232.1 295.6,224.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="331.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="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="383.4" fill="#c00" text-anchor="middle" style="font-weight:bold">nu e semnal</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="122.4" x2="324.2" y2="172.3" stroke="#188a3e" stroke-width="1.8"/>
<line x1="260.5" y1="98.4" x2="324.2" y2="148.3" stroke="#188a3e" stroke-width="1.8"/> <polygon points="330.5,177.2 321.7,175.4 326.7,169.1" fill="#188a3e"/>
<polygon points="330.5,153.2 321.7,151.4 326.7,145.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="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="117.4" fill="#188a3e" text-anchor="middle" style="font-weight:bold">aici intri, la close-ul zilei</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="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>
<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>

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) m = re.search(r'viewBox="0 0 (\d+) (\d+)"', svg)
W, H = int(m.group(1)), int(m.group(2)) W, H = int(m.group(1)), int(m.group(2))
legenda = [ 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ă.", "structura barelor dintre ele e construită.",
"SL: materialul nu îl dă pentru acest exemplu.", "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"/> <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="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="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>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: <li>Contradicțiile din material, toate la un loc:
<a href="A2_contradictii.html"><code>A2_contradictii.md</code></a>.</li> <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> </body>
</html> </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>[ ] (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>[ ] 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> <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> </body>
</html> </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 atingerii TP1 (ASR): <code>main</code>: 358-363; (6) extinderea acronimului „ATMI" nu
apare nicăieri în material.</p> apare nicăieri în material.</p>
<p><strong>Legături</strong> — <code>26_2025-06-11</code>: 915-917 (autorul recomandă combinarea ATMI cu <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> </body>
</html> </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>, 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ă <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 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> </body>
</html> </html>

File diff suppressed because one or more lines are too long