17_STRATEGII/08_mbp: trail-ul pus la locul lui, si contradictia care venea din el

Capitolul luase regula de trail a variantei set-and-forget (sub minimul
fiecarei candele inchise) si o pusese la varianta cu 3 pozitii. Regula
pozitiei 3 e Bull Trail, apoi ultimul swing low. Varianta candela-cu-candela
ramane unde ii e locul, cu avertisment sa nu se amestece.

De aici venea si contradictia: acelasi trade iesea la +4R in diagrama de
ansamblu si la +1.29R la pasul 5. Diagrama de iesire e refacuta cu trail pe
doua trepte de swing low, fiecare pornind din bara care o ridica (Level.i0),
si da +4.00R, ca ansamblul. Contrastul cu trail-ul fin e calculat in generator
pe aceeasi serie, nu inventat.

Restul: motivul inventat pentru TICUS (in TradeStation e gratuit, pe
TradingView costa), universul de instrumente marcat ca judecata proprie,
"nu a adaugat nimic" -> "1-2%, nu cat sa merite", nivelul 623.60 marcat ca
al meu, si trimiterile din fisa.

eticheta_libera a prins trei suprapuneri reale in generatorul refacut.

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-10-02 05:01:32 +00:00
parent 22803106b8
commit bd24084c29
6 changed files with 533 additions and 373 deletions

View File

@@ -5,15 +5,18 @@ Două panouri de 15 minute care pornesc din aceeași intrare (623.95, stop
faci cu stopul după ce prima tranșă a ieșit la 1:1:
- DA: prima tranșă iese la TP1 624.30 (1:1), stopul rămas se mută la break
even (623.95, prețul de intrare), restul merge pe trail — stopul urcă sub
minimul fiecărei candele închise — și iese la prima închidere sub el.
even (623.95, prețul de intrare), iar restul merge pe trail **pe ultimul
swing low** — regula poziției 3 din lecția principală (Bull Trail, apoi
swing low dacă se formează unul mai sus). Fiecare treaptă pornește de la
swing low-ul care o declanșează, nu din marginea graficului.
- NU: stopul e mutat la jumătatea drumului („50 %", 624.125). Fitilul unei
bare lungi coboară sub el și te scoate, deși prețul urcă apoi mai sus
decât în panoul din stânga.
Toate nivelurile ies din serie prin calcul: TP1 = intrare + (intrare − stop),
break even = intrarea, nivelul „50 %" = intrare + 1R/2, iar ieșirea pe trail e
prima închidere sub minimul candelei precedente, căutată în serie.
break even = intrarea, nivelul „50 %" = intrare + 1R/2, treptele de trail sunt
swing low-urile găsite în serie (minim local confirmat de o bară cu low mai
sus), iar ieșirea e prima închidere sub ultima treaptă.
Rulează: python3 gen/strategii/mbp_iesire.py
"""
@@ -22,7 +25,9 @@ import sys
from pathlib import Path
sys.path.insert(0, "/workspace/atm-curs-dl")
from svg_candles import Arrow, Chart, Level, from_closes # noqa: E402
sys.path.insert(0, "/workspace/atm-curs-dl/gen")
from svg_candles import Arrow, Chart, Level, Mark, from_closes # noqa: E402
from eticheta_libera import eticheta_libera # noqa: E402
OUT = Path(__file__).with_suffix(".svg")
RED, GREEN, BLUE, GRAY, ORANGE = "#c00", "#188a3e", "#1a5fb4", "#777", "#b06000"
@@ -36,39 +41,61 @@ E = 3 # indexul candelei de trigger (intrarea = close-ul e
PRE = [624.15, 623.98, 623.87, ENTRY] # ...M la index 2, trigger la 3
W_PRE = [(0.06, 0.10), (0.05, 0.16), (0.06, 0.27), (0.05, 0.12)]
# DA: urcare la TP1, încă două bare, apoi întoarcere care rupe trail-ul
DA = PRE + [624.12, 624.24, 624.34, 624.46, 624.52, 624.40, 624.28]
W_DA = W_PRE + [(0.05, 0.06), (0.06, 0.05), (0.04, 0.06), (0.05, 0.06),
(0.07, 0.05), (0.04, 0.08), (0.03, 0.06)]
# DA: TP1, apoi două pullback-uri care lasă fiecare un swing low mai sus;
# trail-ul urcă pe ele și te scoate abia la a treia coborâre, pe la +4R.
DA = PRE + [624.70, 624.78, 624.60, 625.05, 625.45, 625.70, 625.52, 625.92, 625.35]
W_DA = W_PRE + [(0.04, 0.04), (0.04, 0.03), (0.03, 0.09), (0.05, 0.04),
(0.05, 0.03), (0.08, 0.02), (0.03, 0.14), (0.05, 0.03),
(0.02, 0.04)]
# NU: aceeași urcare, dar a treia bară are un fitil lung care taie nivelul 50 %
NU = PRE + [624.12, 624.24, 624.20, 624.38, 624.52, 624.60, 624.55]
W_NU = W_PRE + [(0.05, 0.06), (0.06, 0.05), (0.04, 0.22), (0.05, 0.06),
(0.06, 0.05), (0.06, 0.05), (0.04, 0.07)]
da = from_closes(DA, wicks=W_DA, start=624.30)
nu = from_closes(NU, wicks=W_NU, start=624.30)
assert len(da) == len(nu) == 11
da = from_closes(DA, wicks=W_DA, start=624.20)
nu = from_closes(NU, wicks=W_NU, start=624.20)
assert len(da) == 13 and len(nu) == 11
# ── ce afirmă textul, verificat pe serie ───────────────────────────────────
assert abs(da[E].c - ENTRY) < 1e-9 and abs(nu[E].c - ENTRY) < 1e-9
assert da[E].c > da[E].o and nu[E].c > nu[E].o # candela de trigger e verde
assert min(c.l for c in da[E - 3:E + 1]) == SL, "stopul: cel mai jos minim din 4 candele"
assert min(c.l for c in nu[E - 3:E + 1]) == SL
assert all(abs(a.c - b.c) < 1e-9 for a, b in zip(da[:E + 2], nu[:E + 2]))
assert all(abs(a.c - b.c) < 1e-9 for a, b in zip(da[:E + 1], nu[:E + 1]))
tp_i = next(i for i in range(E + 1, len(da)) if da[i].h >= TP1)
assert abs(da[tp_i].h - 624.34) < 0.05, da[tp_i].h # TP1 atins de fitilul barei
assert tp_i == E + 3, tp_i
assert tp_i == E + 1, tp_i # TP1 atins de fitilul barei
# trail: stopul urcă sub minimul fiecărei candele închise; ieși la prima
# închidere sub el. Nivelul și bara de ieșire se caută în serie, nu se scriu.
iesire_i = next(i for i in range(tp_i + 1, len(da)) if da[i].c < da[i - 1].l)
trail = da[iesire_i - 1].l
# ── trail-ul pe swing low ──────────────────────────────────────────────────
# Un swing low = minim local; devine treaptă de trail din momentul în care o
# bară de după el închide un low mai sus. Treptele se caută în serie, nu se
# scriu de mână; stopul nu coboară niciodată.
swings = [i for i in range(1, len(da) - 1)
if da[i].l < da[i - 1].l and da[i].l < da[i + 1].l]
trepte = [i for i in swings if i > tp_i]
assert trepte == [6, 10], trepte
assert all(da[j].l > da[i].l for i, j in zip(trepte, trepte[1:])), "treptele urcă"
iesire_i = next(i for i in range(trepte[-1] + 1, len(da)) if da[i].c < da[trepte[-1]].l)
trail = da[trepte[-1]].l
iesire = da[iesire_i].c
assert iesire > ENTRY, iesire
assert iesire_i == len(da) - 1, iesire_i
r_iesire = (iesire - ENTRY) / RISC
assert 0.5 < r_iesire < 2.5, r_iesire
assert tp_i < iesire_i < len(da), iesire_i # ieșirea vine după TP1, în serie
assert abs(r_iesire - 4.0) < 0.02, r_iesire # ~1:4, cât spune materialul
# nicio treaptă de trail nu are voie să treacă peste low-ul unei bare din
# dreapta ei — altfel linia ar fi desenată deasupra prețului. Bara care rupe
# trail-ul (ieșirea) e singura excepție, prin definiție.
for i in trepte:
for j in range(i + 1, iesire_i):
assert da[j].l > da[i].l, (i, j, da[i].l, da[j].l)
assert da[iesire_i].l < trail < da[iesire_i - 1].l + 1
# contrastul cu varianta „set and forget": trail sub minimul fiecărei candele
# închise, pe exact aceeași structură — prima corecție te scoate.
cc_i = next(i for i in range(tp_i + 1, len(da)) if da[i].c < da[i - 1].l)
cc, r_cc = da[cc_i].c, (da[cc_i].c - ENTRY) / RISC
assert cc_i < iesire_i and r_cc < r_iesire, (cc_i, r_cc)
# panoul NU: nivelul „50 %" și fitilul care îl taie
half = ENTRY + RISC / 2
@@ -77,44 +104,47 @@ sc_i = E + 3
assert nu[sc_i].l < half, (nu[sc_i].l, half) # fitilul coboară sub 50 %
assert nu[sc_i].c > half, nu[sc_i].c # dar candela închide peste el
assert nu[sc_i].h < TP1, "în panoul NU ieșirea vine înainte de TP1"
assert max(c.h for c in nu[sc_i + 1:]) > max(c.h for c in da), \
"NU: prețul urcă după aceea mai sus decât în panoul DA"
ratat = max(c.h for c in nu[sc_i + 1:])
r_scos = (half - ENTRY) / RISC
r_ratat = (ratat - ENTRY) / RISC
SCALE, GAP, BODY, LEFT, PW = 300.0, 30, 18, 52, 372
SCALE, GAP, BODY, LEFT = 158.0, 28, 16, 46
pts = [p for c in (da + nu) for p in (c.h, c.l)] + [TP1, SL, half]
AER = 0.07 * (max(pts) - min(pts))
SPACER = [Level(max(pts) + AER, "", "none", dash=""), Level(min(pts) - AER, "", "none", dash="")]
def panel(cds, levels, arrows):
ch = Chart(candles=cds, levels=levels + SPACER, arrows=arrows, scale=SCALE,
gap=GAP, body_w=BODY, left=LEFT, width=PW)
def panel(cds, levels, arrows, marks, pw):
ch = Chart(candles=cds, levels=levels + SPACER, arrows=arrows, marks=marks, scale=SCALE,
gap=GAP, body_w=BODY, left=LEFT, width=pw)
raw = ch.render()
m = re.search(r'viewBox="0 0 (\d+) ([0-9.]+)"', raw)
assert m
return ch, int(m.group(1)), float(m.group(2)), raw[raw.index(">") + 1:raw.rindex("</svg>")].strip("\n")
ET_DA = {f"swing low {da[i].l:.2f}" for i in trepte}
ch_da, w_da, h_da, in_da = panel(
da,
[Level(TP1, f"TP1 {TP1:.2f} (1:1)", BLUE, dash="4 3", label_at="left"),
Level(ENTRY, f"intrare {ENTRY:.2f} = break even", GREEN, dash="2 3", label_at="left"),
Level(SL, f"SL inițial {SL:.2f}", RED, dash="4 3", label_at="left"),
Level(trail, f"trail {trail:.2f}", ORANGE, dash="1 3", label_at="right")],
[Arrow(tp_i, f"prima tranșă iese la {TP1:.2f}", where="above", color=BLUE, dy=-6),
Arrow(iesire_i, f"închidere sub trail:\nieși cu +{r_iesire:.2f}R", where="below", color=ORANGE)])
Level(ENTRY, f"intrare {ENTRY:.2f} = break even", GREEN, dash="2 3", label_at="right"),
Level(SL, f"SL inițial {SL:.2f}", RED, dash="4 3", label_at="left")]
+ [Level(da[i].l, "", ORANGE, dash="1 3", i0=i) for i in trepte],
[Arrow(tp_i, f"prima tranșă iese la {TP1:.2f}", where="above", color=BLUE, dy=-4),
Arrow(iesire_i, f"închidere sub trail:\nieși cu +{r_iesire:.2f}R", where="below",
color=ORANGE)],
[Mark(i, f"swing low {da[i].l:.2f}", color=ORANGE, where="below", dy=400) for i in trepte],
404)
ch_nu, w_nu, h_nu, in_nu = panel(
nu,
[Level(TP1, f"TP1 {TP1:.2f} (1:1) — nu mai ajungi la el", BLUE, dash="4 3", label_at="left"),
Level(half, f"stop mutat la 50 %: {half:.3f}", RED, dash="4 3", label_at="right"),
Level(ENTRY, f"intrare {ENTRY:.2f}", GREEN, dash="2 3", label_at="left"),
[Level(TP1, f"TP1 {TP1:.2f} (1:1)", BLUE, dash="4 3", label_at="left"),
Level(half, f"stop la 50 %: {half:.3f}", RED, dash="4 3", label_at="right"),
Level(ENTRY, f"intrare {ENTRY:.2f}", GREEN, dash="2 3", label_at="right"),
Level(SL, f"SL inițial {SL:.2f}", RED, dash="4 3", label_at="left")],
[Arrow(sc_i, f"fitilul taie 50 %:\nieși cu +{r_scos:.1f}R", where="below", color=RED),
Arrow(len(nu) - 2, f"prețul urcă la {ratat:.2f}\n(+{r_ratat:.1f}R) fără tine",
where="above", color=GRAY)])
where="above", color=GRAY)],
[], 420)
PH = max(h_da, h_nu)
TOP = 52
@@ -125,9 +155,14 @@ FOOTER = [
f"deci 1R = {RISC:.2f} $ și TP1 = {TP1:.2f}.",
f"DA: prima tranșă iese la TP1. Stopul rămas se duce la break even {ENTRY:.2f} — de acolo "
f"trade-ul nu mai poate ieși pe minus —",
f"iar restul merge pe trail: stopul urcă sub minimul fiecărei candele închise "
f"({trail:.2f} aici)",
f"și ieși la prima închidere sub el, {iesire:.2f} = +{r_iesire:.2f}R.",
"iar a treia tranșă merge pe trail pe ultimul swing low — liniile portocalii punctate.",
f"Treapta 1 = {da[trepte[0]].l:.2f}, treapta 2 = {trail:.2f}; fiecare pornește de la swing "
f"low-ul care o ridică, nu din marginea graficului.",
f"Ieși la prima închidere sub ultima treaptă, {iesire:.2f} = +{r_iesire:.1f}R — de aici vine "
f"„realizat ~1:4\" din material; prețul atinsese {max(c.h for c in da):.2f}.",
"Trail-ul sub minimul fiecărei candele închise e pasul 4 al variantei „set and forget\", "
"nu regula poziției 3:",
f"pe aceeași structură te-ar fi scos la prima corecție, {cc:.2f} = +{r_cc:.1f}R.",
f"NU: stopul mutat la jumătatea drumului, {half:.3f}. Fitilul unei singure bare coboară sub "
f"el și te scoate cu +{r_scos:.1f}R,",
f"deși bara închide peste nivel, iar prețul urcă după aceea la {ratat:.2f} "
@@ -143,7 +178,7 @@ out = [f'<svg viewBox="0 0 {RW:.0f} {root_h:.0f}" xmlns="http://www.w3.org/2000/
'<text x="8" y="20" fill="#333" style="font-weight:bold">Pasul 5 — unde muți stopul '
'după ce prima tranșă a ieșit</text>',
f'<text x="8" y="40" fill="{GREEN}" style="font-weight:bold">DA — break even, apoi '
f'trail</text>',
f'trail pe ultimul swing low</text>',
f'<text x="{X_NU}" y="40" fill="{RED}" style="font-weight:bold">NU — stopul mutat la '
f'„50 %"</text>',
f'<svg x="{X_DA}" y="{TOP}" width="{w_da}" height="{PH:.0f}" viewBox="0 0 {w_da} {PH:.0f}">'
@@ -177,6 +212,14 @@ def fits(body: str, w: float, h: float, unde: str) -> None:
fits(in_da, w_da, PH, "panoul DA")
fits(in_nu, w_nu, PH, "panoul NU")
fits("\n".join(out[-len(FOOTER) - 1:]), RW, root_h, "subsolul")
# etichetele de trail și marcajele de swing low nu au voie să stea pe desen
eticheta_libera(in_da, "panoul DA", ET_DA, rects=True)
# etichetele de nivel stau lipite de linia lor prin construcție; aici contează
# doar să nu cadă peste corpurile candelelor
NIV = {f"TP1 {TP1:.2f} (1:1)", f"intrare {ENTRY:.2f} = break even", f"intrare {ENTRY:.2f}",
f"SL inițial {SL:.2f}", f"stop la 50 %: {half:.3f}"}
eticheta_libera(in_da, "nivelurile DA", NIV, rects=True, segmente=False)
eticheta_libera(in_nu, "nivelurile NU", NIV, rects=True, segmente=False)
assert svg.count("\n\n") == 0, "linie goală în SVG rupe blocul din markdown"
assert svg.count("<svg") == 3 and svg.count("</svg>") == 3
# aceeași scară în ambele panouri: 1R desenat identic
@@ -190,6 +233,6 @@ svg = re.sub(r"\n\s*<text[^>]*>\s*</text>", "", svg)
assert svg.count("\n\n") == 0
OUT.write_text(svg, encoding="utf-8")
print(f"scris {OUT.name}: TP1 {TP1:.2f} la bara {tp_i}, trail {trail:.2f}, ieșire {iesire:.2f} "
f"(+{r_iesire:.2f}R); NU: 50 % la {half:.3f}, scos cu +{r_scos:.1f}R, ratat {ratat:.2f} "
f"(+{r_ratat:.1f}R)")
print(f"scris {OUT.name}: TP1 {TP1:.2f} la bara {tp_i}, trepte de trail "
f"{[f'{da[i].l:.2f}@{i}' for i in trepte]}, ieșire {iesire:.2f} (+{r_iesire:.2f}R); "
f"NU: 50 % la {half:.3f}, scos cu +{r_scos:.1f}R, ratat {ratat:.2f} (+{r_ratat:.1f}R)")

View File

@@ -1,93 +1,102 @@
<svg viewBox="0 0 819 677" xmlns="http://www.w3.org/2000/svg" style="width:100%;height:auto;font:12px sans-serif">
<svg viewBox="0 0 904 775" xmlns="http://www.w3.org/2000/svg" style="width:100%;height:auto;font:12px sans-serif">
<text x="8" y="20" fill="#333" style="font-weight:bold">Pasul 5 — unde muți stopul după ce prima tranșă a ieșit</text>
<text x="8" y="40" fill="#188a3e" style="font-weight:bold">DA — break even, apoi trail</text>
<text x="416" y="40" fill="#c00" style="font-weight:bold">NU — stopul mutat la „50 %"</text>
<svg x="8" y="52" width="392" height="440" viewBox="0 0 392 440"> <line x1="24" y1="164.3" x2="378" y2="164.3" stroke="#1a5fb4" stroke-width="1.5" stroke-dasharray="4 3"/>
<text x="30" y="158.3" fill="#1a5fb4">TP1 624.30 (1:1)</text>
<line x1="24" y1="269.3" x2="378" y2="269.3" stroke="#188a3e" stroke-width="1.5" stroke-dasharray="2 3"/>
<text x="30" y="263.3" fill="#188a3e">intrare 623.95 = break even</text>
<line x1="24" y1="374.3" x2="378" y2="374.3" stroke="#c00" stroke-width="1.5" stroke-dasharray="4 3"/>
<text x="30" y="368.3" fill="#c00">SL inițial 623.60</text>
<line x1="24" y1="131.3" x2="378" y2="131.3" stroke="#b06000" stroke-width="1.5" stroke-dasharray="1 3"/>
<text x="364" y="125.3" fill="#b06000" text-anchor="end">trail 624.41</text>
<line x1="24" y1="34.0" x2="378" y2="34.0" stroke="none" stroke-width="1.5" stroke-dasharray=""/>
<line x1="24" y1="396.5" x2="378" y2="396.5" stroke="none" stroke-width="1.5" stroke-dasharray=""/>
<line x1="52.0" y1="146.3" x2="52.0" y2="239.3" stroke="#1a1a1a" stroke-width="1.2"/>
<rect x="43.0" y="164.3" width="18" height="45.0" fill="#c00"/>
<line x1="82.0" y1="194.3" x2="82.0" y2="308.3" stroke="#1a1a1a" stroke-width="1.2"/>
<rect x="73.0" y="209.3" width="18" height="51.0" fill="#c00"/>
<line x1="112.0" y1="242.3" x2="112.0" y2="374.3" stroke="#1a1a1a" stroke-width="1.2"/>
<rect x="103.0" y="260.3" width="18" height="33.0" fill="#c00"/>
<line x1="142.0" y1="254.3" x2="142.0" y2="329.3" stroke="#1a1a1a" stroke-width="1.2"/>
<rect x="133.0" y="269.3" width="18" height="24.0" fill="#188a3e"/>
<line x1="172.0" y1="203.3" x2="172.0" y2="287.3" stroke="#1a1a1a" stroke-width="1.2"/>
<rect x="163.0" y="218.3" width="18" height="51.0" fill="#188a3e"/>
<line x1="202.0" y1="164.3" x2="202.0" y2="233.3" stroke="#1a1a1a" stroke-width="1.2"/>
<rect x="193.0" y="182.3" width="18" height="36.0" fill="#188a3e"/>
<line x1="232.0" y1="140.3" x2="232.0" y2="200.3" stroke="#1a1a1a" stroke-width="1.2"/>
<rect x="223.0" y="152.3" width="18" height="30.0" fill="#188a3e"/>
<line x1="262.0" y1="101.3" x2="262.0" y2="170.3" stroke="#1a1a1a" stroke-width="1.2"/>
<rect x="253.0" y="116.3" width="18" height="36.0" fill="#188a3e"/>
<line x1="292.0" y1="77.3" x2="292.0" y2="131.3" stroke="#1a1a1a" stroke-width="1.2"/>
<rect x="283.0" y="98.3" width="18" height="18.0" fill="#188a3e"/>
<line x1="322.0" y1="86.3" x2="322.0" y2="158.3" stroke="#1a1a1a" stroke-width="1.2"/>
<rect x="313.0" y="98.3" width="18" height="36.0" fill="#c00"/>
<line x1="352.0" y1="125.3" x2="352.0" y2="188.3" stroke="#1a1a1a" stroke-width="1.2"/>
<rect x="343.0" y="134.3" width="18" height="36.0" fill="#c00"/>
<line x1="232.0" y1="63.3" x2="232.0" y2="128.3" stroke="#1a5fb4" stroke-width="1.8"/>
<polygon points="232.0,136.3 228.0,128.3 236.0,128.3" fill="#1a5fb4"/>
<text x="232.0" y="58.3" fill="#1a5fb4" text-anchor="middle" style="font-weight:bold">prima tranșă iese la 624.30</text>
<line x1="322.0" y1="196.3" x2="322.0" y2="170.3" stroke="#b06000" stroke-width="1.8"/>
<polygon points="322.0,162.3 326.0,170.3 318.0,170.3" fill="#b06000"/>
<text x="322.0" y="210.3" fill="#b06000" text-anchor="middle" style="font-weight:bold">închidere sub trail:</text>
<text x="322.0" y="224.3" fill="#b06000" text-anchor="middle" style="font-weight:bold">ieși cu +1.29R</text></svg>
<svg x="416" y="52" width="395" height="440" viewBox="0 0 395 440"> <line x1="24" y1="182.0" x2="381" y2="182.0" stroke="#1a5fb4" stroke-width="1.5" stroke-dasharray="4 3"/>
<text x="30" y="176.0" fill="#1a5fb4">TP1 624.30 (1:1) — nu mai ajungi la el</text>
<line x1="24" y1="234.5" x2="381" y2="234.5" stroke="#c00" stroke-width="1.5" stroke-dasharray="4 3"/>
<text x="367" y="228.5" fill="#c00" text-anchor="end">stop mutat la 50 %: 624.125</text>
<line x1="24" y1="287.0" x2="381" y2="287.0" stroke="#188a3e" stroke-width="1.5" stroke-dasharray="2 3"/>
<text x="30" y="281.0" fill="#188a3e">intrare 623.95</text>
<line x1="24" y1="392.0" x2="381" y2="392.0" stroke="#c00" stroke-width="1.5" stroke-dasharray="4 3"/>
<text x="30" y="386.0" fill="#c00">SL inițial 623.60</text>
<line x1="24" y1="51.7" x2="381" y2="51.7" stroke="none" stroke-width="1.5" stroke-dasharray=""/>
<line x1="24" y1="414.3" x2="381" y2="414.3" stroke="none" stroke-width="1.5" stroke-dasharray=""/>
<line x1="52.0" y1="164.0" x2="52.0" y2="257.0" stroke="#1a1a1a" stroke-width="1.2"/>
<rect x="43.0" y="182.0" width="18" height="45.0" fill="#c00"/>
<line x1="82.0" y1="212.0" x2="82.0" y2="326.0" stroke="#1a1a1a" stroke-width="1.2"/>
<rect x="73.0" y="227.0" width="18" height="51.0" fill="#c00"/>
<line x1="112.0" y1="260.0" x2="112.0" y2="392.0" stroke="#1a1a1a" stroke-width="1.2"/>
<rect x="103.0" y="278.0" width="18" height="33.0" fill="#c00"/>
<line x1="142.0" y1="272.0" x2="142.0" y2="347.0" stroke="#1a1a1a" stroke-width="1.2"/>
<rect x="133.0" y="287.0" width="18" height="24.0" fill="#188a3e"/>
<line x1="172.0" y1="221.0" x2="172.0" y2="305.0" stroke="#1a1a1a" stroke-width="1.2"/>
<rect x="163.0" y="236.0" width="18" height="51.0" fill="#188a3e"/>
<line x1="202.0" y1="182.0" x2="202.0" y2="251.0" stroke="#1a1a1a" stroke-width="1.2"/>
<rect x="193.0" y="200.0" width="18" height="36.0" fill="#188a3e"/>
<line x1="232.0" y1="188.0" x2="232.0" y2="278.0" stroke="#1a1a1a" stroke-width="1.2"/>
<rect x="223.0" y="200.0" width="18" height="12.0" fill="#c00"/>
<line x1="262.0" y1="143.0" x2="262.0" y2="230.0" stroke="#1a1a1a" stroke-width="1.2"/>
<rect x="253.0" y="158.0" width="18" height="54.0" fill="#188a3e"/>
<line x1="292.0" y1="98.0" x2="292.0" y2="173.0" stroke="#1a1a1a" stroke-width="1.2"/>
<rect x="283.0" y="116.0" width="18" height="42.0" fill="#188a3e"/>
<line x1="322.0" y1="74.0" x2="322.0" y2="131.0" stroke="#1a1a1a" stroke-width="1.2"/>
<rect x="313.0" y="92.0" width="18" height="24.0" fill="#188a3e"/>
<line x1="352.0" y1="80.0" x2="352.0" y2="128.0" stroke="#1a1a1a" stroke-width="1.2"/>
<rect x="343.0" y="92.0" width="18" height="15.0" fill="#c00"/>
<line x1="232.0" y1="313.0" x2="232.0" y2="290.0" stroke="#c00" stroke-width="1.8"/>
<polygon points="232.0,282.0 236.0,290.0 228.0,290.0" fill="#c00"/>
<text x="232.0" y="327.0" fill="#c00" text-anchor="middle" style="font-weight:bold">fitilul taie 50 %:</text>
<text x="232.0" y="341.0" fill="#c00" text-anchor="middle" style="font-weight:bold">ieși cu +0.5R</text>
<line x1="322.0" y1="44.0" x2="322.0" y2="62.0" stroke="#777" stroke-width="1.8"/>
<polygon points="322.0,70.0 318.0,62.0 326.0,62.0" fill="#777"/>
<text x="322.0" y="25.0" fill="#777" text-anchor="middle" style="font-weight:bold">prețul urcă la 624.66</text>
<text x="322.0" y="39.0" fill="#777" text-anchor="middle" style="font-weight:bold">(+2.0R) fără tine</text></svg>
<text x="8" y="516" fill="#555">Ambele panouri pornesc din aceeași intrare 623.95, cu stopul la 623.60, deci 1R = 0.35 $ și TP1 = 624.30.</text>
<text x="8" y="533" fill="#555">DA: prima tranșă iese la TP1. Stopul rămas se duce la break even 623.95 — de acolo trade-ul nu mai poate ieși pe minus —</text>
<text x="8" y="550" fill="#555">iar restul merge pe trail: stopul urcă sub minimul fiecărei candele închise (624.41 aici)</text>
<text x="8" y="567" fill="#555">și ieși la prima închidere sub el, 624.40 = +1.29R.</text>
<text x="8" y="584" fill="#555">NU: stopul mutat la jumătatea drumului, 624.125. Fitilul unei singure bare coboară sub el și te scoate cu +0.5R,</text>
<text x="8" y="601" fill="#555">deși bara închide peste nivel, iar prețul urcă după aceea la 624.66 (+2.0R).</text>
<text x="8" y="618" fill="#555">Break even nu are cum să te scoată în pierdere: stă fix la prețul de intrare.</text>
<text x="8" y="635" fill="#555">Ce nu a ieșit nici la țintă, nici pe trail se închide oricum la finalul sesiunii.</text>
<text x="8" y="652" fill="#555">Cifrele intrării, stopului și ale TP1 sunt din curs; barele de după intrare sunt construite de mine.</text>
<text x="8" y="40" fill="#188a3e" style="font-weight:bold">DA — break even, apoi trail pe ultimul swing low</text>
<text x="476" y="40" fill="#c00" style="font-weight:bold">NU — stopul mutat la „50 %"</text>
<svg x="8" y="52" width="452" height="487" viewBox="0 0 452 487"> <line x1="24.0" y1="324.1" x2="438" y2="324.1" stroke="#1a5fb4" stroke-width="1.5" stroke-dasharray="4 3"/>
<text x="30.0" y="318.1" fill="#1a5fb4">TP1 624.30 (1:1)</text>
<line x1="24.0" y1="379.4" x2="438" y2="379.4" stroke="#188a3e" stroke-width="1.5" stroke-dasharray="2 3"/>
<text x="424" y="373.4" fill="#188a3e" text-anchor="end">intrare 623.95 = break even</text>
<line x1="24.0" y1="434.7" x2="438" y2="434.7" stroke="#c00" stroke-width="1.5" stroke-dasharray="4 3"/>
<text x="30.0" y="428.7" fill="#c00">SL inițial 623.60</text>
<line x1="206.0" y1="290.9" x2="438" y2="290.9" stroke="#b06000" stroke-width="1.5" stroke-dasharray="1 3"/>
<line x1="318.0" y1="153.4" x2="438" y2="153.4" stroke="#b06000" stroke-width="1.5" stroke-dasharray="1 3"/>
<line x1="24.0" y1="34.0" x2="438" y2="34.0" stroke="none" stroke-width="1.5" stroke-dasharray=""/>
<line x1="24.0" y1="460.9" x2="438" y2="460.9" stroke="none" stroke-width="1.5" stroke-dasharray=""/>
<line x1="46.0" y1="330.4" x2="46.0" y2="363.6" stroke="#1a1a1a" stroke-width="1.2"/>
<rect x="38.0" y="339.9" width="16" height="7.9" fill="#c00"/>
<line x1="74.0" y1="339.9" x2="74.0" y2="399.9" stroke="#1a1a1a" stroke-width="1.2"/>
<rect x="66.0" y="347.8" width="16" height="26.9" fill="#c00"/>
<line x1="102.0" y1="365.2" x2="102.0" y2="434.7" stroke="#1a1a1a" stroke-width="1.2"/>
<rect x="94.0" y="374.6" width="16" height="17.4" fill="#c00"/>
<line x1="130.0" y1="371.5" x2="130.0" y2="411.0" stroke="#1a1a1a" stroke-width="1.2"/>
<rect x="122.0" y="379.4" width="16" height="12.6" fill="#188a3e"/>
<line x1="158.0" y1="254.6" x2="158.0" y2="385.7" stroke="#1a1a1a" stroke-width="1.2"/>
<rect x="150.0" y="260.9" width="16" height="118.5" fill="#188a3e"/>
<line x1="186.0" y1="241.9" x2="186.0" y2="265.6" stroke="#1a1a1a" stroke-width="1.2"/>
<rect x="178.0" y="248.2" width="16" height="12.6" fill="#188a3e"/>
<line x1="214.0" y1="243.5" x2="214.0" y2="290.9" stroke="#1a1a1a" stroke-width="1.2"/>
<rect x="206.0" y="248.2" width="16" height="28.4" fill="#c00"/>
<line x1="242.0" y1="197.7" x2="242.0" y2="283.0" stroke="#1a1a1a" stroke-width="1.2"/>
<rect x="234.0" y="205.6" width="16" height="71.1" fill="#188a3e"/>
<line x1="270.0" y1="134.5" x2="270.0" y2="210.3" stroke="#1a1a1a" stroke-width="1.2"/>
<rect x="262.0" y="142.4" width="16" height="63.2" fill="#188a3e"/>
<line x1="298.0" y1="90.2" x2="298.0" y2="145.5" stroke="#1a1a1a" stroke-width="1.2"/>
<rect x="290.0" y="102.9" width="16" height="39.5" fill="#188a3e"/>
<line x1="326.0" y1="98.1" x2="326.0" y2="153.4" stroke="#1a1a1a" stroke-width="1.2"/>
<rect x="318.0" y="102.9" width="16" height="28.4" fill="#c00"/>
<line x1="354.0" y1="60.2" x2="354.0" y2="136.1" stroke="#1a1a1a" stroke-width="1.2"/>
<rect x="346.0" y="68.1" width="16" height="63.2" fill="#188a3e"/>
<line x1="382.0" y1="65.0" x2="382.0" y2="164.5" stroke="#1a1a1a" stroke-width="1.2"/>
<rect x="374.0" y="68.1" width="16" height="90.1" fill="#c00"/>
<text x="214.0" y="474.9" fill="#b06000" text-anchor="middle" style="font-weight:bold">swing low 624.51</text>
<text x="326.0" y="474.9" fill="#b06000" text-anchor="middle" style="font-weight:bold">swing low 625.38</text>
<line x1="158.0" y1="185.7" x2="158.0" y2="242.6" stroke="#1a5fb4" stroke-width="1.8"/>
<polygon points="158.0,250.6 154.0,242.6 162.0,242.6" fill="#1a5fb4"/>
<text x="158.0" y="180.7" fill="#1a5fb4" text-anchor="middle" style="font-weight:bold">prima tranșă iese la 624.30</text>
<line x1="382.0" y1="194.5" x2="382.0" y2="176.5" stroke="#b06000" stroke-width="1.8"/>
<polygon points="382.0,168.5 386.0,176.5 378.0,176.5" fill="#b06000"/>
<text x="382.0" y="208.5" fill="#b06000" text-anchor="middle" style="font-weight:bold">închidere sub trail:</text>
<text x="382.0" y="222.5" fill="#b06000" text-anchor="middle" style="font-weight:bold">ieși cu +4.00R</text></svg>
<svg x="476" y="52" width="420" height="487" viewBox="0 0 420 487"> <line x1="24.0" y1="324.1" x2="406" y2="324.1" stroke="#1a5fb4" stroke-width="1.5" stroke-dasharray="4 3"/>
<text x="30.0" y="318.1" fill="#1a5fb4">TP1 624.30 (1:1)</text>
<line x1="24.0" y1="351.7" x2="406" y2="351.7" stroke="#c00" stroke-width="1.5" stroke-dasharray="4 3"/>
<text x="392" y="345.7" fill="#c00" text-anchor="end">stop la 50 %: 624.125</text>
<line x1="24.0" y1="379.4" x2="406" y2="379.4" stroke="#188a3e" stroke-width="1.5" stroke-dasharray="2 3"/>
<text x="392" y="373.4" fill="#188a3e" text-anchor="end">intrare 623.95</text>
<line x1="24.0" y1="434.7" x2="406" y2="434.7" stroke="#c00" stroke-width="1.5" stroke-dasharray="4 3"/>
<text x="30.0" y="428.7" fill="#c00">SL inițial 623.60</text>
<line x1="24.0" y1="34.0" x2="406" y2="34.0" stroke="none" stroke-width="1.5" stroke-dasharray=""/>
<line x1="24.0" y1="460.9" x2="406" y2="460.9" stroke="none" stroke-width="1.5" stroke-dasharray=""/>
<line x1="46.0" y1="330.4" x2="46.0" y2="363.6" stroke="#1a1a1a" stroke-width="1.2"/>
<rect x="38.0" y="339.9" width="16" height="7.9" fill="#c00"/>
<line x1="74.0" y1="339.9" x2="74.0" y2="399.9" stroke="#1a1a1a" stroke-width="1.2"/>
<rect x="66.0" y="347.8" width="16" height="26.9" fill="#c00"/>
<line x1="102.0" y1="365.2" x2="102.0" y2="434.7" stroke="#1a1a1a" stroke-width="1.2"/>
<rect x="94.0" y="374.6" width="16" height="17.4" fill="#c00"/>
<line x1="130.0" y1="371.5" x2="130.0" y2="411.0" stroke="#1a1a1a" stroke-width="1.2"/>
<rect x="122.0" y="379.4" width="16" height="12.6" fill="#188a3e"/>
<line x1="158.0" y1="344.6" x2="158.0" y2="388.9" stroke="#1a1a1a" stroke-width="1.2"/>
<rect x="150.0" y="352.5" width="16" height="26.9" fill="#188a3e"/>
<line x1="186.0" y1="324.1" x2="186.0" y2="360.4" stroke="#1a1a1a" stroke-width="1.2"/>
<rect x="178.0" y="333.6" width="16" height="19.0" fill="#188a3e"/>
<line x1="214.0" y1="327.2" x2="214.0" y2="374.6" stroke="#1a1a1a" stroke-width="1.2"/>
<rect x="206.0" y="333.6" width="16" height="6.3" fill="#c00"/>
<line x1="242.0" y1="303.5" x2="242.0" y2="349.4" stroke="#1a1a1a" stroke-width="1.2"/>
<rect x="234.0" y="311.4" width="16" height="28.4" fill="#188a3e"/>
<line x1="270.0" y1="279.8" x2="270.0" y2="319.3" stroke="#1a1a1a" stroke-width="1.2"/>
<rect x="262.0" y="289.3" width="16" height="22.1" fill="#188a3e"/>
<line x1="298.0" y1="267.2" x2="298.0" y2="297.2" stroke="#1a1a1a" stroke-width="1.2"/>
<rect x="290.0" y="276.7" width="16" height="12.6" fill="#188a3e"/>
<line x1="326.0" y1="270.4" x2="326.0" y2="295.6" stroke="#1a1a1a" stroke-width="1.2"/>
<rect x="318.0" y="276.7" width="16" height="7.9" fill="#c00"/>
<line x1="214.0" y1="404.6" x2="214.0" y2="386.6" stroke="#c00" stroke-width="1.8"/>
<polygon points="214.0,378.6 218.0,386.6 210.0,386.6" fill="#c00"/>
<text x="214.0" y="418.6" fill="#c00" text-anchor="middle" style="font-weight:bold">fitilul taie 50 %:</text>
<text x="214.0" y="432.6" fill="#c00" text-anchor="middle" style="font-weight:bold">ieși cu +0.5R</text>
<line x1="298.0" y1="237.2" x2="298.0" y2="255.2" stroke="#777" stroke-width="1.8"/>
<polygon points="298.0,263.2 294.0,255.2 302.0,255.2" fill="#777"/>
<text x="298.0" y="218.2" fill="#777" text-anchor="middle" style="font-weight:bold">prețul urcă la 624.66</text>
<text x="298.0" y="232.2" fill="#777" text-anchor="middle" style="font-weight:bold">(+2.0R) fără tine</text></svg>
<text x="8" y="563" fill="#555">Ambele panouri pornesc din aceeași intrare 623.95, cu stopul la 623.60, deci 1R = 0.35 $ și TP1 = 624.30.</text>
<text x="8" y="580" fill="#555">DA: prima tranșă iese la TP1. Stopul rămas se duce la break even 623.95 — de acolo trade-ul nu mai poate ieși pe minus —</text>
<text x="8" y="597" fill="#555">iar a treia tranșă merge pe trail pe ultimul swing low — liniile portocalii punctate.</text>
<text x="8" y="614" fill="#555">Treapta 1 = 624.51, treapta 2 = 625.38; fiecare pornește de la swing low-ul care o ridică, nu din marginea graficului.</text>
<text x="8" y="631" fill="#555">Ieși la prima închidere sub ultima treaptă, 625.35 = +4.0R — de aici vine „realizat ~1:4" din material; prețul atinsese 625.97.</text>
<text x="8" y="648" fill="#555">Trail-ul sub minimul fiecărei candele închise e pasul 4 al variantei „set and forget", nu regula poziției 3:</text>
<text x="8" y="665" fill="#555">pe aceeași structură te-ar fi scos la prima corecție, 624.60 = +1.9R.</text>
<text x="8" y="682" fill="#555">NU: stopul mutat la jumătatea drumului, 624.125. Fitilul unei singure bare coboară sub el și te scoate cu +0.5R,</text>
<text x="8" y="699" fill="#555">deși bara închide peste nivel, iar prețul urcă după aceea la 624.66 (+2.0R).</text>
<text x="8" y="716" fill="#555">Break even nu are cum să te scoată în pierdere: stă fix la prețul de intrare.</text>
<text x="8" y="733" fill="#555">Ce nu a ieșit nici la țintă, nici pe trail se închide oricum la finalul sesiunii.</text>
<text x="8" y="750" fill="#555">Cifrele intrării, stopului și ale TP1 sunt din curs; barele de după intrare sunt construite de mine.</text>
</svg>

Before

Width:  |  Height:  |  Size: 8.4 KiB

After

Width:  |  Height:  |  Size: 9.5 KiB