diff --git a/gen/strategii/buy_doji_directie.py b/gen/strategii/buy_doji_directie.py
index 4e46099..ee2da98 100644
--- a/gen/strategii/buy_doji_directie.py
+++ b/gen/strategii/buy_doji_directie.py
@@ -3,16 +3,27 @@
Citește `gen/strategii/buy_doji_directie.spec.txt` și scrie
`gen/strategii/buy_doji_directie.svg`. Două panouri stivuite: sus weekly
-(10 bare, Buy Doji confirmat), jos daily (17 bare, uptrend, Sell Doji tehnic
-valid, short-ul lovește SL-ul). Coordonatele sunt absolute (fără
-), ca audit_diagrams.py să vadă pozițiile reale ale textelor.
+(12 bare, Buy Doji confirmat), jos daily (15 bare = ultimele 3 bare weekly
+desfăcute zi cu zi, 5 zile pe săptămână).
+
+Seria weekly 9..11 NU e scrisă de mână: e agregarea reală a celor 15 zile
+(open = open-ul primei zile, close = close-ul ultimei, high/low = extremele).
+Panoul weekly poartă un dreptunghi peste exact acele 3 bare, plus două
+ghidaje către colțurile cadrului daily, iar high-ul și low-ul doji-ului daily
+sunt desenate ca aceeași linie punctată, cu același număr, pe ambele panouri.
+
+Coordonatele sunt absolute (fără ), ca audit_diagrams.py să vadă
+pozițiile reale ale textelor.
Rulare: python3 gen/strategii/buy_doji_directie.py
"""
+import re
from pathlib import Path
OUT = Path(__file__).with_suffix(".svg")
W = 900
+GROUP = 5 # zile pe săptămână
+ZOOM = 3 # câte bare weekly sunt desfăcute jos
def trend(start, closes, wick=0.15):
@@ -23,75 +34,97 @@ def trend(start, closes, wick=0.15):
return bars
-# --- seriile din spec: (open, high, low, close) -----------------------------
+def agg(days):
+ """Agregă GROUP zile într-o bară weekly."""
+ return (days[0][0], max(b[1] for b in days), min(b[2] for b in days), days[-1][3])
+
+
+# --- seria daily: 15 bare = 3 săptămâni --------------------------------------
+DY = trend(81.30, [81.70, 82.20, 82.00, 82.60, 83.10, 83.50]) + [
+ (83.50, 84.30, 83.40, 83.60), # 6: zi cu respingere sus (dă high-ul de referință)
+ (83.60, 83.90, 83.05, 83.55), # 7: doji daily
+ (83.55, 83.65, 82.60, 82.70), # 8: confirmare => Sell Doji, intrare short
+ (82.70, 82.80, 82.00, 82.25), # 9: singura zi de scădere
+ (82.25, 83.05, 82.15, 82.95),
+ (82.95, 83.70, 82.85, 83.60),
+ (83.60, 84.45, 83.50, 84.30), # 12: SL lovit
+ (84.30, 84.95, 84.20, 84.80),
+ (84.80, 85.45, 84.70, 85.30)]
+
+# --- seria weekly: 9 bare de context + cele 3 agregate din daily -------------
WK = trend(89.0, [88.0, 86.2, 84.9, 83.1, 81.6, 80.2, 78.9]) + [
- (78.90, 79.80, 77.60, 78.80), # 7: doji
- (78.80, 81.60, 78.60, 81.30), # 8: confirmare => Buy Doji weekly
- (81.30, 82.70, 81.10, 82.40)]
-DY = trend(81.30, [81.7, 82.2, 82.0, 82.6, 83.1, 83.5, 83.3, 83.9, 84.4]) + [
- (84.40, 84.80, 83.95, 84.35), # 9: doji
- (84.35, 84.45, 83.45, 83.60), # 10: confirmare => Sell Doji, intrare short
- (83.60, 83.70, 83.00, 83.20),
- (83.20, 84.00, 83.10, 83.90),
- (83.90, 84.70, 83.80, 84.60),
- (84.60, 85.25, 84.50, 85.10), # 14: SL lovit
- (85.10, 85.75, 85.00, 85.60),
- (85.60, 86.30, 85.50, 86.10)]
+ (78.90, 79.80, 77.60, 78.80), # 7: doji weekly
+ (78.80, 81.60, 78.60, 81.30)] # 8: confirmare => Buy Doji weekly
+WK += [agg(DY[k:k + GROUP]) for k in range(0, len(DY), GROUP)]
+Z0 = len(WK) - ZOOM # prima bară weekly mărită jos
def eq(a, b):
return abs(a - b) < 0.005
-# --- assert-urile din spec ---------------------------------------------------
-assert len(WK) == 10 and len(DY) == 17
+# --- assert-uri: coerență, agregare, poveste ---------------------------------
+assert len(DY) == ZOOM * GROUP and len(WK) == 9 + ZOOM
for name, bars in (("weekly", WK), ("daily", DY)):
for i, (o, h, l, c) in enumerate(bars):
assert h >= max(o, c) and l <= min(o, c), f"{name}[{i}] h/l incoerent"
if i:
assert eq(o, bars[i - 1][3]), f"{name}[{i}] open != close precedent"
-for name, (o, h, l, c) in (("doji weekly", WK[7]), ("doji daily", DY[9])):
+assert eq(DY[0][0], WK[8][3]), "daily nu începe la close-ul confirmării weekly"
+# agregarea, verificată din nou pe valorile finale (nu pe cele care au construit-o)
+for k in range(ZOOM):
+ days = DY[k * GROUP:(k + 1) * GROUP]
+ o, h, l, c = WK[Z0 + k]
+ assert eq(o, days[0][0]) and eq(c, days[-1][3]), f"weekly[{Z0+k}] o/c != zile"
+ assert eq(h, max(b[1] for b in days)), f"weekly[{Z0+k}] high != max(high zile)"
+ assert eq(l, min(b[2] for b in days)), f"weekly[{Z0+k}] low != min(low zile)"
+for name, (o, h, l, c) in (("doji weekly", WK[7]), ("doji daily", DY[7])):
assert abs(o - c) <= 0.10 * (h - l) + 1e-9, f"{name} nu e doji"
assert WK[8][3] > WK[7][1], "weekly: fără confirmare"
-assert DY[10][3] < DY[9][2], "daily: fără confirmare Sell Doji"
-ENTRY = DY[10][3]
-# stopul: 5 cenți peste high-ul ultimelor 4 candele, ca la pasul 5 (oglindit)
-SL = round(max(b[1] for b in DY[7:11]) + 0.05, 2)
+assert DY[8][3] < DY[7][2], "daily: fără confirmare Sell Doji"
+
+DH, DL = DY[7][1], DY[7][2] # nivelurile comune: high/low doji daily
+ENTRY = DY[8][3]
+SL = round(max(b[1] for b in DY[5:9]) + 0.05, 2) # 5 cenți peste high-ul de 4 candele
RISK = round(SL - ENTRY, 2)
TP1 = round(ENTRY - RISK, 2)
-assert eq(ENTRY, 83.60) and eq(SL, 84.85) and eq(RISK, 1.25) and eq(TP1, 82.35)
-LOW_AFTER = min(b[2] for b in DY[11:])
-assert eq(LOW_AFTER, 83.00) and LOW_AFTER > TP1, "TP1 atins"
-HIT = next(i for i in range(11, 17) if DY[i][1] >= SL - 1e-9)
-assert HIT == 14, f"SL lovit la {HIT}"
-assert eq(DY[0][0], WK[8][3]), "daily nu începe la close-ul confirmării weekly"
+assert eq(ENTRY, 82.70) and eq(SL, 84.35) and eq(RISK, 1.65) and eq(TP1, 81.05)
+assert SL - DH > 0.30, "stopul e prea lipit de high-ul doji-ului (etichete suprapuse)"
+assert DL - ENTRY > 0.30, "intrarea e prea lipită de low-ul doji-ului"
+LOW_AFTER = min(b[2] for b in DY[9:])
+assert eq(LOW_AFTER, 82.00) and LOW_AFTER > TP1, "TP1 atins"
+HIT = next(i for i in range(9, len(DY)) if DY[i][1] >= SL - 1e-9)
+assert HIT == 12, f"SL lovit la {HIT}"
+assert min(b[2] for b in DY) < DH < max(b[1] for b in WK), "nivel comun în afara scării"
# --- desen -------------------------------------------------------------------
-GREEN, RED, ORANGE, GRAY, INK = "#188a3e", "#c00", "#d06a00", "#777", "#333"
+GREEN, RED, ORANGE, GRAY, INK, BLUE = "#188a3e", "#c00", "#d06a00", "#777", "#333", "#1a5fb4"
BODY_W = 9
-out = []
+out, texts = [], []
+PANEL = "none"
-def text(x, y, s, fill=INK, anchor="start", bold=False, size=None):
+def text(x, y, s, fill=INK, anchor="start", bold=False, size=None, panel=None):
st = (["font-weight:bold"] if bold else []) + ([f"font-size:{size}px"] if size else [])
style = f' style="{";".join(st)}"' if st else ""
a = f' text-anchor="{anchor}"' if anchor != "start" else ""
out.append(f'{s}')
+ texts.append((panel or PANEL, s))
-def line(x1, y1, x2, y2, color, width=1.5, dash=None, extra=""):
+def line(x1, y1, x2, y2, color, width=1.5, dash=None):
d = f' stroke-dasharray="{dash}"' if dash else ""
out.append(f'')
+ f'stroke="{color}" stroke-width="{width}"{d}/>')
-def rect(x, y, w, h, fill, opacity, stroke="none"):
+def rect(x, y, w, h, fill, opacity, stroke="none", dash=None):
+ d = f' stroke-dasharray="{dash}"' if dash else ""
out.append(f'')
+ f'fill-opacity="{opacity}" stroke="{stroke}" stroke-width="1.5"{d} rx="3"/>')
def arrow(x1, y1, x2, y2, color):
- """Săgeată de la (x1,y1) la vârful (x2,y2): linie + cap triunghi."""
d = max(((x2 - x1) ** 2 + (y2 - y1) ** 2) ** 0.5, 1e-9)
ux, uy = (x2 - x1) / d, (y2 - y1) / d
bx, by = x2 - 9 * ux, y2 - 9 * uy
@@ -114,72 +147,121 @@ text(20, 24, "NU: Sell Doji daily contra unui Buy Doji weekly — exemplu constr
bold=True, size=14)
# ---- panoul de sus: weekly ----------------------------------------------------
-WX0, WGAP, WS, WT = 60, 16, 12.0, 66
-wmax = max(b[1] for b in WK)
+PANEL = "weekly"
+WX0, WGAP, WS, WT = 60, 16, 16, 70
+wmax, wmin = max(b[1] for b in WK), min(b[2] for b in WK)
yw = lambda p: WT + (wmax - p) * WS # noqa: E731
xw = lambda i: WX0 + i * WGAP # noqa: E731
+w_bottom = yw(wmin)
text(20, 50, "weekly: direcția", fill="#555", bold=True)
-rect(xw(7) - 8, yw(WK[8][1]) - 4, WGAP + 16, yw(WK[7][2]) - yw(WK[8][1]) + 8,
- GREEN, 0.12, GREEN)
+rect(xw(7) - 8, yw(WK[8][1]) - 4, WGAP + 16, yw(WK[7][2]) - yw(WK[8][1]) + 8, GREEN, 0.12, GREEN)
+# dreptunghiul de corespondență: exact barele weekly desfăcute în panoul daily
+ZX1, ZX2, ZY1, ZY2 = xw(Z0) - 8, xw(len(WK) - 1) + 8, WT - 10, w_bottom + 8
+rect(ZX1, ZY1, ZX2 - ZX1, ZY2 - ZY1, BLUE, 0.07, BLUE, "5 4")
+text(ZX2 + 12, ZY1 + 14, f"ultimele {ZOOM} săptămâni,", fill=BLUE, size=11)
+text(ZX2 + 12, ZY1 + 30, "mărite jos", fill=BLUE, size=11)
+
+# nivelurile comune, desenate identic pe ambele panouri
+COMMON = [(DH, f"{DH:.2f}", "high doji"), (DL, f"{DL:.2f}", "low doji")]
candles(WK, WX0, WGAP, yw)
-text(xw(7), yw(WK[7][2]) + 16, "doji weekly", fill=ORANGE, anchor="middle", bold=True)
-# săgeata weekly: ce + de ce
-arrow(300, yw(WK[8][3]) - 6, xw(8) + 12, yw(WK[8][3]) - 6, GREEN)
-text(306, yw(WK[8][3]) - 10, f"weekly: Buy Doji confirmat (close {WK[8][3]:.2f}, "
- f"peste high-ul doji-ului {WK[7][1]:.2f})", fill=GREEN, bold=True)
-text(306, yw(WK[8][3]) + 8, "deci direcția permisă e LONG: pe daily cauți doar Buy Doji",
- fill=GREEN)
-w_bottom = yw(min(b[2] for b in WK))
+for k, (lvl, lab, _) in enumerate(COMMON):
+ line(44, yw(lvl), ZX2 + 8, yw(lvl), BLUE, 1.2, "3 3")
+ text(40, yw(lvl) + (-2 if k == 0 else 11), lab, fill=BLUE, anchor="end", size=10,
+ panel="common")
+for k in range(ZOOM):
+ text(xw(Z0 + k), ZY2 - 6, f"S{k + 1}", fill=BLUE, anchor="middle",
+ size=10, bold=True, panel="common")
+arrow(470, yw(80.50), xw(8) + 11, yw(80.50), GREEN)
+text(476, yw(80.50) - 4, f"weekly: Buy Doji confirmat (close {WK[8][3]:.2f}, peste "
+ f"high-ul doji-ului {WK[7][1]:.2f})", fill=GREEN, bold=True, size=11)
+text(476, yw(80.50) + 14, "deci direcția permisă e LONG: pe daily cauți doar Buy Doji",
+ fill=GREEN, size=11)
+text(xw(7) + 5, ZY2 + 8, "doji weekly", fill=ORANGE, anchor="end", bold=True, size=10)
# ---- panoul de jos: daily -----------------------------------------------------
+PANEL = "daily"
DX0, DGAP, DS = 60, 18, 40.0
-DT = w_bottom + 110
-dmax = max(b[1] for b in DY)
+FT = w_bottom + 92 # marginea de sus a cadrului daily
+DT = FT + 14
+dmax, dmin = max(b[1] for b in DY), min(b[2] for b in DY)
yd = lambda p: DT + (dmax - p) * DS # noqa: E731
xd = lambda i: DX0 + i * DGAP # noqa: E731
-line(20, w_bottom + 34, W - 20, w_bottom + 34, "#ddd", 1)
-text(20, w_bottom + 56, f"daily: zilele de după confirmarea weekly "
- f"(open {DY[0][0]:.2f} = close-ul ei)", fill="#555", bold=True)
+FX1, FX2 = xd(0) - 14, xd(len(DY) - 1) + 14
+FB = max(yd(dmin), yd(TP1)) + 14
-LX1, LX2, COL = xd(9) - 10, 392, 400
+# ghidajele: colțurile de jos ale dreptunghiului -> colțurile de sus ale cadrului
+line(ZX1, ZY2, FX1, FT, BLUE, 1.2, "5 4")
+line(ZX2, ZY2, FX2, FT, BLUE, 1.2, "5 4")
+out.append(f'')
+text(FX2 + 34, ZY2 + 26, f"daily: aceleași {ZOOM} săptămâni, zi cu zi", fill=BLUE, bold=True)
+text(FX2 + 34, ZY2 + 44, f"({GROUP} zile = o bară weekly; open, close și extremele coincid)",
+ fill="#555", size=11)
+
+rect(xd(7) - 8, yd(DY[7][1]) - 3, DGAP + 16, yd(DY[8][2]) - yd(DY[7][1]) + 6, ORANGE, 0.15, ORANGE)
+for k, (lvl, lab, _) in enumerate(COMMON):
+ line(44, yd(lvl), FX2 + 14, yd(lvl), BLUE, 1.2, "3 3")
+ text(40, yd(lvl) + 4, lab, fill=BLUE, anchor="end", size=10, panel="common")
+
+LX2, COL = 340, 348
y_sl, y_e, y_tp = yd(SL), yd(ENTRY), yd(TP1)
assert abs((y_sl - y_e) - (y_e - y_tp)) < 1e-6, "SL-intrare != intrare-TP1 în px"
-rect(xd(9) - 8, yd(DY[9][1]) - 3, DGAP + 16, yd(DY[10][2]) - yd(DY[9][1]) + 6, ORANGE, 0.15, ORANGE)
-line(LX1, y_sl, LX2, y_sl, RED, 1.5, "6 3")
-line(xd(10) - 8, y_e, LX2, y_e, ORANGE, 1.5, "6 3")
-line(xd(10) - 8, y_tp, LX2, y_tp, GRAY, 1.5, "2 3")
-text(COL, y_sl + 4, f"stop {SL:.2f} = 5 cenți peste high-ul de 4 candele", fill=RED, size=11)
-text(COL, y_e + 4, f"intrare short {ENTRY:.2f}", fill=ORANGE, size=11)
-text(COL, y_tp + 4, f"ținta {TP1:.2f} — neatinsă (a scăzut o zi, la {LOW_AFTER:.2f})",
- fill=GRAY, size=11)
+line(44, y_sl, LX2, y_sl, RED, 1.5, "6 3")
+line(xd(8) - 8, y_e, LX2, y_e, ORANGE, 1.5, "6 3")
+line(xd(8) - 8, y_tp, LX2, y_tp, GRAY, 1.5, "2 3")
+text(COL, y_sl + 4, f"stop {SL:.2f}", fill=RED, size=11, bold=True)
+text(COL, y_e + 4, f"intrare short {ENTRY:.2f}", fill=ORANGE, size=11, bold=True)
+text(COL, y_tp + 4, f"ținta {TP1:.2f} = 1R — neatinsă", fill=GRAY, size=11)
candles(DY, DX0, DGAP, yd)
+for k in range(ZOOM):
+ text((xd(k * GROUP) + xd(k * GROUP + GROUP - 1)) / 2, FB + 16, f"S{k + 1}",
+ fill=BLUE, anchor="middle", size=10, bold=True, panel="common")
+text((xd(7) + xd(8)) / 2, yd(DY[7][1]) - 6, "doji daily", fill=ORANGE, anchor="middle",
+ bold=True, size=10)
-# SL lovit la bara 14: săgeată din dreapta sus
-cx14 = xd(HIT)
-out.append(f'')
-y_hit = DT - 40
-arrow(560, y_hit + 6, cx14 + 9, y_sl - 9, RED)
-text(568, y_hit, f"aici te-a scos: stopul {SL:.2f}, lovit a {HIT - 10}-a zi", fill=RED, bold=True)
-text(568, y_hit + 18, "banii mari de pe weekly cumpără mai departe", fill=RED)
+arrow(512, y_sl - 26, cx_hit + 9, y_sl - 9, RED)
+text(520, y_sl - 30, f"aici te-a scos: stopul {SL:.2f} (5 cenți peste high-ul de 4 candele),",
+ fill=RED, bold=True, size=11)
+text(520, y_sl - 12, f"lovit a {HIT - 8}-a zi — banii mari de pe weekly cumpără mai departe",
+ fill=RED, size=11)
-# intrarea short: săgeată de jos-dreapta spre close-ul confirmării
-y_bot = yd(min(b[2] for b in DY))
-x_e = xd(12) + 6
-arrow(x_e, y_tp + 30, xd(10) + 7, y_e + 4, ORANGE)
-text(x_e + 6, y_tp + 28, f"aici ai intrat SHORT, la {ENTRY:.2f}: Sell Doji corect ca formă",
- fill=ORANGE, bold=True)
-text(x_e + 6, y_tp + 46, f"(close sub low-ul doji-ului {DY[9][2]:.2f}) — dar contra weekly-ului",
- fill=ORANGE)
+arrow(512, y_e + 52, xd(8) + 8, y_e + 4, ORANGE)
+text(520, y_e + 48, f"aici ai intrat SHORT, la {ENTRY:.2f}: Sell Doji corect ca formă",
+ fill=ORANGE, bold=True, size=11)
+text(520, y_e + 66, f"(close sub low-ul doji-ului {DL:.2f}) — dar contra weekly-ului",
+ fill=ORANGE, size=11)
+text(520, y_e + 84, f"a scăzut o singură zi, până la {LOW_AFTER:.2f}", fill=ORANGE, size=11)
-y0 = max(y_bot, y_tp + 46) + 34
-text(20, y0, "Seria e construită: un singur caz ilustrează regula, nu o dovedește.", fill="#555")
-H = y0 + 24
+PANEL = "none"
+y0 = FB + 42
+text(20, y0, "Liniile albastre punctate sunt aceleași niveluri pe ambele panouri: "
+ "high-ul și low-ul doji-ului daily.", fill="#555", size=11)
+text(20, y0 + 18, "Seria e construită: un singur caz ilustrează regula, nu o dovedește.",
+ fill="#555", size=11)
+H = y0 + 40
+
+# --- niciun număr scris de mână: fiecare preț din etichete vine din serii ------
+WNUM = {f"{v:.2f}" for b in WK for v in b}
+DNUM = {f"{v:.2f}" for b in DY for v in b} | {f"{v:.2f}" for v in (SL, ENTRY, TP1, RISK)}
+CNUM = {f"{DH:.2f}", f"{DL:.2f}"}
+ALLOWED = {"weekly": WNUM, "daily": DNUM, "common": CNUM, "none": set()}
+for panel, s in texts:
+ for n in re.findall(r"\d+\.\d\d", s):
+ assert n in ALLOWED[panel], f"eticheta {panel} conține prețul străin {n}: {s!r}"
+# nivelurile comune apar cu exact același număr pe ambele panouri
+com = [s for p, s in texts if p == "common" and re.fullmatch(r"\d+\.\d\d", s)]
+for lab in (f"{DH:.2f}", f"{DL:.2f}"):
+ assert com.count(lab) == 2, f"nivelul comun {lab} nu apare pe ambele panouri: {com}"
svg = (f'")
assert "\n\n" not in svg
OUT.write_text(svg, encoding="utf-8")
-print(f"intrare {ENTRY:.2f} SL {SL:.2f} risc {RISK:.2f} TP1 {TP1:.2f} | min după {LOW_AFTER:.2f} | "
- f"SL lovit la bara {HIT}")
+for k in range(ZOOM):
+ print(f"S{k+1}: weekly {WK[Z0+k]} = zilele {k*GROUP}..{k*GROUP+GROUP-1}")
+print(f"intrare {ENTRY:.2f} SL {SL:.2f} risc {RISK:.2f} TP1 {TP1:.2f} | "
+ f"doji high {DH:.2f} low {DL:.2f} | min după {LOW_AFTER:.2f} | SL lovit la bara {HIT}")
print(f"scris {OUT} ({W}x{H:.0f})")
diff --git a/gen/strategii/buy_doji_directie.spec.txt b/gen/strategii/buy_doji_directie.spec.txt
index a518fa8..b389627 100644
--- a/gen/strategii/buy_doji_directie.spec.txt
+++ b/gen/strategii/buy_doji_directie.spec.txt
@@ -1,69 +1,113 @@
SPEC DIAGRAMĂ — buy_doji_directie
=================================
-tip: PRET, două panouri stivuite (sus weekly mic, jos daily)
+tip: PRET, două panouri stivuite (sus weekly, jos daily) legate prin zoom
destinație: summaries/17_STRATEGII/01_buy_doji.md, Pasul 2, după perechi_tf
cheie markdown:
titlu SVG: „NU: Sell Doji daily contra unui Buy Doji weekly — exemplu construit"
-stil: candele lipite (gap 15-18, body_w 9-10), fără volum; open = close anterior.
+stil: candele lipite (weekly gap 16, daily gap 18, body_w 9), fără volum;
+ open = close anterior pe ambele panouri.
CE TREBUIE SĂ DEMONSTREZE
-------------------------
Pe weekly s-a confirmat un Buy Doji. Pe daily, în uptrend-ul care urmează,
-apare un Sell Doji tehnic valid. Ca poziție short e contra direcției
-weekly: prețul scade o zi, apoi urcă și lovește SL-ul. Zona „short de 1-2
-zile" e marcată separat, ca să se vadă diferența dintre un short scurt
-înăuntrul structurii și o poziție contra ei.
+apare un Sell Doji tehnic valid. Ca poziție short e contra direcției weekly:
+prețul scade o singură zi, apoi urcă și lovește SL-ul a patra zi.
-SERIA — panoul de sus (weekly, 10 bare, (o,h,l,c))
---------------------------------------------------
-Close-uri: 88.0, 86.2, 84.9, 83.1, 81.6, 80.2, 78.9 (bara 0 open 89.0,
-fitile 0.15 peste/sub corp), apoi:
- 7 doji (78.90, 79.80, 77.60, 78.80)
- 8 confirm (78.80, 81.60, 78.60, 81.30)
- 9 (81.30, 82.70, 81.10, 82.40)
-Mark(7, "doji weekly"), Mark(8, "Buy Doji weekly: direcția = long").
+În plus (cerut de user, 20.09.2026): trebuie să se vadă **care bucată din
+weekly e mărită jos**. Deci panoul daily nu e o serie separată, ci
+descompunerea reală a ultimelor 3 bare weekly, iar corespondența e desenată.
-SERIA — panoul de jos (daily, 17 bare, (o,h,l,c))
--------------------------------------------------
-Barele 0-8, close-uri 81.7, 82.2, 82.0, 82.6, 83.1, 83.5, 83.3, 83.9, 84.4,
-open[0] = 81.30, fitile 0.15 peste/sub corp (uptrend de 9 candele).
- 9 doji (84.40, 84.80, 83.95, 84.35)
-10 confirmare (84.35, 84.45, 83.45, 83.60) close < low doji 83.95 => Sell Doji
-11 (83.60, 83.70, 83.00, 83.20)
-12 (83.20, 84.00, 83.10, 83.90)
-13 (83.90, 84.70, 83.80, 84.60)
-14 (84.60, 85.25, 84.50, 85.10) <- high 85.25 >= SL 84.80
-15 (85.10, 85.75, 85.00, 85.60)
-16 (85.60, 86.30, 85.50, 86.10)
+CORESPONDENȚA PANOURILOR (partea nouă)
+--------------------------------------
+1. AGREGARE REALĂ, nu ilustrativă. Seria daily are 15 bare = 3 săptămâni x 5
+ zile. Ultimele 3 bare weekly NU sunt scrise de mână: se calculează cu
+ agg(zile) = (open-ul primei zile, max high, min low, close-ul ultimei zile).
+ Un al doilea set de assert-uri reverifică relația pe valorile finale.
+2. DREPTUNGHI DE ZOOM pe panoul weekly peste exact barele 9..11 (albastru
+ #1a5fb4, fill 0.07, contur punctat), pe toată înălțimea panoului, cu
+ eticheta „ultimele 3 săptămâni, mărite jos" în dreapta lui.
+3. DOUĂ GHIDAJE punctate de la colțurile de jos ale dreptunghiului la
+ colțurile de sus ale cadrului panoului daily (cadrul daily e desenat
+ explicit, punctat, în aceeași culoare) — pâlnia de mărire.
+4. ETICHETE S1/S2/S3: pe weekly, sub fiecare din cele 3 bare mărite; pe daily,
+ sub fiecare grup de 5 zile, centrat. Aceleași etichete, aceeași culoare.
+5. NIVELURI COMUNE: high-ul (83.90) și low-ul (83.05) ale doji-ului
+ daily se desenează ca aceeași linie punctată albastră pe AMBELE panouri,
+ cu numărul etichetat în gutter-ul din stânga (x=40, anchor end) la aceeași
+ distanță de marginea stângă pe ambele panouri.
+
+SERIA — panoul de jos (daily, 15 bare, (o,h,l,c)) — SURSA ADEVĂRULUI
+--------------------------------------------------------------------
+Barele 0-5: trend(81.30, [81.70, 82.20, 82.00, 82.60, 83.10, 83.50]), fitile 0.15.
+ 6 (83.50, 84.30, 83.40, 83.60) zi de respingere sus — dă high-ul de referință
+ 7 doji (83.60, 83.90, 83.05, 83.55)
+ 8 confirmare (83.55, 83.65, 82.60, 82.70) close < low doji 83.05 => Sell Doji
+ 9 (82.70, 82.80, 82.00, 82.25) singura zi de scădere
+10 (82.25, 83.05, 82.15, 82.95)
+11 (82.95, 83.70, 82.85, 83.60)
+12 (83.60, 84.45, 83.50, 84.30) <- high 84.45 >= SL 84.35
+13 (84.30, 84.95, 84.20, 84.80)
+14 (84.80, 85.45, 84.70, 85.30)
+
+SERIA — panoul de sus (weekly, 12 bare)
+---------------------------------------
+Barele 0-6: trend(89.0, [88.0, 86.2, 84.9, 83.1, 81.6, 80.2, 78.9]), fitile 0.15.
+ 7 doji (78.90, 79.80, 77.60, 78.80)
+ 8 confirm (78.80, 81.60, 78.60, 81.30) => Buy Doji weekly, close 81.30
+ 9 S1 = agg(zilele 0..4) = (81.30, 83.25, 81.15, 83.10)
+10 S2 = agg(zilele 5..9) = (83.10, 84.30, 82.00, 82.25)
+11 S3 = agg(zilele 10..14) = (82.25, 85.45, 82.15, 85.30)
+Daily începe exact la close-ul confirmării weekly (81.30 = open-ul zilei 0).
NIVELURI (panoul daily)
-----------------------
-intrare short 83.60 (portocaliu), stop 84.85 roșu („stop 84.85 = 5 cenți peste
-high-ul de 4 candele"), ținta 82.35 punctată („neatinsă — a scăzut o zi, la 83.00").
-Stopul e 5 cenți peste extremă, ca oglinda pasului 5 din capitol (51.60 -> 51.55).
-Paranteza „short de 1-2 zile: permis" a fost scoasă (nuanță de nivel 3, încărca
-pasul mecanic), la fel și insignele de colț — locul lor îl iau săgețile.
+intrare short 82.70 (portocaliu), stop 84.35 roșu, ținta 81.05 = 1R punctată
+(neatinsă — a scăzut o zi, până la 82.00). Stopul e 5 cenți peste high-ul
+ultimelor 4 candele (max = 84.30 la bara 6), ca oglinda pasului 5 din capitol.
+Risc 1.65; SL−intrare și intrare−TP1 sunt egale și în px (assert).
+Distanțele stop↔high-doji și intrare↔low-doji sunt ținute > 0.30 printr-un
+assert, altfel etichetele lor s-ar suprapune la 40 px/unitate.
SĂGEȚI (format tutorial v2: ce ȘI de ce, 1 pe weekly + 2 pe daily)
-- weekly, spre confirmare: „weekly: Buy Doji confirmat (close 81.30, peste
- high-ul doji-ului 79.80)" / „deci direcția permisă e LONG: pe daily cauți
- doar Buy Doji".
-- daily, spre close-ul confirmării: „aici ai intrat SHORT, la 83.60: Sell Doji
- corect ca formă (close sub low-ul doji-ului 83.95) — dar contra weekly-ului".
-- daily, spre bara 14 pe linia stopului: „aici te-a scos: stopul 84.85, lovit a
- patra zi" / „banii mari de pe weekly cumpără mai departe".
+- weekly: „Buy Doji confirmat (close 81.30, peste high-ul doji-ului 79.80)" /
+ „deci direcția permisă e LONG: pe daily cauți doar Buy Doji".
+- daily, spre close-ul confirmării: „aici ai intrat SHORT, la 82.70: Sell Doji
+ corect ca formă" / „(close sub low-ul doji-ului 83.05) — dar contra
+ weekly-ului" / „a scăzut o singură zi, până la 82.00".
+- daily, spre bara 12 pe linia stopului: „aici te-a scos: stopul 84.35 (5 cenți
+ peste high-ul de 4 candele)," / „lovit a 4-a zi — banii mari de pe weekly
+ cumpără mai departe".
Zone: verde peste doji-ul + confirmarea weekly, portocalie peste Sell Doji-ul
-daily (portocaliu, nu roșu, ca să nu se confunde cu linia stopului).
-Lățime 900 (textele săgeților stau în dreapta candelelor).
+daily. Lățime 900.
ASSERT-URI
----------
1. open[i] == close[i-1] pe ambele panouri; h/l cuprind o/c.
-2. Doji weekly și doji daily: abs(o-c) <= 0.10*(h-l).
-3. weekly close[8] > high[7]; daily close[10] < low[9].
-4. SL == max(h for bare daily 7..10) + 0.05 == 84.85; risc == 1.25; TP1 == 82.35.
-5. min(l for bare daily 11..16) == 83.00 > 82.35 (TP1 neatins).
-6. primul i>10 cu high >= 84.85 este 14.
+2. Agregarea: pentru fiecare k, weekly[9+k] == agg(daily[5k:5k+5]) — open,
+ close, max(high), min(low), verificate separat.
+3. daily[0].open == weekly[8].close.
+4. Doji weekly și doji daily: abs(o-c) <= 0.10*(h-l).
+5. weekly close[8] > high[7]; daily close[8] < low[7].
+6. SL == max(h for daily 5..8) + 0.05 == 84.35; risc == 1.65; TP1 == 81.05.
+7. SL − high_doji > 0.30 și low_doji − intrare > 0.30 (anti-suprapunere).
+8. min(l for daily 9..14) == 82.00 > 81.05 (TP1 neatins).
+9. primul i>8 cu high >= 84.35 este 12.
+10. SL−intrare == intrare−TP1 în pixeli.
+11. NICIUN NUMĂR SCRIS DE MÂNĂ: fiecare text emis e etichetat cu panoul lui
+ (weekly / daily / common / none); după desen, orice token \d+\.\d\d din
+ orice etichetă trebuie să fie în mulțimea derivată a panoului respectiv.
+ Eticheta unui panou nu poate conține prețul celuilalt panou; excepția e
+ mulțimea „common" (high/low doji daily), permisă pe ambele.
+12. Fiecare nivel comun apare cu EXACT același șir de două zecimale de două
+ ori (o dată pe fiecare panou).
+13. Fără linii goale în SVG.
+
+VERIFICARE VIZUALĂ (20.09.2026)
+-------------------------------
+Randat cu chrome headless, citit ca imagine: pâlnia de ghidaje arată clar
+cele 3 săptămâni mărite; 83.90 și 83.05 sunt aceeași linie, cu același număr,
+pe ambele panouri; niciun text nu se suprapune și nimic nu iese din viewBox.
+audit_diagrams.py: curat.
SURSA
-----
diff --git a/gen/strategii/buy_doji_directie.svg b/gen/strategii/buy_doji_directie.svg
index 04986e3..a71a129 100644
--- a/gen/strategii/buy_doji_directie.svg
+++ b/gen/strategii/buy_doji_directie.svg
@@ -1,83 +1,106 @@
-
-
+
NU: Sell Doji daily contra unui Buy Doji weekly — exemplu construit
weekly: direcția
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- doji weekly
-
-
- weekly: Buy Doji confirmat (close 81.30, peste high-ul doji-ului 79.80)
- deci direcția permisă e LONG: pe daily cauți doar Buy Doji
-
- daily: zilele de după confirmarea weekly (open 81.30 = close-ul ei)
-
-
-
-
- stop 84.85 = 5 cenți peste high-ul de 4 candele
- intrare short 83.60
- ținta 82.35 — neatinsă (a scăzut o zi, la 83.00)
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- aici te-a scos: stopul 84.85, lovit a 4-a zi
- banii mari de pe weekly cumpără mai departe
-
-
- aici ai intrat SHORT, la 83.60: Sell Doji corect ca formă
- (close sub low-ul doji-ului 83.95) — dar contra weekly-ului
- Seria e construită: un singur caz ilustrează regula, nu o dovedește.
+
+
+ ultimele 3 săptămâni,
+ mărite jos
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 83.90
+
+ 83.05
+ S1
+ S2
+ S3
+
+
+ weekly: Buy Doji confirmat (close 81.30, peste high-ul doji-ului 79.80)
+ deci direcția permisă e LONG: pe daily cauți doar Buy Doji
+ doji weekly
+
+
+
+ daily: aceleași 3 săptămâni, zi cu zi
+ (5 zile = o bară weekly; open, close și extremele coincid)
+
+
+ 83.90
+
+ 83.05
+
+
+
+ stop 84.35
+ intrare short 82.70
+ ținta 81.05 = 1R — neatinsă
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ S1
+ S2
+ S3
+ doji daily
+
+
+
+ aici te-a scos: stopul 84.35 (5 cenți peste high-ul de 4 candele),
+ lovit a 4-a zi — banii mari de pe weekly cumpără mai departe
+
+
+ aici ai intrat SHORT, la 82.70: Sell Doji corect ca formă
+ (close sub low-ul doji-ului 83.05) — dar contra weekly-ului
+ a scăzut o singură zi, până la 82.00
+ Liniile albastre punctate sunt aceleași niveluri pe ambele panouri: high-ul și low-ul doji-ului daily.
+ Seria e construită: un singur caz ilustrează regula, nu o dovedește.
@@ -1460,244 +1483,252 @@ asumat cumperi de vreo patru ori mai multe acțiuni.
daily. „MICI" e numele dat de curs variantei ținute luni de zile, pornită
dintr-un Buy Doji weekly.
-
-
- Aceeași regulă pe trei perechi — exemplu construit (fără ticker)
- A. weekly → daily
- weekly: direcția
- daily: intrarea
-
- doji + confirmare:
- aici se decide direcția
-
- high doji weekly 105.20
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- apoi cobori
- pe graficul mic
-
- doji la nivel:
- aici intri
-
-
-
-
- ținta 1:1 107.50
- intrare 106.30
- nivel din weekly
- stop 105.10
- sub ultimele
- 4 candele
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- pullback: 8 candele
-
- stop 4,77 %
-
- stop 1,13 %
-
- același setup, stop de 4 ori mai mic
- → de 4 ori mai multe acțiuni la același risc
-
- B. monthly → weekly
- monthly: direcția
- weekly: intrarea
-
- doji + confirmare:
- aici se decide direcția
-
- high doji monthly 113.00
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- apoi cobori
- pe graficul mic
-
- doji la nivel:
- aici intri
-
-
-
-
- ținta 1:1 118.75
- intrare 115.75
- nivel din monthly
- stop 112.75
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- C. daily → 60 min
- daily: direcția
- 60 min: intrarea
-
- doji + confirmare:
- aici se decide direcția
-
- high doji daily 102.08
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- apoi cobori
- pe graficul mic
-
- doji la nivel:
- aici intri
-
-
-
-
- ținta 1:1 103.00
- intrare 102.52
- nivel din daily
- stop 102.04
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+ Aceeași regulă pe trei perechi — graficul mic e lupa pe ultimele candele mari
+ A. weekly → daily
+ weekly: direcția
+ daily: descompunerea ultimelor 3 candele weekly
+
+ doji + confirmare:
+ aici se decide direcția
+
+
+ high doji weekly
+ 105.20
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ lupă:
+ ultimele 3
+ candele weekly
+
+
+
+ doji la nivel, apoi confirmare: aici intri
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ținta 1:1 107.50
+ intrare 106.30
+ nivel weekly 105.20
+ stop 105.10
+ sub ultimele 4 bare
+
+ pullback: 8 candele în jos, fără minim nou
+
+ stop 4,77 %
+
+ stop 1,13 %
+
+ același setup, stop de 4,2 ori mai mic
+ → de 4,2 ori mai multe acțiuni la același risc
+
+ B. monthly → weekly
+ monthly: direcția
+ weekly: descompunerea ultimelor 3 candele monthly
+
+ doji + confirmare:
+ aici se decide direcția
+
+
+ high doji monthly
+ 113.00
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ lupă:
+ ultimele 3
+ candele monthly
+
+
+
+ doji la nivel, apoi confirmare: aici intri
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ținta 1:1 118.75
+ intrare 115.75
+ nivel monthly 113.00
+ stop 112.75
+
+ pullback: 8 candele în jos, fără minim nou
+
+ C. daily → 60 min
+ daily: direcția
+ 60 min: descompunerea ultimelor 2 candele daily
+
+ doji + confirmare:
+ aici se decide direcția
+
+
+ high doji daily
+ 102.08
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ lupă:
+ ultimele 2
+ candele daily
+
+
+
+ doji la nivel, apoi confirmare: aici intri
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ținta 1:1 103.00
+ intrare 102.52
+ nivel daily 102.08
+ stop 102.04
+
+ pullback: 8 candele în jos, fără minim nou
diff --git a/summaries/17_STRATEGII/01_buy_doji.md b/summaries/17_STRATEGII/01_buy_doji.md
index 42d4347..89ff13a 100644
--- a/summaries/17_STRATEGII/01_buy_doji.md
+++ b/summaries/17_STRATEGII/01_buy_doji.md
@@ -334,88 +334,111 @@ Un Sell Doji weekly „nu înseamnă neapărat că se va materializa", dar la
început îl tratezi ca pe un stop.
-
+
NU: Sell Doji daily contra unui Buy Doji weekly — exemplu construit
weekly: direcția
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- doji weekly
-
-
- weekly: Buy Doji confirmat (close 81.30, peste high-ul doji-ului 79.80)
- deci direcția permisă e LONG: pe daily cauți doar Buy Doji
-
- daily: zilele de după confirmarea weekly (open 81.30 = close-ul ei)
-
-
-
-
- stop 84.85 = 5 cenți peste high-ul de 4 candele
- intrare short 83.60
- ținta 82.35 — neatinsă (a scăzut o zi, la 83.00)
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- aici te-a scos: stopul 84.85, lovit a 4-a zi
- banii mari de pe weekly cumpără mai departe
-
-
- aici ai intrat SHORT, la 83.60: Sell Doji corect ca formă
- (close sub low-ul doji-ului 83.95) — dar contra weekly-ului
- Seria e construită: un singur caz ilustrează regula, nu o dovedește.
+
+
+ ultimele 3 săptămâni,
+ mărite jos
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 83.90
+
+ 83.05
+ S1
+ S2
+ S3
+
+
+ weekly: Buy Doji confirmat (close 81.30, peste high-ul doji-ului 79.80)
+ deci direcția permisă e LONG: pe daily cauți doar Buy Doji
+ doji weekly
+
+
+
+ daily: aceleași 3 săptămâni, zi cu zi
+ (5 zile = o bară weekly; open, close și extremele coincid)
+
+
+ 83.90
+
+ 83.05
+
+
+
+ stop 84.35
+ intrare short 82.70
+ ținta 81.05 = 1R — neatinsă
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ S1
+ S2
+ S3
+ doji daily
+
+
+
+ aici te-a scos: stopul 84.35 (5 cenți peste high-ul de 4 candele),
+ lovit a 4-a zi — banii mari de pe weekly cumpără mai departe
+
+
+ aici ai intrat SHORT, la 82.70: Sell Doji corect ca formă
+ (close sub low-ul doji-ului 83.05) — dar contra weekly-ului
+ a scăzut o singură zi, până la 82.00
+ Liniile albastre punctate sunt aceleași niveluri pe ambele panouri: high-ul și low-ul doji-ului daily.
+ Seria e construită: un singur caz ilustrează regula, nu o dovedește.
@@ -1470,244 +1493,252 @@ daily. „MICI" e numele dat de curs variantei ținute luni de zile, pornită
dintr-un Buy Doji weekly.
-
-
- Aceeași regulă pe trei perechi — exemplu construit (fără ticker)
- A. weekly → daily
- weekly: direcția
- daily: intrarea
-
- doji + confirmare:
- aici se decide direcția
-
- high doji weekly 105.20
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- apoi cobori
- pe graficul mic
-
- doji la nivel:
- aici intri
-
-
-
-
- ținta 1:1 107.50
- intrare 106.30
- nivel din weekly
- stop 105.10
- sub ultimele
- 4 candele
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- pullback: 8 candele
-
- stop 4,77 %
-
- stop 1,13 %
-
- același setup, stop de 4 ori mai mic
- → de 4 ori mai multe acțiuni la același risc
-
- B. monthly → weekly
- monthly: direcția
- weekly: intrarea
-
- doji + confirmare:
- aici se decide direcția
-
- high doji monthly 113.00
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- apoi cobori
- pe graficul mic
-
- doji la nivel:
- aici intri
-
-
-
-
- ținta 1:1 118.75
- intrare 115.75
- nivel din monthly
- stop 112.75
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- C. daily → 60 min
- daily: direcția
- 60 min: intrarea
-
- doji + confirmare:
- aici se decide direcția
-
- high doji daily 102.08
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- apoi cobori
- pe graficul mic
-
- doji la nivel:
- aici intri
-
-
-
-
- ținta 1:1 103.00
- intrare 102.52
- nivel din daily
- stop 102.04
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+ Aceeași regulă pe trei perechi — graficul mic e lupa pe ultimele candele mari
+ A. weekly → daily
+ weekly: direcția
+ daily: descompunerea ultimelor 3 candele weekly
+
+ doji + confirmare:
+ aici se decide direcția
+
+
+ high doji weekly
+ 105.20
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ lupă:
+ ultimele 3
+ candele weekly
+
+
+
+ doji la nivel, apoi confirmare: aici intri
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ținta 1:1 107.50
+ intrare 106.30
+ nivel weekly 105.20
+ stop 105.10
+ sub ultimele 4 bare
+
+ pullback: 8 candele în jos, fără minim nou
+
+ stop 4,77 %
+
+ stop 1,13 %
+
+ același setup, stop de 4,2 ori mai mic
+ → de 4,2 ori mai multe acțiuni la același risc
+
+ B. monthly → weekly
+ monthly: direcția
+ weekly: descompunerea ultimelor 3 candele monthly
+
+ doji + confirmare:
+ aici se decide direcția
+
+
+ high doji monthly
+ 113.00
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ lupă:
+ ultimele 3
+ candele monthly
+
+
+
+ doji la nivel, apoi confirmare: aici intri
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ținta 1:1 118.75
+ intrare 115.75
+ nivel monthly 113.00
+ stop 112.75
+
+ pullback: 8 candele în jos, fără minim nou
+
+ C. daily → 60 min
+ daily: direcția
+ 60 min: descompunerea ultimelor 2 candele daily
+
+ doji + confirmare:
+ aici se decide direcția
+
+
+ high doji daily
+ 102.08
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ lupă:
+ ultimele 2
+ candele daily
+
+
+
+ doji la nivel, apoi confirmare: aici intri
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ținta 1:1 103.00
+ intrare 102.52
+ nivel daily 102.08
+ stop 102.04
+
+ pullback: 8 candele în jos, fără minim nou