From 08d2b8ef7aacaa7041157f5b167964a7343ba84b Mon Sep 17 00:00:00 2001 From: Claude Agent Date: Mon, 14 Sep 2026 06:04:47 +0000 Subject: [PATCH] Analiza Zilnica 06: structura de trend si patternuri (17 diagrame) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Al saselea document de strategie, cel mai mare pana acum: 2550 de linii. Fiecare pattern are diagrama lui, cu trigger, intrare, SL si tinta, si perechea DA/NU unde exista varianta care eseueaza. Acoperite: swing low / high cu confirmarea prin lumanarea din dreapta (DA/NU), higher low, double bottom cu al doilea picior mai sus si mai jos plus varianta NU care e de fapt bear flag, double top cu evening star pe short, cup & handle (DA, NU fara volum, si fractalul W/D cu close-urile de vineri = close-urile weekly), descending wedge (DA si breakout fals), ascending wedge, ascending triangle cu retest si bull harami, island top, triple doji, inverted H&S, bull flag vs. double bottom. Assert pe fiecare nivel si pe structura afirmata: HH/HL, piciorul 2 mai sus sau mai jos, volum mai mic la piciorul 2, liniile de wedge neatinse, doji, harami, gap-uri, R desenat = R calculat. Layout: generatorul are patru ajutoare noi - eticheta scrisa sub linie cand deasupra ar tăia o linie apropiata, callout cu linie subtire pana la bara descrisa, si dy calculat din linia de trend. Toate cele 17 screenshot-uri citite de doua ori, inainte si dupa fiecare reparatie, si fiecare eticheta mutata verificata ca inca indica bara corecta (linia subtire o arata). Cifre corectate odata cu desenul, pentru ca textul si eticheta sa spuna la fel: triunghi SL 49.80 si R 1.8, island SL 44.20 si R 2.6 (textul spunea 2.8R iar eticheta 2.7R), bull flag SL 49.80 si R 1.9. Neacoperite, cu motiv: spike low sub consolidare doar ca gotcha, rounding bottom apare in surse doar ca nume fara regula, McClellan / RSP / stochastic nu se pot desena pe grafic de pret, H&S normal e in Modul 4. Co-Authored-By: Claude Opus 5 (1M context) Claude-Session: https://claude.ai/code/session_01MtSTyTmt6AbCL9j5ajEDm1 --- gen/az_structura.py | 892 ++++++ .../06_structura_trend.html | 2683 +++++++++++++++++ .../08_ANALIZA_ZILNICA/06_structura_trend.md | 2550 ++++++++++++++++ 3 files changed, 6125 insertions(+) create mode 100644 gen/az_structura.py create mode 100644 summaries/08_ANALIZA_ZILNICA/06_structura_trend.html create mode 100644 summaries/08_ANALIZA_ZILNICA/06_structura_trend.md diff --git a/gen/az_structura.py b/gen/az_structura.py new file mode 100644 index 0000000..2742aa0 --- /dev/null +++ b/gen/az_structura.py @@ -0,0 +1,892 @@ +"""Diagramele pentru summaries/08_ANALIZA_ZILNICA/06_structura_trend.md. + +Toate prețurile sunt construite (fără ticker). Rulează: + .venv/bin/python gen/az_structura.py +Înlocuiește în .md fiecare bloc ... cu output-ul +generatorului. Ca să schimbi o cifră, o schimbi aici și rulezi din nou. + +Liniile de trend (wedge, triunghi) se calculează din high-urile / low-urile +candelelor și se inserează în SVG cu aceleași funcții de coordonate ale +graficului (ch._cx, ch._y) — nu sunt desenate de mână. +""" +import re +import sys +from pathlib import Path + +sys.path.insert(0, "/workspace/atm-curs-dl") +from svg_candles import Chart, Level, Mark, MA, from_closes # noqa: E402 + +MD = Path("/workspace/atm-curs-dl/summaries/08_ANALIZA_ZILNICA/06_structura_trend.md") +GRAY, RED, GREEN, BLUE, ORANGE, INK = "#777", "#c00", "#188a3e", "#1a5fb4", "#b06000", "#333" +STYLE = dict(gap=15, body_w=9, left=44, width=620) +svgs = {} + + +def wk(n, over=None, base=(0.3, 0.3)): + """wick-uri: `base` peste tot, cu excepțiile din `over` {index: (sus, jos)}""" + w = [base] * n + for i, v in (over or {}).items(): + w[i] = v + return w + + +def px_ratio(ch, a, b, c): + """raportul (c-b)/(b-a) măsurat în pixeli, după render""" + return (ch._y(b) - ch._y(c)) / (ch._y(a) - ch._y(b)) + + +def is_sl(cds, i): + return cds[i].l < cds[i - 1].l and cds[i].l < cds[i + 1].l + + +def is_sh(cds, i): + return cds[i].h > cds[i - 1].h and cds[i].h > cds[i + 1].h + + +def doji(c): + return abs(c.o - c.c) <= 0.15 and (c.h - c.l) >= 3 * abs(c.o - c.c) + + +def line_at(i1, p1, i2, p2, i): + return p1 + (p2 - p1) * (i - i1) / (i2 - i1) + + +def with_lines(ch, svg, lines): + """lines: (i1, p1, i2, p2, i_end, culoare) — linie de trend prin două puncte, prelungită până la i_end""" + out = [] + for i1, p1, i2, p2, ie, col in lines: + pe = line_at(i1, p1, i2, p2, ie) + out.append(f'') + return svg.replace("", "\n " + "\n ".join(out), 1) + + +def add(svg, elems): + """elemente SVG în plus, desenate peste tot restul""" + return svg.replace("\n", "\n " + "\n ".join(elems) + "\n") + + +def lbl_below(ch, price, text, color, at="right"): + """eticheta unui Level, SUB linie (când deasupra ar tăia o linie apropiată); nivelul se dă cu text gol""" + x, anc = (ch.width - 28, "end") if at == "right" else (30, "start") + return f'{text}' + + +def callout(ch, i, price, text, color, anchor="middle", below=False): + """text la prețul `price` deasupra (sau sub) barei i, cu o linie subțire până la bară""" + c = ch.candles[i] + x, ty = ch._cx(i), ch._y(price) + tx = x - 4 if anchor == "start" else (x + 4 if anchor == "end" else x) + y1, y2 = (ty - 13, ch._y(c.l) + 3) if below else (ty + 3, ch._y(c.h) - 3) + return (f'\n ' + f'{text}') + + +def dy_line(c, scale, p_line, off, where): + """dy pentru un Mark pe candela c, ca baseline-ul textului să stea la `off` px de prețul p_line + (off<0 = deasupra). Diferențele de y depind doar de scară, deci merge înainte de render.""" + if where == "above": + return (c.h - p_line) * scale + off + 10 + return (c.l - p_line) * scale + off - 20 + + +def first_hit_up(cds, start, price): + return next(i for i in range(start, len(cds)) if cds[i].h >= price - 1e-9) + + +def first_hit_down(cds, start, price): + return next(i for i in range(start, len(cds)) if cds[i].l <= price + 1e-9) + + +# =============================================================== 1. scărița + confirmarea swing low-ului +stair = [40.0, 40.9, 41.6, 42.4, # 0-3 urcare, SH la 3 + 41.9, 41.3, 41.0, # 4-6 pullback, SL la 6 + 41.8, 42.7, 43.5, 44.1, # 7-10 HH la 10 + 43.6, 43.0, 42.6, # 11-13 HL la 13 + 43.4, 44.3, 45.2, 45.8, # 14-17 HH la 17 + 45.3, 44.7, 44.3, # 18-20 HL la 20 + 45.1, 46.0, 46.9, 47.5, # 21-24 HH la 24 + 47.0, 46.4, 46.0] # 25-27 bara 27 = low „în formare" +SH_I, SL_I = [3, 10, 17, 24], [6, 13, 20, 27] +stair_w = {i: (0.7, 0.3) for i in SH_I} | {i: (0.3, 0.7) for i in SL_I} + +cl = stair + [47.0, # 28 candela din dreapta: confirmă + 47.6, 48.3, 48.0, 48.9, 49.6, 49.3, 50.1, 50.6] +cds = from_closes(cl, wicks=wk(len(cl), stair_w | {28: (0.2, 0.3)}), start=39.6) +for i in SH_I: + assert is_sh(cds, i), f"bara {i} nu e swing high" +for i in SL_I: + assert is_sl(cds, i), f"bara {i} nu e swing low" +highs = [cds[i].h for i in SH_I] +lows = [cds[i].l for i in SL_I] +assert all(b > a for a, b in zip(highs, highs[1:])), "vârfurile nu sunt higher highs" +assert all(b > a for a, b in zip(lows, lows[1:])), "minimele nu sunt higher lows" +HL = 27 +assert cds[HL + 1].c > cds[HL].h and cds[HL + 1].l > cds[HL].l, "candela din dreapta nu confirmă" +entry = cds[HL + 1].c +sl = round(cds[HL].l - 0.1, 2) +step = cds[24].h - cds[20].l +tp = round(cds[HL].l + step, 2) +risk = entry - sl +R = (tp - entry) / risk +hit = first_hit_up(cds, HL + 2, tp) +assert R >= 1.5, R +print(f"S1 HH {[round(x, 2) for x in highs]} HL {[round(x, 2) for x in lows]} entry {entry:.2f} SL {sl:.2f} " + f"treaptă {step:.2f} TP {tp:.2f} = {R:.2f}R atins la {hit} ({hit - HL - 1} candele)") +ch = Chart(candles=cds, + levels=[Level(sl, f"SL {sl:.2f}", RED), + Level(entry, f"intrare {entry:.2f}", GREEN, label_at="left"), + Level(tp, f"TP {tp:.2f} = {R:.1f}R", BLUE, label_at="left")], + marks=[Mark(3, "SH", INK, "above"), Mark(6, "SL", INK, "below"), + Mark(10, "HH", GREEN, "above"), Mark(13, "HL", GREEN, "below"), + Mark(17, "HH", GREEN, "above", dy=-14), Mark(20, "HL", GREEN, "below"), + Mark(24, "HH", GREEN, "above"), Mark(HL, "HL", GREEN, "below")], + mas=[MA(20, ORANGE, dash="4 3")], + scale=24, title="Exemplu construit (fără ticker) — daily", + caption="Linia punctată = SMA-20. Bara 27 devine higher low abia când bara 28 închide peste high-ul ei.", + **{**STYLE, "width": 700}) +svg_ = add(ch.render(), [callout(ch, HL + 1, 49.0, "confirmare", GREEN)]) +assert abs(px_ratio(ch, sl, entry, tp) - R) < 0.01 +svgs["scarita_da"] = svg_ +S1 = dict(entry=entry, sl=sl, tp=tp, hl=cds[HL].l, hl20=cds[20].l) + +# =============================================================== 2. scărița NU: candela din dreapta sparge +cl = stair + [45.2, # 28 low sub low-ul barei 27 + 44.6, 45.0, 44.1, 43.4, 43.8, 42.9, 42.5] +cds = from_closes(cl, wicks=wk(len(cl), stair_w), start=39.6) +last_hl = cds[20].l +assert cds[28].l < cds[27].l, "bara 28 nu sparge low-ul barei 27" +assert not is_sl(cds, 27), "bara 27 n-ar trebui să mai fie swing low" +brk = next(i for i in range(28, len(cds)) if cds[i].c < last_hl) +print(f"S2 low 27 {cds[27].l:.2f}, bara 28 low {cds[28].l:.2f} close {cds[28].c:.2f}; " + f"ultimul HL confirmat {last_hl:.2f} spart la close {cds[brk].c:.2f} (bara {brk})") +ch = Chart(candles=cds, + levels=[Level(cds[27].l, f"HL? {cds[27].l:.2f} (în formare)", GRAY), + Level(last_hl, f"ultimul HL confirmat {last_hl:.2f}", RED, label_at="left")], + marks=[Mark(24, "HH", GREEN, "above"), Mark(20, "HL", GREEN, "below"), + Mark(brk, "lower low", RED, "below")], + scale=24, title="Exemplu construit (fără ticker) — daily", + caption="Candela din dreapta închide sub low: nu există higher low. Sub 43.60 scărița e ruptă.", + **{**STYLE, "width": 700}) +svgs["scarita_nu"] = add(ch.render(), [callout(ch, 27, 47.2, "HL în formare?", GRAY, anchor="start")]) +S2 = dict(low27=cds[27].l, c28=cds[28].c, last_hl=last_hl, brk_c=cds[brk].c) + +# =============================================================== 3. double bottom, al doilea picior mai sus +down = [38.0, 37.2, 37.6, 36.5, 35.6, 35.9, 34.8, 33.9, 34.2, 33.0, 32.1, 31.4] # 0-11 +bounce = [31.4, 32.1, 31.8, 32.5, 32.9, 32.3, 31.7] # 13-19 +cl = down + [30.6] + bounce + [31.2, # 20 picior 2 + 32.1, # 21 confirmare + 32.6, 32.3, 33.8, 34.3, 34.0, 34.9, 35.6, 35.3, 36.2, 36.8] +cds = from_closes(cl, wicks=wk(len(cl), {12: (0.3, 0.6), 17: (0.4, 0.3), 20: (0.3, 0.4), 21: (0.2, 0.3)}), + start=38.6) +L1, L2, CF = 12, 20, 21 +neck = max(c.h for c in cds[L1 + 1:L2]) +assert neck == cds[17].h +assert is_sl(cds, L1) and is_sl(cds, L2) +assert cds[L2].l > cds[L1].l, "al doilea picior trebuie să fie mai sus" +assert cds[CF].c > cds[L2].h and cds[CF].l > cds[L2].l +entry = cds[CF].c +sl = round(cds[L2].l - 0.1, 2) +risk = entry - sl +tp = round(neck + (neck - cds[L1].l), 2) +R = (tp - entry) / risk +bo = next(i for i in range(CF, len(cds)) if cds[i].c > neck) +hit = first_hit_up(cds, CF + 1, tp) +assert hit == len(cds) - 1 and R >= 2.5 +print(f"S3 picior1 {cds[L1].l:.2f} picior2 {cds[L2].l:.2f} neck {neck:.2f} entry {entry:.2f} SL {sl:.2f} " + f"TP {tp:.2f} = {R:.2f}R; breakout la {bo} close {cds[bo].c:.2f}; TP atins la {hit}") +ch = Chart(candles=cds, + levels=[Level(neck, f"neckline {neck:.2f}", ORANGE, label_at="left"), + Level(sl, f"SL {sl:.2f}", RED), + Level(entry, f"intrare {entry:.2f}", GREEN), + Level(tp, f"TP {tp:.2f} = {R:.1f}R", BLUE)], + marks=[Mark(L1, f"picior 1: {cds[L1].l:.2f}", RED, "below"), + Mark(L2, f"picior 2: {cds[L2].l:.2f} (mai sus)", GREEN, "below", dy=12), + Mark(bo, "breakout", GREEN, "above", dy=-4)], + scale=26, title="Exemplu construit (fără ticker) — daily", + caption="Intrare la confirmarea piciorului 2; ținta = neckline + înălțimea pattern-ului.", + **{**STYLE, "width": 700}) +svg_ = ch.render() +assert abs(px_ratio(ch, sl, entry, tp) - R) < 0.01 +svgs["db_mai_sus"] = svg_ +S3 = dict(l1=cds[L1].l, l2=cds[L2].l, neck=neck, entry=entry, sl=sl, tp=tp, R=R, bo_c=cds[bo].c) + +# =============================================================== 4. double bottom, al doilea picior mai jos (stop hunt) +cl = down + [30.6] + bounce + [31.4 - 0.8, # 20 coborâre + 30.3, # 21 picior 2: hammer sub picior 1 + 31.5, # 22 trigger + 32.2, 31.9, 33.0, 33.9, 34.4, 34.1, 35.2, 36.0, 35.6, 36.9] +vols = [52, 50, 44, 55, 58, 46, 60, 62, 48, 64, 66, 68, 74, + 46, 42, 38, 40, 44, 40, 46, 50, 52, 70, 60, 48, 62, 72, 58, 46, 60, 58, 44, 56] +cds = from_closes(cl, wicks=wk(len(cl), {12: (0.3, 0.6), 17: (0.4, 0.3), 21: (0.3, 0.9), 22: (0.2, 0.3)}), + vols=vols, start=38.6) +L1, L2, TR = 12, 21, 22 +neck = max(c.h for c in cds[L1 + 1:L2]) +leg1, leg2 = cds[L1].l, cds[L2].l +assert is_sl(cds, L1) and is_sl(cds, L2) +assert leg2 < leg1, "al doilea picior trebuie să fie mai jos" +body = abs(cds[L2].c - cds[L2].o) +assert min(cds[L2].o, cds[L2].c) - cds[L2].l >= 2.5 * body, "piciorul 2 nu e hammer" +assert vols[L2] < vols[L1] * 0.75, "volumul pe piciorul 2 trebuie să fie clar mai mic" +assert cds[TR].c > cds[L2].h and cds[TR].c > leg1, "trigger-ul nu închide peste high-ul hammer-ului" +entry = cds[TR].c +sl = round(leg2 - 0.1, 2) +risk = entry - sl +tp = round(neck + (neck - leg2), 2) +R = (tp - entry) / risk +hit = first_hit_up(cds, TR + 1, tp) +assert hit == len(cds) - 1 and R >= 2.2 +print(f"S4 picior1 {leg1:.2f} (vol {vols[L1]}) picior2 {leg2:.2f} (vol {vols[L2]}) neck {neck:.2f} " + f"entry {entry:.2f} SL {sl:.2f} TP {tp:.2f} = {R:.2f}R atins la {hit}") +ch = Chart(candles=cds, + levels=[Level(leg1, f"picior 1 {leg1:.2f}", GRAY, label_at="left"), + Level(sl, f"SL {sl:.2f}", RED), + Level(entry, f"intrare {entry:.2f}", GREEN), + Level(tp, f"TP {tp:.2f} = {R:.1f}R", BLUE)], + marks=[Mark(L1, "picior 1", RED, "below", dy=8), + Mark(L2, "picior 2: stop-uri luate", RED, "below", dy=2), + Mark(TR, "trigger", GREEN, "above", dy=-30), + Mark(17, f"neckline {neck:.2f}", ORANGE, "above")], + scale=24, vol_h=70, title="Exemplu construit (fără ticker) — daily", + caption="Piciorul 2 sparge 30.00 cu volum mai mic decât piciorul 1, apoi închide înapoi peste.", + **{**STYLE, "width": 700}) +svg_ = ch.render() +assert abs(px_ratio(ch, sl, entry, tp) - R) < 0.01 +svgs["db_mai_jos"] = svg_ +S4 = dict(leg1=leg1, leg2=leg2, neck=neck, entry=entry, sl=sl, tp=tp, R=R, v1=vols[L1], v2=vols[L2]) + +# =============================================================== 5. double bottom NU: e bear flag +cl = down + [30.6, # 12 picior 1 + 31.0, 31.4, 31.1, 31.7, 31.9, 31.6, 32.0, # 13-19 bear flag: urcare lentă, volum mic + 31.2, 30.5, # 20-21 + 30.2, # 22 „picior 2", volum mare + 30.9, # 23 cumpărătorul grăbit intră + 30.5, 29.6, 28.8, 29.1, 28.0, 27.3, 27.6, 26.8] +vols = [52, 50, 44, 55, 58, 46, 60, 62, 48, 64, 66, 68, 74, + 40, 38, 36, 38, 34, 36, 38, 62, 66, 78, 42, 60, 84, 76, 50, 80, 72, 48, 70] +cds = from_closes(cl, wicks=wk(len(cl), {12: (0.3, 0.6), 22: (0.3, 0.5)}), vols=vols, start=38.6) +L1, L2, EN = 12, 22, 23 +leg1, leg2 = cds[L1].l, cds[L2].l +flag_up = sum(vols[13:20]) / 7 +assert leg2 < leg1 and cds[EN].c > cds[L2].h +assert vols[L2] > vols[L1], "pe NU vânzătorii vin cu volum mai mare la piciorul 2 (fără divergență)" +assert flag_up < sum(vols[0:12]) / 12 * 0.75, "urcarea din bear flag trebuie să aibă volum mic" +assert max(c.h for c in cds[13:20]) < 32.6, "bear flag-ul nu ajunge nici la jumătatea downtrend-ului" +entry = cds[EN].c +sl = round(leg2 - 0.1, 2) +stop_bar = first_hit_down(cds, EN + 1, sl) +assert cds[stop_bar].c < leg2 +print(f"S5 picior1 {leg1:.2f} vol {vols[L1]}, picior2 {leg2:.2f} vol {vols[L2]}, flag high " + f"{max(c.h for c in cds[13:20]):.2f}; intrare grăbită {entry:.2f} SL {sl:.2f} atins la {stop_bar} " + f"close {cds[stop_bar].c:.2f}; final {cds[-1].c:.2f}") +ch = Chart(candles=cds, + levels=[Level(entry, f"intrare grăbită {entry:.2f}", GRAY, label_at="left"), + Level(leg1, f"picior 1 {leg1:.2f}", ORANGE), + Level(sl, "", RED)], + marks=[Mark(16, "bear flag? volum mic", GRAY, "above", dy=-6), + Mark(L2, "volum mai mare", RED, "below", dy=2), + Mark(stop_bar, "SL atins", RED, "below", dy=36)], + scale=24, vol_h=70, title="Exemplu construit (fără ticker) — daily", + caption="Fără divergență de volum, „double bottom-ul în formare\" e doar un bear flag.", **STYLE) +svgs["db_nu"] = add(ch.render(), [lbl_below(ch, sl, f"SL {sl:.2f}", RED, at="left")]) +S5 = dict(leg1=leg1, leg2=leg2, entry=entry, sl=sl, v1=vols[L1], v2=vols[L2], stop_c=cds[stop_bar].c) + +# =============================================================== 6. double top, al doilea vârf mai sus + evening star (short) +cl = [52.0, 52.8, 52.5, 53.6, 54.4, 54.1, 55.3, 56.2, 55.9, 57.2, 58.4, # 0-10 uptrend + 59.6, # 11 vârf 1 + 59.0, 58.2, 57.5, 57.3, # 12-15 pullback, neckline + 57.9, 58.6, # 16-17 + 59.8, # 18 evening star (a): cumpărători + 59.7, # 19 evening star (b): shooting star, vârf 2 + 58.9, # 20 evening star (c): vânzători, intrare short + 58.3, 58.6, 57.4, 56.5, 56.9, 55.8, 54.9, 55.3, 54.0, 53.4] +vols = [48, 50, 42, 52, 54, 44, 56, 58, 46, 60, 62, 64, 50, 52, 54, 48, 44, 46, 50, 58, 70, + 62, 44, 66, 80, 50, 70, 66, 48, 64, 60] +cds = from_closes(cl, wicks=wk(len(cl), {11: (0.4, 0.3), 15: (0.3, 0.4), 18: (0.2, 0.2), 19: (0.9, 0.2), + 20: (0.2, 0.3), 30: (0.3, 0.3)}), vols=vols, start=51.6) +T1, T2, EV = 11, 19, 20 +top1, top2 = cds[T1].h, cds[T2].h +neck = min(c.l for c in cds[T1 + 1:T2]) +assert is_sh(cds, T1) and is_sh(cds, T2) +assert top2 > top1, "al doilea vârf trebuie să fie mai sus" +a, b, c_ = cds[18], cds[19], cds[20] +assert a.c > a.o and (a.c - a.o) >= 1.0, "(a) nu e lumânare mare a cumpărătorilor" +assert abs(b.c - b.o) <= 0.15 and b.h - max(b.o, b.c) >= 5 * abs(b.c - b.o), "(b) nu e shooting star" +assert c_.c < c_.o and c_.c < (a.o + a.c) / 2, "(c) nu închide sub jumătatea lui (a)" +entry = c_.c +sl = round(top2 + 0.1, 2) +risk = sl - entry +tp = round(neck - (top2 - neck), 2) +R = (entry - tp) / risk +brk = next(i for i in range(EV + 1, len(cds)) if cds[i].c < neck) +hit = first_hit_down(cds, EV + 1, tp) +assert hit == len(cds) - 1 and R >= 2.5 +print(f"S6 vârf1 {top1:.2f} vârf2 {top2:.2f} neck {neck:.2f} short {entry:.2f} SL {sl:.2f} TP {tp:.2f} = {R:.2f}R; " + f"neckline spart la {brk} close {cds[brk].c:.2f}; TP atins la {hit}") +ch = Chart(candles=cds, + levels=[Level(sl, f"SL {sl:.2f}", RED), + Level(entry, f"intrare short {entry:.2f}", GREEN, label_at="left"), + Level(neck, f"neckline {neck:.2f}", ORANGE), + Level(tp, f"TP {tp:.2f} = {R:.1f}R", BLUE), + Level(63.2, "", "none")], # invizibil: loc deasupra pentru etichetele vârfurilor + marks=[Mark(T1, f"vârf 1: {top1:.2f}", INK, "above", dy=-22), + Mark(T2, "evening star", RED, "above", dy=-16), + Mark(T2, f"vârf 2: {top2:.2f}", RED, "above", dy=-30), +], + scale=22, vol_h=70, title="Exemplu construit (fără ticker) — daily", + caption="Oglinda double bottom-ului cu piciorul 2 mai jos: vârful 2 ia stop-urile short-urilor.", + **{**STYLE, "width": 700}) +svg_ = add(ch.render(), [callout(ch, brk, 55.0, "neckline spart", RED, anchor="end", below=True)]) +assert abs(px_ratio(ch, tp, entry, sl) - 1 / R) < 0.01 +svgs["double_top"] = svg_ +S6 = dict(top1=top1, top2=top2, neck=neck, entry=entry, sl=sl, tp=tp, R=R) + +# =============================================================== 7. cup & handle weekly: DA +PIV_M = 47.50 +cup = [45.0, 45.9, 46.8, 47.9, 48.9, 49.8, # 0-5 urcare până la marginea stângă + 49.0, 47.8, 46.5, 45.2, 44.2, 43.4, 42.9, # 6-12 coborâre rotunjită + 42.8, # 13 doji în fundul ceștii + 43.6, # 14 buy doji + 44.1, 44.9, 45.8, 46.9, 47.9, 48.8, 49.5, # 15-21 partea dreaptă + 49.9, # 22 marginea dreaptă + 49.5, 49.0, 48.6, 48.9, 49.4] # 23-27 mânerul +cup_w = {5: (0.5, 0.3), 12: (0.3, 0.3), 13: (0.5, 0.6), 22: (0.4, 0.3), 25: (0.3, 0.4)} +cup_v = [40, 44, 42, 46, 48, 50, 52, 50, 48, 46, 44, 40, 36, 42, 58, 46, 48, 50, 52, 54, 52, 50, 48, + 34, 32, 30, 32, 36] +cl = cup + [51.0, # 28 breakout din mâner, volum țeavă + 51.8, 51.4, 52.6, 53.5, 53.1, 54.4, 55.3, 55.0, 56.4, 57.6, 58.2] +cds = from_closes(cl, wicks=wk(len(cl), cup_w | {28: (0.2, 0.3)}), + vols=cup_v + [96, 66, 50, 64, 68, 52, 66, 70, 50, 66, 64, 62], start=44.4) +RL, RR, DJ, BD, BO = 5, 22, 13, 14, 28 +rimL, rimR = cds[RL].h, cds[RR].h +cup_low = min(c.l for c in cds[RL:RR]) +handle_top = max(c.h for c in cds[RR:BO]) +handle_low = min(c.l for c in cds[RR + 1:BO]) +depth = rimR - cup_low +assert abs(rimL - rimR) <= 0.1, "marginile ceștii nu sunt la același nivel" +assert handle_top == rimR +assert doji(cds[DJ]) and cds[BD].c > cds[DJ].h and cup_low == cds[DJ].l, "buy doji-ul nu e din fundul ceștii" +assert (rimR - handle_low) / depth <= 1 / 3, "mânerul coboară mai mult de 1/3 din ceașcă" +assert handle_low > PIV_M, "mânerul trebuie să stea deasupra pivotului monthly" +assert cds[BO].c > handle_top and cds[BO].vol == max(c.vol for c in cds), "breakout fără cel mai mare volum" +entry = cds[BO].c +sl = round(handle_low - 0.1, 2) +risk = entry - sl +tp = round(rimR + depth, 2) +R = (tp - entry) / risk +hit = first_hit_up(cds, BO + 1, tp) +assert hit == len(cds) - 1 and R >= 2.4 +print(f"S7 margini {rimL:.2f}/{rimR:.2f} fund {cup_low:.2f} adâncime {depth:.2f} mâner low {handle_low:.2f} " + f"({(rimR - handle_low) / depth:.2f} din adâncime) entry {entry:.2f} SL {sl:.2f} TP {tp:.2f} = {R:.2f}R " + f"atins la {hit} ({hit - BO} săptămâni)") +ch = Chart(candles=cds, + levels=[Level(PIV_M, "", ORANGE), + Level(sl, f"SL {sl:.2f}", RED), + Level(entry, f"intrare {entry:.2f}", GREEN), + Level(tp, f"TP {tp:.2f} = {R:.1f}R", BLUE)], + marks=[Mark(RL, "margine", INK, "above", dy=-12), Mark(RR, "margine", INK, "above", dy=-12), + Mark(DJ, "ceașca", GRAY, "below", dy=4), Mark(BD, "buy doji", GREEN, "above", dy=-20), + Mark(25, "mâner", ORANGE, "below", dy=4), Mark(BO, "breakout", GREEN, "above", dy=-4)], + scale=16, vol_h=70, title="Exemplu construit (fără ticker) — weekly", + caption="Trigger = închiderea peste mâner, cu cel mai mare volum din serie; ținta = adâncimea ceștii.", + **{**STYLE, "width": 760}) +svg_ = add(ch.render(), [lbl_below(ch, PIV_M, f"pivot monthly {PIV_M:.2f}", ORANGE)]) +assert abs(px_ratio(ch, sl, entry, tp) - R) < 0.01 +svgs["cup_da"] = svg_ +S7 = dict(rim=rimR, low=cup_low, depth=depth, hlow=handle_low, entry=entry, sl=sl, tp=tp, R=R, weeks=hit - BO) +CUP = dict(entry=entry, sl=sl, tp=tp, handle_top=handle_top, handle_low=handle_low, closes=cl[RR:BO + 1]) + +# =============================================================== 8. cup & handle NU: breakout fără volum +cl = cup + [50.6, # 28 breakout, volum sub media mânerului + 50.1, 49.4, 48.7, 47.9, 47.3, 47.8, 46.9, 46.2, 46.6] +vv = cup_v + [30, 34, 40, 46, 58, 60, 44, 56, 58, 42] +cds = from_closes(cl, wicks=wk(len(cl), cup_w), vols=vv, start=44.4) +assert cds[BO].c > handle_top +assert vv[BO] < sum(vv[RR:BO]) / (BO - RR), "breakout-ul NU trebuie să aibă volum peste media mânerului" +entry = cds[BO].c +sl = round(handle_low - 0.1, 2) +stop_bar = first_hit_down(cds, BO + 1, sl) +back_in = next(i for i in range(BO + 1, len(cds)) if cds[i].c < handle_top) +assert back_in == BO + 1 +print(f"S8 breakout {entry:.2f} vol {vv[BO]} (media mânerului {sum(vv[RR:BO]) / (BO - RR):.0f}), înapoi sub " + f"{handle_top:.2f} la {back_in}, SL {sl:.2f} atins la {stop_bar} ({stop_bar - BO} săpt.), final {cds[-1].c:.2f}") +ch = Chart(candles=cds, + levels=[Level(PIV_M, "", ORANGE), + Level(sl, f"SL {sl:.2f}", RED), + Level(entry, f"intrare {entry:.2f}", GREEN)], + marks=[Mark(BD, "buy doji", GREEN, "above", dy=-20), Mark(25, "mâner", ORANGE, "below", dy=4), + Mark(BO, "breakout fără volum", RED, "above", dy=-4), + Mark(stop_bar, "SL atins", RED, "below", dy=4)], + scale=16, vol_h=70, title="Exemplu construit (fără ticker) — weekly", + caption="Aceeași ceașcă. Breakout-ul are cel mai mic volum de la fundul ceștii încoace: cade înapoi.", + **{**STYLE, "width": 760}) +svgs["cup_nu"] = add(ch.render(), [lbl_below(ch, PIV_M, f"pivot monthly {PIV_M:.2f}", ORANGE)]) +S8 = dict(entry=entry, sl=sl, vol=vv[BO], vol_avg=sum(vv[RR:BO]) / (BO - RR), weeks=stop_bar - BO) + +# =============================================================== 9. fractalul: mânerul weekly e o ceașcă pe daily +daily = [49.8, 49.6, 49.8, 49.6, 49.5, # săpt. 23 + 49.3, 49.4, 49.1, 49.2, 49.0, # săpt. 24 + 48.8, 48.9, 48.6, 48.7, 48.6, # săpt. 25 — fundul ceștii mici + 48.8, 48.7, 48.9, 49.0, 48.9, # săpt. 26 + 49.1, 49.3, 49.5, 49.6, 49.4, # săpt. 27 — marginea dreaptă (23), mânerul mic începe + 49.2, 49.5, 50.1, 50.4, 51.0] # săpt. 28 — mâner mic (25), breakout daily (27) +cds = from_closes(daily, wicks=wk(len(daily), {12: (0.3, 0.4)}), start=CUP["closes"][0]) +weekly_closes = CUP["closes"][1:] +assert [round(daily[4 + 5 * k], 2) for k in range(6)] == weekly_closes, "close-urile de vineri ≠ close-urile weekly" +assert abs(min(c.l for c in cds[:25]) - CUP["handle_low"]) < 1e-9, "fundul ceștii mici ≠ low-ul mânerului weekly" +assert max(c.h for c in cds[:25]) <= CUP["handle_top"] + 1e-9 +MR = 23 +mini_rim = max(c.h for c in cds[18:25]) +assert mini_rim == cds[MR].h +mini_handle_low = min(c.l for c in cds[MR + 1:27]) +trig = next(i for i in range(MR + 1, len(cds)) if cds[i].c > mini_rim) +entry = cds[trig].c +sl = round(mini_handle_low - 0.1, 2) +assert trig == 27 and entry < CUP["handle_top"], "trigger-ul daily trebuie să vină sub nivelul de breakout weekly" +assert sl > CUP["sl"] and entry < CUP["entry"] +R_d = (CUP["tp"] - entry) / (entry - sl) +R_w = (CUP["tp"] - CUP["entry"]) / (CUP["entry"] - CUP["sl"]) +print(f"S9 margine mică {mini_rim:.2f}, mâner mic low {mini_handle_low:.2f}, trigger daily la {trig} close {entry:.2f} " + f"SL {sl:.2f} risc {entry - sl:.2f}; aceeași țintă {CUP['tp']:.2f} = {R_d:.1f}R daily vs {R_w:.1f}R weekly") +ch = Chart(candles=cds, + levels=[Level(CUP["handle_top"], f"breakout weekly {CUP['handle_top']:.2f}", ORANGE, label_at="left"), + Level(entry, "", GREEN), + Level(sl, f"SL daily {sl:.2f}", RED)], + marks=[Mark(12, "ceașca mică", GRAY, "below", dy=4), + Mark(MR, "margine", INK, "above", dy=-26), + Mark(25, "mâner mic", ORANGE, "below", dy=5)], + scale=70, title="Exemplu construit (fără ticker) — daily, în mânerul weekly", + caption="Cele 6 săptămâni ale mânerului, pe daily: trigger-ul vine cu 2 zile înainte de cel weekly.", + **{**STYLE, "width": 760, "gap": 19}) +svg_ = add(ch.render(), [callout(ch, trig, 48.3, "trigger daily", GREEN, below=True), + lbl_below(ch, entry, f"intrare daily {entry:.2f}", GREEN)]) +svgs["cup_fractal"] = svg_ +S9 = dict(entry=entry, sl=sl, R_d=R_d, R_w=R_w, rim=mini_rim, hlow=mini_handle_low) + +# =============================================================== 10. descending wedge: DA +pre = [55.0, 54.2, 54.5, 53.4, 52.6] # 0-4 downtrend +wedge = [52.0, # 5 + 52.5, # 6 SH1 + 51.6, 50.6, 49.8, 49.1, # 7-10 (10 = SL1) + 49.8, 50.4, 51.0, # 11-13 (13 = SH2) + 50.2, 49.2, 48.4, # 14-16 (16 = SL2) + 49.1, 49.9, # 17-18 (18 = SH3) + 49.0, 48.3, 47.9, # 19-21 (21 = SL3) + 48.3, 48.8, # 22-23 (23 = SH4) + 48.0, 47.6, 47.3, # 24-26 (26 = SL4) + 47.6] # 27 +W_SH, W_SL = [6, 13, 18, 23], [10, 16, 21, 26] +w_over = {i: (0.5, 0.3) for i in W_SH} | {i: (0.3, 0.5) for i in W_SL} | {27: (0.2, 0.3)} +w_vol = [60, 58, 54, 62, 64, 56, 52, 58, 56, 54, 52, 44, 42, 40, 46, 44, 42, 36, 34, 38, 36, 34, 30, 30, + 32, 30, 28, 30] +BO_W = 28 + + +def wedge_series(after, after_vols, mirror=False): + cl_ = pre + wedge + after + if mirror: + cl_ = [round(100 - x, 2) for x in cl_] + ov = w_over if not mirror else {i: (d, u) for i, (u, d) in w_over.items()} + return from_closes(cl_, wicks=wk(len(cl_), ov), vols=w_vol + after_vols, + start=(55.8 if not mirror else 100 - 55.8)) + + +def wedge_lines(cds_, falling=True): + """falling: vârfurile la W_SH, minimele la W_SL; la oglindă (rising) rolurile se inversează""" + hs, ls = (W_SH, W_SL) if falling else (W_SL, W_SH) + hi = (hs[0], cds_[hs[0]].h, hs[-1], cds_[hs[-1]].h) + lo = (ls[0], cds_[ls[0]].l, ls[-1], cds_[ls[-1]].l) + return hi, lo, hs, ls + + +def check_wedge(cds_, falling=True): + hi, lo, hs, ls = wedge_lines(cds_, falling) + for i in range(W_SH[0], BO_W): + assert cds_[i].h <= line_at(*hi, i) + 0.12, f"bara {i} străpunge linia de sus" + assert cds_[i].l >= line_at(*lo, i) - 0.12, f"bara {i} străpunge linia de jos" + for i in hs: + assert is_sh(cds_, i), f"bara {i} nu e swing high" + for i in ls: + assert is_sl(cds_, i), f"bara {i} nu e swing low" + s_hi = (hi[3] - hi[1]) / (hi[2] - hi[0]) + s_lo = (lo[3] - lo[1]) / (lo[2] - lo[0]) + if falling: + assert s_hi < s_lo < 0, "nu e descending wedge (linii care coboară și converg)" + else: + assert 0 < s_hi < s_lo, "nu e ascending wedge (linii care urcă și converg)" + for a_, b_ in zip(hs, hs[1:]): + assert (cds_[b_].h < cds_[a_].h) == falling + for a_, b_ in zip(ls, ls[1:]): + assert (cds_[b_].l < cds_[a_].l) == falling + return hi, lo + + +after = [48.6, # 28 breakout peste linia de sus, volum țeavă + 49.3, 49.0, 50.1, 50.8, 50.5, 51.6, 52.3, 52.1, 52.8] +cds = wedge_series(after, [92, 70, 52, 66, 70, 50, 64, 62, 48, 60]) +hi, lo = check_wedge(cds) +upper_at_bo = line_at(*hi, BO_W) +assert cds[BO_W].c > upper_at_bo and cds[BO_W - 1].c < line_at(*hi, BO_W - 1) +assert cds[BO_W].vol == max(c.vol for c in cds[W_SH[0]:]) +entry = cds[BO_W].c +sl = round(cds[W_SL[-1]].l - 0.1, 2) +tp = round(cds[W_SH[0]].h, 2) +risk = entry - sl +R = (tp - entry) / risk +hit = first_hit_up(cds, BO_W + 1, tp) +assert hit == len(cds) - 1 and R >= 1.8 +print(f"S10 SH {[round(cds[i].h, 2) for i in W_SH]} SL {[round(cds[i].l, 2) for i in W_SL]} linia sus la " + f"breakout {upper_at_bo:.2f}; entry {entry:.2f} SL {sl:.2f} TP {tp:.2f} = {R:.2f}R atins la {hit}") +ch = Chart(candles=cds, + levels=[Level(sl, f"SL {sl:.2f}", RED, label_at="left"), + Level(entry, f"intrare {entry:.2f}", GREEN), + Level(tp, f"TP {tp:.2f} = {R:.1f}R", BLUE)], + marks=[Mark(14, "descending wedge", ORANGE, "below", dy=dy_line(cds[14], 30, line_at(*lo, 14), 22, "below"))], + scale=30, vol_h=70, title="Exemplu construit (fără ticker) — daily", + caption="Minime și maxime tot mai jos, dar tot mai apropiate: vânzătorii obosesc.", + **{**STYLE, "width": 700}) +svg_ = add(with_lines(ch, ch.render(), [(*hi, BO_W, ORANGE), (*lo, BO_W, ORANGE)]), + [callout(ch, BO_W, 50.0, "breakout + volum", GREEN, anchor="end")]) +assert abs(px_ratio(ch, sl, entry, tp) - R) < 0.01 +svgs["wedge_desc_da"] = svg_ +S10 = dict(entry=entry, sl=sl, tp=tp, R=R, line=upper_at_bo, vol=cds[BO_W].vol) + +# =============================================================== 11. descending wedge NU: breakout fals +after = [48.3, # 28 închide peste linie, dar cu volum mic + 47.7, 47.1, 46.5, 45.8, 46.2, 45.4] +cds = wedge_series(after, [31, 40, 50, 62, 66, 48, 60]) +hi, lo = check_wedge(cds) +assert cds[BO_W].c > line_at(*hi, BO_W) +assert cds[BO_W].vol < sum(w_vol[W_SH[0]:]) / len(w_vol[W_SH[0]:]), "breakout-ul fals are volum sub medie" +entry = cds[BO_W].c +sl = round(cds[W_SL[-1]].l - 0.1, 2) +stop_bar = first_hit_down(cds, BO_W + 1, sl) +print(f"S11 breakout fals {entry:.2f} vol {cds[BO_W].vol} (media wedge {sum(w_vol[W_SH[0]:]) / len(w_vol[W_SH[0]:]):.0f}); " + f"SL {sl:.2f} atins la {stop_bar} ({stop_bar - BO_W} candele)") +ch = Chart(candles=cds, + levels=[Level(sl, f"SL {sl:.2f}", RED, label_at="left"), + Level(entry, f"intrare {entry:.2f}", GREEN)], + marks=[Mark(14, "descending wedge", ORANGE, "below", dy=dy_line(cds[14], 30, line_at(*lo, 14), 22, "below")), + Mark(BO_W, "breakout fără volum", RED, "above", dy=-18), + Mark(stop_bar, "SL atins", RED, "below", dy=20)], + scale=30, vol_h=70, title="Exemplu construit (fără ticker) — daily", + caption="Aceeași compresie. Close peste linie, dar volumul e cel mai mic din serie: fals.", + **{**STYLE, "width": 700}) +svgs["wedge_desc_nu"] = with_lines(ch, ch.render(), [(*hi, BO_W, ORANGE), (*lo, BO_W, ORANGE)]) +S11 = dict(entry=entry, sl=sl, vol=cds[BO_W].vol, n=stop_bar - BO_W) + +# =============================================================== 12. ascending wedge la rezistența monthly (short) +after = [48.6, 49.3, 49.0, 50.1, 50.8, 50.5, 51.6, 52.3, 52.1, 52.8] # oglinda breakout-ului din S10 +cds = wedge_series(after, [92, 70, 52, 66, 70, 50, 64, 62, 48, 60], mirror=True) +hi_, lo_ = check_wedge(cds, falling=False) +lower_at_bo = line_at(*lo_, BO_W) +assert cds[BO_W].c < lower_at_bo and cds[BO_W - 1].c > line_at(*lo_, BO_W - 1) +RES_M = round(cds[W_SL[-1]].h, 2) +assert all(c.h <= RES_M + 1e-9 for c in cds[:BO_W]), "rezistența monthly trebuie să fie maximul seriei" +entry = cds[BO_W].c +sl = round(cds[W_SL[-1]].h + 0.1, 2) +tp = round(cds[W_SH[0]].l, 2) +risk = sl - entry +R = (entry - tp) / risk +hit = first_hit_down(cds, BO_W + 1, tp) +assert hit == len(cds) - 1 and R >= 1.8 +print(f"S12 rezistență monthly {RES_M:.2f}; linia jos la breakdown {lower_at_bo:.2f}; short {entry:.2f} SL {sl:.2f} " + f"TP {tp:.2f} = {R:.2f}R atins la {hit}") +ch = Chart(candles=cds, + levels=[Level(sl, f"SL {sl:.2f}", RED), + Level(entry, f"intrare short {entry:.2f}", GREEN, label_at="left"), + Level(tp, f"TP {tp:.2f} = {R:.1f}R", BLUE)], + marks=[Mark(2, "uptrend", GRAY, "below", dy=8), + Mark(14, "ascending wedge", ORANGE, "above", dy=dy_line(cds[14], 30, line_at(*hi_, 14), -8, "above")), + Mark(W_SL[-1], "rezistență monthly", RED, "above", dy=-4)], + scale=30, vol_h=70, title="Exemplu construit (fără ticker) — daily", + caption="Oglinda: vârfuri tot mai sus, dar tot mai mici, lipite de rezistența monthly.", + **{**STYLE, "width": 760}) +svg_ = add(with_lines(ch, ch.render(), [(*hi_, BO_W, ORANGE), (*lo_, BO_W, ORANGE)]), + [callout(ch, BO_W, 49.7, "breakdown + volum", RED, anchor="end", below=True)]) +assert abs(px_ratio(ch, tp, entry, sl) - 1 / R) < 0.01 +svgs["wedge_asc"] = svg_ +S12 = dict(entry=entry, sl=sl, tp=tp, R=R, res=RES_M) + +# =============================================================== 13. ascending triangle, breakout, retest + bull harami +TOP = 50.00 +cl = [44.0, 44.9, 45.5, 46.4, 47.3, 48.4, 49.1, # 0-6 + 49.7, # 7 atinge 50.00 + 49.0, 48.1, 47.1, # 8-10 (10 = low 1) + 47.8, 48.6, 49.3, 49.7, # 11-14 (14 atinge 50.00) + 49.1, 48.4, 48.0, # 15-17 (17 = low 2) + 48.7, 49.3, 49.7, # 18-20 (20 atinge 50.00) + 49.2, 48.8, # 21-22 (22 = low 3) + 49.3, 49.6, # 23-24 + 50.9, # 25 breakout + 51.4, 50.9, # 26-27 + 50.3, # 28 retest: low exact pe 50.00 + 50.5, # 29 bull harami + 51.1, # 30 trigger + 51.7, 51.4, 52.3, 52.9, 52.6, 53.2] +vols = [40, 44, 42, 46, 48, 52, 50, 54, 44, 42, 46, 40, 38, 42, 44, 36, 34, 38, 36, 34, 38, 30, 32, 30, 34, + 88, 60, 44, 40, 38, 62, 56, 42, 58, 60, 44, 56] +cds = from_closes(cl, wicks=wk(len(cl), {10: (0.3, 0.5), 17: (0.3, 0.4), 22: (0.3, 0.3)}), vols=vols, start=43.6) +T_LO = [10, 17, 22] +BO_T, RT, HAR, TR = 25, 28, 29, 30 +assert all(c.h <= TOP + 1e-9 for c in cds[5:BO_T]), "o bară din triunghi trece peste 50.00" +touch = [i for i in range(5, BO_T) if abs(cds[i].h - TOP) < 1e-9] +assert sum(1 for i in touch if i - 1 not in touch) >= 3, "rezistența nu e atinsă de 3 ori separat" +t_lows = [cds[i].l for i in T_LO] +assert all(b > a for a, b in zip(t_lows, t_lows[1:])), "minimele triunghiului nu urcă" +lo_t = (T_LO[0], t_lows[0], T_LO[1], t_lows[1]) +for i in range(T_LO[0], BO_T): + assert cds[i].l >= line_at(*lo_t, i) - 0.12, f"bara {i} străpunge linia ascendentă" +assert cds[BO_T].c > TOP and cds[BO_T].vol == max(vols) +assert abs(cds[RT].l - TOP) < 1e-9 and cds[RT].c > TOP, "retestul nu atinge 50.00 cu codița" +har, mom = cds[HAR], cds[RT] +assert mom.c < mom.o and har.c > har.o and min(har.o, har.c) >= mom.c and max(har.o, har.c) <= mom.o, "nu e bull harami" +assert cds[TR].c > har.h +entry = cds[TR].c +sl = round(TOP - 0.2, 2) +height = TOP - t_lows[0] +tp = round(TOP + height, 2) +risk = entry - sl +R = (tp - entry) / risk +hit = first_hit_up(cds, TR + 1, tp) +assert hit == len(cds) - 1 and R >= 1.75 +print(f"S13 low-uri {[round(x, 2) for x in t_lows]} breakout close {cds[BO_T].c:.2f} retest low {cds[RT].l:.2f} " + f"harami {har.o:.2f}->{har.c:.2f} entry {entry:.2f} SL {sl:.2f} înălțime {height:.2f} TP {tp:.2f} = {R:.2f}R") +ch = Chart(candles=cds, + levels=[Level(TOP, f"rezistență = pivot quarterly {TOP:.2f}", ORANGE), + Level(sl, "", RED), + Level(entry, f"intrare {entry:.2f}", GREEN), + Level(tp, f"TP {tp:.2f} = {R:.1f}R", BLUE)], + marks=[Mark(17, "ascending triangle", ORANGE, "below", dy=dy_line(cds[17], 30, line_at(*lo_t, 17), 16, "below")), + Mark(BO_T, "breakout", GREEN, "above", dy=-4), + Mark(RT, "retest", ORANGE, "below", dy=4), + Mark(HAR, "harami", GREEN, "below", dy=22)], + scale=30, vol_h=70, title="Exemplu construit (fără ticker) — daily", + caption="Breakout, cădere înapoi pe fosta rezistență, bull harami acolo: intrare la trigger.", + **{**STYLE, "width": 760}) +svg_ = add(with_lines(ch, ch.render(), [(*lo_t, BO_T, ORANGE)]), [lbl_below(ch, sl, f"SL {sl:.2f}", RED)]) +assert abs(px_ratio(ch, sl, entry, tp) - R) < 0.01 +svgs["triunghi_asc"] = svg_ +S13 = dict(lows=t_lows, bo=cds[BO_T].c, entry=entry, sl=sl, tp=tp, R=R, height=height) + +# =============================================================== 14. island top, apoi cumpărarea în gap-ul închis +PIV_Q = 44.50 +segA = from_closes([40.0, 40.8, 41.5, 41.2, 42.1, 42.9, 42.6, 43.5, 44.0, 44.2], wick=0.3, start=39.6) +segB = from_closes([45.6, 46.4, 46.1, 47.0, 47.8, 47.5, 48.4, 49.2, 49.0, 49.6], wick=0.3, start=45.2) +segC = from_closes([51.6, 51.9, 51.5, 51.2], wick=0.3, start=51.0) +segD = from_closes([49.4, 49.7, 48.8, 48.1, 48.4, 47.5, 46.8, 47.1, 46.2, 45.5, 45.1, + 45.0, # hammer: închide gap-ul de jos + 45.9, # trigger + 46.6, 46.3, 47.4, 48.3, 48.0, 49.2, 50.0], + wicks=wk(20, {11: (0.2, 0.6), 12: (0.2, 0.3)}), start=50.0) +cds = segA + segB + segC + segD +vols = [40, 44, 38, 46, 48, 42, 50, 52, 50, 60, 72, 56, 44, 58, 60, 46, 62, 64, 50, 66, + 88, 70, 60, 64, 90, 56, 70, 64, 48, 66, 68, 50, 64, 62, 50, 70, 80, 58, 44, 60, 64, 46, 60, 58] +assert len(vols) == len(cds) +for c, v in zip(cds, vols): + c.vol = v +iA, iB, iC, iD = 0, len(segA), len(segA) + len(segB), len(segA) + len(segB) + len(segC) +gap1 = (cds[iB - 1].h, cds[iB].l) +gap2 = (cds[iC - 1].h, cds[iC].l) +isl_low = min(c.l for c in cds[iC:iD]) +gap3 = (cds[iD].h, isl_low) +assert gap1[1] > gap1[0] and gap2[1] > gap2[0] and gap3[1] > gap3[0], "lipsesc gap-urile" +assert all(c.l > gap2[0] for c in cds[iC:iD]) and all(c.h < isl_low for c in cds[iD:]), "insula nu e izolată" +assert max(c.h for c in cds[iC:iD]) == max(c.h for c in cds), "insula nu e vârful" +HAM, TRI = iD + 11, iD + 12 +fill = next(i for i in range(iD, len(cds)) if cds[i].l <= gap1[0]) +assert fill == HAM, "gap-ul de jos trebuie închis chiar de hammer" +hm = cds[HAM] +assert min(hm.o, hm.c) - hm.l >= 4 * abs(hm.o - hm.c), "bara de închidere nu e hammer" +assert abs(gap1[0] - PIV_Q) < 1e-9, "marginea de sus a gap-ului de jos = pivotul quarterly" +assert cds[TRI].c > hm.h +entry = cds[TRI].c +sl = round(hm.l - 0.2, 2) +tp = round(gap3[0], 2) +risk = entry - sl +R = (tp - entry) / risk +hit = first_hit_up(cds, TRI + 1, tp) +assert hit == len(cds) - 1 and R >= 2.5 +print(f"S14 gap jos {gap1[0]:.2f}-{gap1[1]:.2f}; gap sus {gap2[0]:.2f}-{gap2[1]:.2f}; insula {isl_low:.2f}-" + f"{max(c.h for c in cds[iC:iD]):.2f}; gap down {gap3[0]:.2f}-{gap3[1]:.2f}; hammer low {hm.l:.2f} la {HAM}; " + f"entry {entry:.2f} SL {sl:.2f} TP {tp:.2f} = {R:.2f}R atins la {hit}") +ch = Chart(candles=cds, + levels=[Level(tp, f"TP {tp:.2f} = {R:.1f}R (gap-ul insulei)", BLUE, label_at="left"), + Level(entry, f"intrare {entry:.2f}", GREEN, label_at="left"), + Level(PIV_Q, f"pivot quarterly {PIV_Q:.2f}", ORANGE, label_at="left"), + Level(sl, "", RED)], + marks=[Mark(iC + 1, "island top", RED, "above", dy=-4), + Mark(iD, "gap down", RED, "below", dy=4), + Mark(HAM, "hammer: gap închis", GREEN, "below", dy=4)], + scale=22, vol_h=70, title="Exemplu construit (fără ticker) — daily", + caption="Insula e bearish. Cumperi abia jos, unde gap-ul vechi s-a închis în pivotul quarterly.", + **{**STYLE, "width": 720}) +svg_ = add(ch.render(), [lbl_below(ch, sl, f"SL {sl:.2f}", RED), + callout(ch, iB, 47.5, "gap up", GRAY, anchor="end")]) +assert abs(px_ratio(ch, sl, entry, tp) - R) < 0.01 +svgs["island_top"] = svg_ +S14 = dict(gap1=gap1, gap2=gap2, gap3=gap3, isl_low=isl_low, isl_high=max(c.h for c in cds[iC:iD]), + ham_l=hm.l, entry=entry, sl=sl, tp=tp, R=R) + +# =============================================================== 15. triple doji la bottom +cl = [44.0, 43.1, 43.5, 42.2, 41.0, 41.4, 39.9, 38.6, + 36.9, # 8 low anterior + 37.8, 38.6, 39.0, # 9-11 (11 = lower high) + 38.3, 37.4, 37.8, 36.8, 35.9, 35.2, 34.6, 34.3, # 12-19 sparge low-ul anterior + 34.2, 34.3, 34.2, # 20-22 triple doji + 35.3, # 23 trigger + 35.9, 35.6, 36.7, 37.5, 37.2, 38.4, 39.2] +vols = [50, 54, 42, 58, 60, 44, 62, 64, 70, 46, 42, 40, 52, 56, 44, 60, 66, 64, 62, 58, + 50, 58, 66, 84, 60, 46, 62, 64, 48, 62, 60] +cds = from_closes(cl, wicks=wk(len(cl), {8: (0.3, 0.6), 11: (0.4, 0.3), 20: (0.5, 0.5), 21: (0.5, 0.5), + 22: (0.5, 0.5), 23: (0.2, 0.3)}), vols=vols, start=44.6) +D3 = [20, 21, 22] +prior_low = cds[8].l +assert is_sl(cds, 8) and is_sh(cds, 11) +assert all(doji(cds[i]) for i in D3), "cele trei bare nu sunt doji" +assert min(c.l for c in cds[12:20]) < prior_low, "low-ul anterior nu e spart înainte de doji" +assert vols[20] < vols[21] < vols[22], "volumul nu crește pe cele trei doji (acumulare)" +assert max(abs(cds[i].c - cds[20].c) for i in D3) <= 0.15, "doji-urile nu stau la același nivel" +d_hi, d_lo = max(cds[i].h for i in D3), min(cds[i].l for i in D3) +TR = 23 +assert cds[TR].c > d_hi and all(cds[i].c <= d_hi for i in D3) +entry = cds[TR].c +sl = round(d_lo - 0.1, 2) +tp = round(cds[11].h, 2) +risk = entry - sl +R = (tp - entry) / risk +hit = first_hit_up(cds, TR + 1, tp) +assert hit == len(cds) - 1 and R >= 2 +print(f"S15 low anterior {prior_low:.2f}; doji high {d_hi:.2f} low {d_lo:.2f}; entry {entry:.2f} SL {sl:.2f} " + f"TP (lower high) {tp:.2f} = {R:.2f}R atins la {hit} ({hit - TR} săpt.)") +ch = Chart(candles=cds, + levels=[Level(prior_low, f"low anterior {prior_low:.2f}", GRAY, label_at="left"), + Level(sl, f"SL {sl:.2f}", RED), + Level(entry, f"intrare {entry:.2f}", GREEN), + Level(tp, f"TP {tp:.2f} = {R:.1f}R", BLUE)], + marks=[Mark(11, "lower high", INK, "above", dy=-2), + Mark(21, "triple doji", GREEN, "below", dy=6), + Mark(TR, "trigger", GREEN, "above", dy=-28)], + scale=26, vol_h=70, title="Exemplu construit (fără ticker) — weekly", + caption="Trei săptămâni la același preț, cu volum în creștere: cineva absoarbe vânzarea.", + **{**STYLE, "width": 700}) +svg_ = ch.render() +assert abs(px_ratio(ch, sl, entry, tp) - R) < 0.01 +svgs["triple_doji"] = svg_ +S15 = dict(prior=prior_low, hi=d_hi, lo=d_lo, entry=entry, sl=sl, tp=tp, R=R, weeks=hit - TR) + +# =============================================================== 16. inverted head & shoulders +cl = [47.0, 46.2, 46.6, 45.4, 44.5, 44.8, 43.6, # 0-6 downtrend + 42.6, # 7 umăr stâng + 43.1, 43.6, 43.9, # 8-10 neckline 1 + 43.4, 42.2, 41.0, # 11-13 + 39.8, # 14 cap + 40.8, 41.9, 43.0, 43.9, # 15-18 neckline 2 + 43.4, 43.0, 42.9, # 19-21 umăr drept + 43.6, 43.9, # 22-23 + 44.8, # 24 breakout + 45.4, 45.1, 46.2, 47.0, 46.6, 47.8, 48.5, 48.2, 49.0] +vols = [52, 56, 44, 58, 60, 46, 62, 66, 48, 44, 46, 50, 58, 64, 72, 54, 52, 50, 48, 38, 36, 40, 44, 46, + 90, 66, 48, 64, 66, 50, 62, 64, 50, 60] +cds = from_closes(cl, wicks=wk(len(cl), {7: (0.3, 0.5), 14: (0.3, 0.6), 21: (0.3, 0.4), 24: (0.2, 0.3)}), + vols=vols, start=47.6) +LS, HD, RS, BO_I = 7, 14, 21, 24 +neck = max(c.h for c in cds[LS:RS]) +assert is_sl(cds, LS) and is_sl(cds, HD) and is_sl(cds, RS) +assert cds[HD].l < cds[LS].l and cds[HD].l < cds[RS].l, "capul nu e cel mai jos" +assert cds[RS].l > cds[LS].l, "textul spune: umărul drept mai sus" +assert all(c.h <= neck + 1e-9 for c in cds[LS:BO_I]) and cds[BO_I].c > neck +assert vols[RS] < vols[LS] and vols[BO_I] == max(vols), "volum: umăr drept mic, breakout maxim" +entry = cds[BO_I].c +sl = round(cds[RS].l - 0.1, 2) +height = neck - cds[HD].l +tp = round(neck + height, 2) +risk = entry - sl +R = (tp - entry) / risk +hit = first_hit_up(cds, BO_I + 1, tp) +assert hit == len(cds) - 1 and R >= 1.7 +print(f"S16 umăr stâng {cds[LS].l:.2f} cap {cds[HD].l:.2f} umăr drept {cds[RS].l:.2f} neck {neck:.2f} " + f"entry {entry:.2f} SL {sl:.2f} înălțime {height:.2f} TP {tp:.2f} = {R:.2f}R atins la {hit}") +ch = Chart(candles=cds, + levels=[Level(neck, "", ORANGE), + Level(sl, f"SL {sl:.2f}", RED), + Level(entry, f"intrare {entry:.2f}", GREEN), + Level(tp, f"TP {tp:.2f} = {R:.1f}R", BLUE)], + marks=[Mark(LS, "umăr stâng", INK, "below", dy=4), Mark(HD, "cap", INK, "below", dy=4), + Mark(RS, "umăr drept (mai sus)", GREEN, "below", dy=4), + Mark(BO_I, "breakout", GREEN, "above", dy=-4)], + scale=24, vol_h=70, title="Exemplu construit (fără ticker) — daily", + caption="Umărul drept mai sus decât cel stâng: aceeași formă ca o ceașcă cu mâner.", + **{**STYLE, "width": 680}) +svg_ = add(ch.render(), [lbl_below(ch, neck, f"neckline {neck:.2f}", ORANGE)]) +assert abs(px_ratio(ch, sl, entry, tp) - R) < 0.01 +svgs["ihs"] = svg_ +S16 = dict(ls=cds[LS].l, hd=cds[HD].l, rs=cds[RS].l, neck=neck, entry=entry, sl=sl, tp=tp, R=R) + +# =============================================================== 17. bull flag înapoi în locul crimei +cl = [45.0, 46.1, 46.9, 47.8, 48.6, 49.2, + 49.7, # 6 vârful anterior (locul crimei) + 49.0, 48.3, 48.8, 48.2, 49.1, # 7-11 consolidare + 50.6, 51.8, 52.9, 53.6, 54.5, # 12-16 impuls + 55.0, # 17 vârful impulsului + 54.4, 53.6, 53.9, 52.8, 52.0, 52.4, 51.4, # 18-24 steagul coboară + 50.8, # 25 picior 1 + 51.5, 51.2, # 26-27 + 50.4, # 28 picior 2: mai jos, pe locul crimei + 51.7, # 29 trigger + 52.4, 52.1, 53.3, 54.2, 53.9, 55.0] +vols = [44, 50, 48, 54, 56, 52, 60, 46, 42, 40, 38, 48, 84, 76, 70, 66, 62, 60, 46, 42, 38, 40, 36, 34, 36, + 40, 30, 32, 42, 72, 60, 44, 62, 66, 48, 62] +cds = from_closes(cl, wicks=wk(len(cl), {6: (0.3, 0.3), 17: (0.3, 0.3), 25: (0.3, 0.4), 28: (0.3, 0.4), + 29: (0.2, 0.3)}), vols=vols, start=44.6) +PH, TOPF, L1, L2, TR = 6, 17, 25, 28, 29 +crime = cds[PH].h +assert crime == max(c.h for c in cds[:12]), "vârful anterior nu e maximul dinainte de impuls" +assert cds[12].c > crime, "impulsul nu sparge vârful anterior" +assert cds[TOPF].h == max(c.h for c in cds[:TR]) +flag_vol = sum(vols[18:25]) / 7 +assert flag_vol < sum(vols[12:18]) / 6 * 0.65, "volumul pe steag trebuie să scadă clar față de impuls" +assert is_sl(cds, L1) and is_sl(cds, L2) and cds[L2].l < cds[L1].l, "piciorul 2 trebuie să fie mai jos" +assert abs(cds[L2].l - crime) < 1e-9, "piciorul 2 trebuie să atingă exact locul crimei cu codița" +assert cds[TR].c > cds[L2].h +entry = cds[TR].c +sl = round(cds[L2].l - 0.2, 2) +tp = round(cds[TOPF].h, 2) +risk = entry - sl +R = (tp - entry) / risk +hit = first_hit_up(cds, TR + 1, tp) +assert hit == len(cds) - 1 and R >= 1.8 +print(f"S17 locul crimei {crime:.2f}; vârf impuls {cds[TOPF].h:.2f}; picior1 {cds[L1].l:.2f} picior2 {cds[L2].l:.2f}; " + f"vol impuls {sum(vols[12:18]) / 6:.0f} vs steag {flag_vol:.0f}; entry {entry:.2f} SL {sl:.2f} TP {tp:.2f} = {R:.2f}R") +ch = Chart(candles=cds, + levels=[Level(crime, f"locul crimei {crime:.2f}", ORANGE, label_at="left"), + Level(sl, "", RED), + Level(entry, f"intrare {entry:.2f}", GREEN), + Level(tp, f"TP {tp:.2f} = {R:.1f}R", BLUE)], + marks=[Mark(PH, "vârf anterior", INK, "above", dy=-16), + Mark(L1, "picior 1", RED, "below", dy=11), + Mark(L2, "picior 2", RED, "below", dy=16)], + mas=[MA(20, GRAY, dash="4 3")], + scale=26, vol_h=70, title="Exemplu construit (fără ticker) — daily", + caption="Linia punctată = SMA-20. Double bottom DUPĂ un impuls, nu după downtrend: e steag.", + **{**STYLE, "width": 700}) +svg_ = ch.render() +svg_ = add(svg_, [lbl_below(ch, sl, f"SL {sl:.2f}", RED), + f'bull flag']) +assert abs(px_ratio(ch, sl, entry, tp) - R) < 0.01 +svgs["bull_flag"] = svg_ +S17 = dict(crime=crime, top=cds[TOPF].h, l1=cds[L1].l, l2=cds[L2].l, entry=entry, sl=sl, tp=tp, R=R) + +print(f"{len(svgs)} diagrame") + +# ---------------------------------------------------------------- substituție în .md +if MD.exists(): + md = MD.read_text(encoding="utf-8") + for name, svg in svgs.items(): + pat = re.compile(rf".*?", re.S) + assert pat.search(md), f"marcatorul {name} lipsește din .md" + md = pat.sub(lambda _m, s=svg, n=name: f"\n{s}\n", md) + MD.write_text(md, encoding="utf-8") + print("scris", MD) diff --git a/summaries/08_ANALIZA_ZILNICA/06_structura_trend.html b/summaries/08_ANALIZA_ZILNICA/06_structura_trend.html new file mode 100644 index 0000000..c697be2 --- /dev/null +++ b/summaries/08_ANALIZA_ZILNICA/06_structura_trend.html @@ -0,0 +1,2683 @@ + + + + + +Analiză zilnică / #6 — Structura de trend și pattern-urile + + + +

Analiză zilnică / #6 — Structura de trend și pattern-urile

+

TLDR

+
    +
  • Structura se citește pe swing-uri. Un swing low e doar „în formare" + până se închide lumânarea din dreapta lui. Uptrend = scărița: + higher highs și higher lows, iar pullback-ul nu are voie să spargă ultimul + swing low.
  • +
  • Double bottom are două variante bune: al doilea picior mai sus + (începutul scăriței) sau mai jos (ia stop-urile celor de la primul + picior, cu volum mai mic). Fără divergență de volum, „double bottom-ul în + formare" poate fi doar un bear flag.
  • +
  • Double top cu al doilea vârf mai sus e oglinda, pe short.
  • +
  • Cup & handle: trigger = breakout din mâner, deasupra pivotului + monthly, cu volum. E fractal: mânerul de pe weekly e o ceașcă mică pe + daily, cu trigger mai devreme și stop mai strâns.
  • +
  • Descending wedge și ascending triangle sunt bullish; ascending + wedge e bearish. Breakout-ul fără volum e fals.
  • +
  • Island top e bearish: nu cumperi insula, cumperi jos, după ce gap-ul + vechi s-a închis în suport. Triple doji la bottom e „foarte strong + bull". Inverted H&S cu umărul drept mai sus e aceeași formă ca o + ceașcă cu mâner.
  • +
  • Bull flag vs double bottom: aceeași formă, alt loc. După un impuls + peste vârful anterior e steag; după un downtrend e bottom.
  • +
+
+

De ce urmărești structura

+

Trigger-ele sistemului (buy doji, MBT-10) spun când intri. Structura +spune dacă ai voie și unde stă stop-ul:

+
    +
  • stop-ul se pune sub ultimul swing low confirmat (sau sub piciorul 2, + sub mâner, sub umărul drept). Dacă prețul ajunge acolo, structura pe care + ai cumpărat nu mai există;
  • +
  • ținta vine tot din structură: vârful anterior, înălțimea pattern-ului + proiectată deasupra neckline-ului, adâncimea ceștii;
  • +
  • filtrul: un trigger long într-o scăriță intactă e trade; același + trigger după un lower low e cuțit care cade.
  • +
+

Mai jos folosesc o singură idee de mecanism de mai multe ori, așa că o +spun aici. Sub fiecare swing low stau stop-urile celor care au cumpărat +acolo. Un stop al unui long e un ordin de vânzare la piață. Când prețul +coboară sub low, stop-urile se execută în lanț, iar vânzarea forțată +împinge prețul și mai jos, până când cineva mai mare cumpără tot ce se +vinde. Dacă volumul de sub low e mic, n-a fost mult de vândut: cumpărătorul +mare a luat lichiditatea și prețul revine. Dacă volumul e mare, vânzătorii +sunt reali și structura s-a rupt.

+
+

Termenii, o singură dată

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
TermenCe înseamnă aici
swing high / swing low (SH / SL)bară cu high-ul mai sus (low-ul mai jos) decât bara din stânga și cea din dreapta
lumânarea din dreaptabara de după swing; până nu se închide, swing-ul e „în formare"
HH / HLhigher high / higher low: vârf, respectiv minim, mai sus decât precedentul
scărițauptrend văzut ca trepte: HL → HH → HL mai sus. Se aplică și pe pivoți: pivot monthly curent peste cel anterior
necklinevârful dintre cele două minime ale unui double bottom (sau dintre umeri la H&S); peste el pattern-ul e confirmat
locul crimeifost vârf spart, care la retest devine suport (vezi #3)
wedge / triunghicompresie între două linii de trend care converg. Wedge: ambele linii în aceeași direcție. Ascending triangle: sus plat, jos urcă
gapspațiu de preț fără tranzacții între două bare (low-ul barei > high-ul precedentei, sau invers)
bull haramibară mică a cumpărătorilor cu corpul în interiorul corpului barei anterioare a vânzătorilor
evening starpattern de top din 3 bare: cumpărători mari, o bară mică (aici shooting star, codiță lungă sus), vânzători mari
+
+

1. Swing low, swing high și lumânarea din dreapta

+
+

„Îmi place swing low-ul ăsta de-aici și deja este confirmat ca și swing +low dacă se închide candela de-aici." (10.09)

+
+ +

+ Exemplu construit (fără ticker) — daily + + SL 45.20 + + intrare 47.00 + + TP 49.90 = 1.6R + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + SH + SL + HH + HL + HH + HL + HH + HL + Linia punctată = SMA-20. Bara 27 devine higher low abia când bara 28 închide peste high-ul ei. + + confirmare +

+ + +
    +
  • Patru trepte: minime 40.30 → 41.90 → 43.60 → 45.30, vârfuri + 43.10 → 44.80 → 46.50 → 48.20. Asta e scărița.
  • +
  • Bara 27 face low la 45.30. În acel moment e doar un candidat: următoarea + bară poate coborî sub el.
  • +
  • Candela din dreapta închide la 47.00, peste high-ul barei 27, fără + să-i spargă low-ul → higher low confirmat → intrare 47.00.
  • +
  • SL 45.20, sub higher low: sub el nu mai există treapta pe care ai + cumpărat.
  • +
  • TP 49.90: higher low-ul + mărimea treptei anterioare (de la 43.60 la + 48.20 = 4.60) = 1.6R. Atins după 5 candele.
  • +
+

Structura se citește și pe pivoți (10.09): pivotul monthly al lunii curente +mai sus decât cel anterior e tot structură bull, chiar dacă proiecția e +bear. Și ritmul pe termen lung e același, pe bucăți mai mari (04.09):

+
+

„Down trend, consolidare, breakout. Down trend, consolidare, breakout."

+
+

2. NU: higher low-ul care nu se confirmă

+ +

+ Exemplu construit (fără ticker) — daily + + HL? 45.30 (în formare) + + ultimul HL confirmat 43.60 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + HH + HL + lower low + Candela din dreapta închide sub low: nu există higher low. Sub 43.60 scărița e ruptă. + + HL în formare? +

+ + +

Aceeași serie până la bara 27 (low 45.30). Candela din dreapta coboară la +44.90 și închide la 45.20: bara 27 nu mai e swing low, deci nu există +higher low. Apoi prețul închide la 43.40, sub ultimul higher low confirmat +(43.60) → lower low, scărița e ruptă.

+
+

„Poate nu doboar swing low-ul ăsta, deci pentru că s-ar strica structura +trend-ului" (21.08)

+
+

După ce swing low-ul e violat, nu mai cumperi pe structura veche. Cauți +intrare doar dacă se formează un pattern nou de bottom (double bottom, +inverted H&S); dacă volumul e în distribuție, lași prețul să mai facă un +swing low (02.09).

+
+

3. Double bottom cu al doilea picior mai sus

+ +

+ Exemplu construit (fără ticker) — daily + + neckline 33.30 + + SL 30.70 + + intrare 32.10 + + TP 36.60 = 3.2R + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + picior 1: 30.00 + picior 2: 30.80 (mai sus) + breakout + Intrare la confirmarea piciorului 2; ținta = neckline + înălțimea pattern-ului. +

+ + +
    +
  1. Context. Downtrend de la 38.60 până la 30.60.
  2. +
  3. Picior 1: 30.00. Revenire până la neckline 33.30.
  4. +
  5. Picior 2: 30.80, mai sus — vânzătorii nu mai reușesc să ducă prețul + la minimul anterior. E prima treaptă a scăriței.
  6. +
  7. Confirmare. Candela din dreapta închide la 32.10, peste high-ul + barei de low → intrare 32.10, stop 30.70 sub piciorul 2.
  8. +
  9. Breakout peste neckline la 33.80 — pattern-ul e complet.
  10. +
  11. TP 36.60 = neckline + înălțimea (33.30 − 30.00) = 3.2R.
  12. +
+

Intrarea la confirmarea piciorului 2 dă stopul cel mai strâns. Cine așteaptă +breakout-ul peste 33.30 intră mai sus, cu același stop, deci cu R mai mic. +Invalidarea din curs (10.09): dacă breakout-ul peste ultimul vârf nu vine, +„rămâne doar double bottom cu al doilea picior mai sus" — nu e încă trend.

+

4. Double bottom cu al doilea picior mai jos

+
+

„i-a scalpat pe ăștia cu stoploss-le aici, dar uitați-vă acționea +volumului, ce bine s-a dus" (21.08)

+
+ +

+ Exemplu construit (fără ticker) — daily + + picior 1 30.00 + + SL 29.30 + + intrare 31.50 + + TP 37.20 = 2.6R + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + volum + picior 1 + picior 2: stop-uri luate + trigger + neckline 33.30 + Piciorul 2 sparge 30.00 cu volum mai mic decât piciorul 1, apoi închide înapoi peste. +

+ + +
    +
  • Același downtrend și același picior 1 (30.00, volum 74).
  • +
  • Piciorul 2 coboară la 29.40, sub 30.00: stop-urile celor care au + cumpărat la piciorul 1 se execută. Dar volumul barei e 52, mult sub + 74 — vânzarea forțată a fost absorbită. Bara e un hammer: închide sus.
  • +
  • Trigger: închidere la 31.50, peste high-ul hammer-ului și înapoi + peste 30.00 → intrare.
  • +
  • SL 29.30, sub piciorul 2. Dacă se sparge și el, n-a fost vânătoare de + stop-uri, a fost cădere.
  • +
  • TP 37.20 = neckline 33.30 + (33.30 − 29.40) = 2.6R.
  • +
+

Aceeași variantă apare la sfântul buy doji (vezi +#1), pe TLT la bond-uri (19.08) și cu +wick-ul intrat într-un FVG monthly ca al doilea picior (24.08). Varianta cu +trei minime, ultimul mai jos (triple bottom), e același mecanism încă o dată +(03.09, Wynn).

+

5. NU: „double bottom-ul în formare" care e bear flag

+
+

„double bottom în formare poate să fie bareflag, poate să fie, dar având +în vedere divergența asta și locul crimei este mai mari șanse să vedem o +urcare" (24.08)

+
+ +

+ Exemplu construit (fără ticker) — daily + + intrare grăbită 30.90 + + picior 1 30.00 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + volum + bear flag? volum mic + volum mai mare + SL atins + Fără divergență de volum, „double bottom-ul în formare" e doar un bear flag. + SL 29.60 +

+ + +
    +
  • După piciorul 1 (30.00), revenirea e lentă, urcă doar până la 32.30, + cu volum mic: nu cumpără nimeni cu convingere. Asta e forma unui bear + flag.
  • +
  • „Piciorul 2" coboară la 29.70 cu volum 78, mai mare decât la + piciorul 1 (74). Nu există divergență: vânzătorii au venit mai mulți, nu + mai puțini.
  • +
  • Cumpărătorul grăbit intră la 30.90, stop 29.60. Două bare mai târziu + prețul închide la 29.60: stop luat. Seria se termină la 26.80.
  • +
+ + + + + + + + + + + + + + + + + + + + + + + + + +
Double bottom DADouble bottom NU (bear flag)
volum mai mic la piciorul 2 (divergență)volum egal sau mai mare la piciorul 2
revenirea dintre picioare ajunge la neckline cu volumrevenire lentă, volum mic, se oprește jos
retest al locului crimei / pivot ținutfără nivel de suport dedesubt
trigger: buy doji weekly, MBT-10 la închideresell doji pe daily fără semn de întoarcere
+

Și cu toate astea bune, bottom-ul poate mai face un picior (04.09):

+
+

„de aici am zis că să duce și nu s-a dus"

+
+

De aceea stop-ul stă sub structură, nu „undeva jos".

+
+

6. Double top cu al doilea vârf mai sus (short)

+

Oglinda variantei de la secțiunea 4 (17.08). Pe indice (19.08, Dow Jones) +a fost confirmat de o shooting star într-un evening star și de divergență +pe McClellan:

+
+

„facem double top cu al doilea vârf mai sus și aici am avut un shooting +star […] iministar-ul, știți că este un pattern din 3 candele" (19.08)

+
+ +

+ Exemplu construit (fără ticker) — daily + + SL 60.80 + + intrare short 58.90 + + neckline 56.90 + + TP 53.10 = 3.1R + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + volum + vârf 1: 60.00 + evening star + vârf 2: 60.70 + Oglinda double bottom-ului cu piciorul 2 mai jos: vârful 2 ia stop-urile short-urilor. + + neckline spart +

+ + +
    +
  1. Uptrend, vârf 1 la 60.00, pullback până la neckline 56.90.
  2. +
  3. Vârf 2 la 60.70, mai sus: ia stop-urile short-urilor puse deasupra + lui 60.00. Bara care îl face e o shooting star: codiță lungă sus, corp + aproape zero — cumpărătorii au urcat prețul și nu l-au putut ține.
  4. +
  5. Evening star: bara mare a cumpărătorilor, shooting star-ul, apoi o + bară a vânzătorilor care închide la 58.90, sub jumătatea primei → + intrare short 58.90.
  6. +
  7. SL 60.80, deasupra vârfului 2.
  8. +
  9. Neckline-ul se sparge la 56.50. TP 53.10 = neckline − înălțimea + (60.70 − 56.90) = 3.1R.
  10. +
+ + + + + + + + + + + + + + + + + + + + + +
Double top DADouble top NU
vârf 2 cu shooting star / evening starvârf 2 închis sus, fără respingere
divergență bear pe McClellan, advance/decline în scădereMcClellan confirmă vârful
McClellan sub linia de zero, apoi sell momentum—
+

McClellan nu e pe desen: condiția din curs rămâne obligatorie, diagrama +arată doar prețul.

+
+

7. Cup & handle (ceașca cu mâner)

+
+

„e super că în capul lui a plecat cum-by-dodge, strategia mici deasupra +pivotului, vedeți ce frumusețe de ceașca cu mâner." (03.09)

+
+

DA: breakout din mâner, cu volum

+ +

+ Exemplu construit (fără ticker) — weekly + + + + SL 48.10 + + intrare 51.00 + + TP 58.40 = 2.6R + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + volum + margine + margine + ceașca + buy doji + mâner + breakout + Trigger = închiderea peste mâner, cu cel mai mare volum din serie; ținta = adâncimea ceștii. + pivot monthly 47.50 +

+ + +
    +
  1. Ceașca: margine stângă 50.30, coborâre rotunjită până la 42.20, + urcare înapoi la 50.30. Adâncime 8.10.
  2. +
  3. Buy doji în fundul ceștii — varianta preferată de el: trigger-ul + sistemului pornește chiar din bottom.
  4. +
  5. Mânerul: coborâre mică până la 48.20 (26% din adâncime), + deasupra pivotului monthly 47.50, cu volum în scădere. Cine a + cumpărat în vârful de la stânga și a stat 20 de săptămâni pe pierdere + vinde acum la „break-even"; mânerul e acea vânzare, absorbită.
  6. +
  7. Trigger: închidere peste mâner la 51.00, cu cel mai mare volum + din serie → intrare 51.00.
  8. +
  9. SL 48.10, sub mâner. TP 58.40 = marginea + adâncimea ceștii = + 2.6R, atins după 11 săptămâni.
  10. +
+ + + + + + + + + + + + + + + + + + + + + + + + + +
Cup & handle DACup & handle NU
mâner format, breakout din mânermânerul încă în formare
peste pivotul monthly, proiecție bullsub pivot
volum la breakout, relative strengthbreakout fără volum
bonus: ceașcă mică și pe daily, MBT-10pattern „forțat", desenat cu greu — confirmi pe 60 / 15 min
+

La bottom, ceașca cu mâner e adesea același lucru cu un inverted H&S cu +umărul drept mai sus (vezi secțiunea 11).

+

NU: breakout fără volum

+
+

„A făcut break-out fără volum, asta a fost problema lui" (17.08)

+
+ +

+ Exemplu construit (fără ticker) — weekly + + + + SL 48.10 + + intrare 50.60 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + volum + buy doji + mâner + breakout fără volum + SL atins + Aceeași ceașcă. Breakout-ul are cel mai mic volum de la fundul ceștii încoace: cade înapoi. + pivot monthly 47.50 +

+ + +

Aceeași ceașcă, același mâner. Bara de breakout închide la 50.60, peste +50.30, dar cu volum 30 — sub media mânerului (35). Nimeni mare nu +cumpără la preț nou. Săptămâna următoare prețul e înapoi în mâner, iar după +4 săptămâni stop-ul de 48.10 e luat.

+

Fractalul: mânerul weekly e o ceașcă pe daily

+
+

„pattern-ul de genul ăsta o să vedeți inclusiv pe prop, pe 3 minute, pe 5 +minute" (03.09)

+
+ +

+ Exemplu construit (fără ticker) — daily, în mânerul weekly + + breakout weekly 50.30 + + + + SL daily 48.80 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ceașca mică + margine + mâner mic + Cele 6 săptămâni ale mânerului, pe daily: trigger-ul vine cu 2 zile înainte de cel weekly. + + trigger daily + intrare daily 50.10 +

+ + +

Cele 6 săptămâni ale mânerului din diagrama DA, desenate pe daily (close-ul +fiecărei vineri e close-ul barei weekly, iar minimul e același, 48.20):

+
    +
  • În mâner se formează o ceașcă mică: fund 48.20, margine 49.90, + mâner mic până la 48.90.
  • +
  • Trigger daily: închidere la 50.10, peste marginea mică — cu 2 + zile înainte de breakout-ul weekly de 51.00, și încă sub nivelul de + breakout weekly (50.30).
  • +
  • SL daily 48.80, sub mânerul mic: risc 1.30, față de 2.90 pe + weekly.
  • +
  • Aceeași țintă, 58.40: 6.4R pe daily față de 2.6R pe weekly.
  • +
+

Asta câștigi coborând pe timeframe-ul mic: intrarea și stop-ul, nu direcția. +Direcția rămâne dată de ceașca weekly. Dacă ceașca mică eșuează, pierzi 1.30 +și weekly-ul încă n-a dat semnal.

+
+

8. Wedge și triunghi: compresia

+

Compresia înseamnă că ambele tabere acceptă un interval tot mai îngust. La +ieșire, stop-urile de pe partea spartă se execută toate, deodată. De aceea +curs-ul cere volum la breakout (04.09): „un wedge în compresie cere volum +pentru breakout masiv".

+

Descending wedge: DA

+ +

+ Exemplu construit (fără ticker) — daily + + + + SL 46.70 + + intrare 48.60 + + TP 53.00 = 2.3R + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + volum + descending wedge + Minime și maxime tot mai jos, dar tot mai apropiate: vânzătorii obosesc. + + breakout + volum +

+ + +
    +
  • Downtrend, apoi vârfuri 53.00 → 51.50 → 50.40 → 49.30 și minime + 48.60 → 47.90 → 47.40 → 46.80. Ambele coboară, dar vârfurile coboară + de două ori mai repede: la fiecare minim nou, vânzătorii câștigă tot mai + puțin. Volumul scade pe toată compresia.
  • +
  • Breakout: închidere la 48.60, peste linia de sus (48.21 în acel + punct), cu volum 92, cel mai mare din compresie → intrare 48.60.
  • +
  • SL 46.70, sub ultimul minim. TP 53.00, începutul wedge-ului = + 2.3R.
  • +
+

Descending wedge-ul apare și ca bull flag într-un uptrend (19.08), și ca +bază pentru triple doji la bottom (secțiunea 10).

+

Descending wedge: NU (breakout fals)

+ +

+ Exemplu construit (fără ticker) — daily + + + + SL 46.70 + + intrare 48.30 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + volum + descending wedge + breakout fără volum + SL atins + Aceeași compresie. Close peste linie, dar volumul e cel mai mic din serie: fals. +

+ + +

Aceeași compresie. Bara închide la 48.30, peste linie, dar cu volum +31 — sub media wedge-ului (40). Trei candele mai târziu prețul e sub +46.70: stop luat. Close-ul peste linie singur nu e breakout; e breakout +când vine cu volum.

+

Ascending wedge la rezistența monthly (short)

+

Din 17.08: ascending wedge-ul e bearish prin natura lui; ascending triangle, prin +contrast, e bullish.

+ +

+ Exemplu construit (fără ticker) — daily + + + + SL 53.30 + + intrare short 51.40 + + TP 47.00 = 2.3R + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + volum + uptrend + ascending wedge + rezistență monthly + Oglinda: vârfuri tot mai sus, dar tot mai mici, lipite de rezistența monthly. + + breakdown + volum +

+ + +

Oglinda diagramei DA: vârfuri și minime tot mai sus, dar tot mai apropiate, +cu ultimul vârf lipit de rezistența monthly 53.20. Cumpărătorii câștigă +tot mai puțin la fiecare vârf nou.

+
    +
  • Breakdown: închidere la 51.40, sub linia de jos (51.79), cu volum + → intrare short 51.40.
  • +
  • SL 53.30, deasupra rezistenței. TP 47.00, începutul wedge-ului = + 2.3R.
  • +
+

Pe indici (17.08), ascending wedge-ul la rezistența monthly a venit cu +advance/decline la maxim, dar McClellan în divergență bear. Verificarea e +RSP (S&P equal weight): dacă RSP nu confirmă vârful, piața e dusă doar +de mega-cap-uri.

+

Ascending triangle: breakout, retest, bull harami

+

Din 18.08: ascending triangle cu breakout căzut înapoi, retest al locului +crimei și al pivotului quarterly, bull harami acolo.

+ +

+ Exemplu construit (fără ticker) — daily + + + rezistență = pivot quarterly 50.00 + + + + intrare 51.10 + + TP 53.40 = 1.8R + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + volum + ascending triangle + breakout + retest + harami + Breakout, cădere înapoi pe fosta rezistență, bull harami acolo: intrare la trigger. + SL 49.80 +

+ + +
    +
  1. Triunghiul: rezistența 50.00 atinsă de 3 ori, minime tot mai sus + 46.60 → 47.60 → 48.50. Vânzătorii apără același preț, cumpărătorii + plătesc tot mai mult ca să intre.
  2. +
  3. Breakout la 50.90, cu volum.
  4. +
  5. Retest: prețul cade înapoi, codița atinge exact 50.00 — fosta + rezistență e acum loc al crimei și pivot quarterly.
  6. +
  7. Bull harami pe retest, apoi închidere la 51.10 peste harami → + intrare 51.10.
  8. +
  9. SL 49.80, sub 50.00. TP 53.40 = 50.00 + înălțimea triunghiului + (3.40) = 1.8R.
  10. +
+
+

9. Island top

+
+

„island top și […] astea sunt foarte bare prin natura lor. Adică am bucat +asta care este o insulă, care este izolată" (21.08, Cisco)

+
+ +

+ Exemplu construit (fără ticker) — daily + + TP 50.30 = 2.6R (gap-ul insulei) + + intrare 45.90 + + pivot quarterly 44.50 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + volum + island top + gap down + hammer: gap închis + Insula e bearish. Cumperi abia jos, unde gap-ul vechi s-a închis în pivotul quarterly. + SL 44.20 + + gap up +

+ + +
    +
  1. Uptrend cu un gap up vechi între 44.50 și 44.90, lăsat deschis.
  2. +
  3. Insula: gap up peste 49.90, patru bare între 50.70 și 52.20, apoi + gap down sub 50.70. Toți cei care au cumpărat în insulă sunt în + pierdere și nu există niciun preț intermediar la care să iasă — de aici + presiunea de vânzare.
  4. +
  5. Coborâre în canal. Nu cumperi aici.
  6. +
  7. Prețul coboară până închide gap-ul vechi: hammer cu low 44.40, exact + în pivotul quarterly 44.50 (marginea de sus a gap-ului).
  8. +
  9. Trigger: închidere la 45.90, peste hammer → intrare 45.90. + Din curs: aici poți intra și înainte de MBT-10, imediat după + închiderea gap-ului.
  10. +
  11. SL 44.20, sub hammer. TP 50.30, marginea de jos a gap-ului + insulei = 2.6R.
  12. +
+ + + + + + + + + + + + + + + + + +
Island top: cumpărare DANU
gap-ul de dedesubt închis în suport (pivot quarterly)cumperi încă în insulă sau în coborâre
pattern de peak bottom / MBT-10 (sau imediat după gap închis)volum în distribuție negativă → aștepți pattern-ul, nu intri direct
+

Canalul descendent de după insulă poate fi el însuși un bull flag, cu retest +la 1/2 din marubozu (21.08).

+
+

10. Triple doji la bottom

+
+

„avem triple star, se numește pattern-ul ăsta, triple doji, la care este +foarte strong bull" (19.08, Charter)

+
+ +

+ Exemplu construit (fără ticker) — weekly + + low anterior 36.30 + + SL 33.60 + + intrare 35.30 + + TP 39.40 = 2.4R + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + volum + lower high + triple doji + trigger + Trei săptămâni la același preț, cu volum în creștere: cineva absoarbe vânzarea. +

+ + +
    +
  1. Downtrend cu low anterior 36.30 și un lower high la 39.40.
  2. +
  3. Prețul sparge 36.30: stop-urile de sub low se execută.
  4. +
  5. Trei doji consecutive la același preț (~34.20), cu volum în creștere + (50 → 58 → 66). Se vinde tot mai mult și prețul nu mai coboară: cineva + cumpără tot.
  6. +
  7. Trigger: închidere la 35.30, peste high-ul celor trei doji + (34.80) → intrare 35.30.
  8. +
  9. SL 33.60, sub cele trei doji. TP 39.40, lower high-ul anterior = + 2.4R, atins după 7 săptămâni.
  10. +
+ + + + + + + + + + + + + + + + + + + + + +
Triple doji DANU
descending wedge, low-urile anterioare spartefără acumulare de volum
stochastic oversold, divergență bull de volum pe weeklypreț la minimul de acum 11 ani „ieftin" nu e motiv
MBT-10 ca ultimă confluență—
+
+

11. Inverted head & shoulders

+

Varianta de bază e în +Modul 4 / Inverted H&S +(inclusiv H&S normal, pe short). Aici e ce adaugă analiza zilnică: umărul +drept mai sus și legătura cu ceașca.

+ +

+ Exemplu construit (fără ticker) — daily + + + + SL 42.40 + + intrare 44.80 + + TP 49.20 = 1.8R + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + volum + umăr stâng + cap + umăr drept (mai sus) + breakout + Umărul drept mai sus decât cel stâng: aceeași formă ca o ceașcă cu mâner. + neckline 44.20 +

+ + +
    +
  • Umăr stâng 42.10, cap 39.20, umăr drept 42.50 — mai sus decât cel + stâng (03.09: QSR, Biogen, PayPal). Un umăr drept mai sus e un higher low: + prima treaptă. Pus lângă ceașca din secțiunea 7, capul e fundul ceștii, + iar umărul drept e mânerul.
  • +
  • Volumul scade pe umărul drept, apoi cel mai mare volum la breakout.
  • +
  • Breakout peste neckline 44.20: intrare 44.80. SL 42.40, + sub umărul drept. TP 49.20 = neckline + (44.20 − 39.20) = 1.8R.
  • +
+

R-ul e mai mic decât la double bottom-ul din secțiunea 3 pentru că stopul +stă departe, sub umăr. Soluția din curs e aceeași ca la ceașcă: inverted H&S +pe 60 min ca trigger (25.08, 18.08) — intrare mai jos, stop mai strâns, +în direcția pattern-ului mare. Și încă o condiție (04.09, CPK): inverted H&S +pe monthly cu stochastic overbought și volum deteriorat nu se cumpără — +aștepți pullback sau un buy doji.

+
+

12. Bull flag vs double bottom

+
+

„el a forțat breakout-ul peste vârful la interioare, s-a întors aici cu +un bull flag" (03.09, MLKN)

+
+ +

+ Exemplu construit (fără ticker) — daily + + locul crimei 50.00 + + + + intrare 51.70 + + TP 55.30 = 1.9R + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + volum + vârf anterior + picior 1 + picior 2 + Linia punctată = SMA-20. Double bottom DUPĂ un impuls, nu după downtrend: e steag. + SL 49.80 + bull flag +

+ + +
    +
  1. Vârful anterior 50.00, apoi consolidare sub el.
  2. +
  3. Impuls: breakout peste 50.00 până la 55.30, volum mediu 70.
  4. +
  5. Bull flag: coborâre ordonată înapoi, volum mediu 39. Cei care au + cumpărat impulsul iau profit, dar nu vine vânzare nouă.
  6. +
  7. În locul crimei se formează un double bottom cu piciorul 2 mai jos: + 50.40, apoi 50.00 — codița atinge exact fostul vârf.
  8. +
  9. Trigger la 51.70 → intrare. SL 49.80, sub locul crimei. + TP 55.30, vârful impulsului = 1.9R.
  10. +
+

Piciorul 2 de aici arată la fel ca în secțiunea 4. Ce se schimbă e locul:

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Bull flag (continuare)Double bottom (întoarcere)
apare după un impuls care a spart un vârf anteriorapare după un downtrend
pullback-ul coboară în locul crimei; SMA-20 încă urcăminimele se fac sub SMA-20, după lower lows
stochastic poate fi overbought, volumul poate fi slab — normal pe pullbackcere divergență de volum ca să nu fie bear flag
intri doar când se formează pattern de bottom în locul crimei + MBT-10intri la confirmarea piciorului 2 / buy doji
țintă: vârful impulsului, apoi mai susțintă: neckline + înălțimea
+

Aceeași logică, pe dos: un „double bottom în formare" după un downtrend, +fără divergență de volum, e bear flag (secțiunea 5). Detaliile +pullback-ului în locul crimei, cu stop luat și reintrare, sunt în +#3, secțiunea 5.

+
+

Gotchas

+
    +
  • Nu cumpăra swing low-ul „în formare". Diagrama 2: bara de 45.30 arăta + a higher low, candela din dreapta a închis la 45.20.
  • +
  • Piciorul 2 mai jos e bun doar cu volum mai mic. Diagrama 4 (52 față + de 74) vs diagrama 5 (78 față de 74): aceeași formă, rezultat opus.
  • +
  • Breakout fără volum = fals. Ceașca (50.60, volum 30) și wedge-ul + (48.30, volum 31) au închis peste nivel și au luat stop-ul în 3-4 bare.
  • +
  • Nu cumperi insula și nici căderea de după ea. Zona de cumpărare e + gap-ul vechi închis în suport, nu primul preț „ieftin".
  • +
  • Spike low-ul nu e bottom în sine (20.08): de obicei întoarce prețul, + „nu de fiecare dată". E motiv să aștepți trigger-ul, nu intrare.
  • +
+
+

Ce n-a intrat aici

+
    +
  • Spike low sub consolidare (hammer sub o zonă de consolidare, în partea + de jos a unui triunghi, 21.08) — apare doar ca gotcha; nu am desenat + diagramă separată, mecanismul e cel de la piciorul 2 mai jos.
  • +
  • Rounding bottom — menționat de mai multe ori doar ca nume, fără regulă; + e ceașca fără mâner.
  • +
  • VIX citit invers (21.08) — aceleași pattern-uri, altă aplicație.
  • +
  • McClellan, stochastic, RSP — condiții din curs pentru double top, + wedge și triple doji, dar nu se pot desena pe graficul de preț; sunt în + text și tabele.
  • +
  • H&S normal (short) — e în Modul 4, nu în analiza zilnică.
  • +
+
+

Surse

+

Din analiza zilnică (recoltele din harvest/):

+
    +
  • 17.08.2026 — ascending wedge bearish vs ascending triangle bullish; + double top cu al doilea vârf mai sus ca oglindă; RSP; breakout fără volum + la cup & handle.
  • +
  • 18.08.2026 — ascending triangle cu breakout căzut înapoi, retest + + pivot quarterly + bull harami; inverted H&S pe 60 min; double bottom cu al + doilea picior mai sus sau egal.
  • +
  • 19.08.2026 — double top cu shooting star / evening star și divergență + McClellan; triple doji la bottom în descending wedge; double bottom cu + ultimul picior mai jos pe TLT.
  • +
  • 20.08.2026 — spike low nu întotdeauna bottom.
  • +
  • 21.08.2026 — island top; nu lăsa pullback-ul să spargă swing low-ul; + double bottom cu piciorul 2 mai jos ca vânătoare de stop-uri; spike low + sub consolidare.
  • +
  • 24.08.2026 — double bottom în formare vs bear flag; FVG monthly ca al + doilea picior.
  • +
  • 25.08.2026 — inverted H&S pe 60 min ca trigger.
  • +
  • 02.09.2026 — după swing low violat, doar pattern nou de bottom; cu + volum în distribuție, lași încă un swing low.
  • +
  • 03.09.2026 — cup & handle: fractal, trigger, condiții; bull flag + înapoi în locul crimei cu double bottom; triple bottom cu ultimul picior + mai jos.
  • +
  • 04.09.2026 — downtrend / consolidare / breakout; wedge-ul cere volum; + bottom-ul care mai face un picior; inverted H&S overbought fără volum.
  • +
  • 10.09.2026 — swing low confirmat de lumânarea din dreapta; scărița, + inclusiv pe pivoți; invalidarea double bottom-ului cu piciorul 2 mai sus.
  • +
+

Din curs: +Determinarea trendului, +Patternuri complexe (1): structura de trend, +Patternuri complexe (2): Inverted H&S.

+

Referințe externe: +Investopedia — Cup and handle, +IG — Bull flag and bear flag.

+
+

Ce e completare a mea: toate prețurile și diagramele sunt construite (în +transcrieri cifrele sunt nesigure sau lipsesc). Definiția mecanică a +swing-ului (o bară de fiecare parte) și a confirmării (close peste high-ul +barei de low), țintele măsurate (neckline + înălțimea, adâncimea ceștii, +începutul wedge-ului, treapta anterioară), stop-urile sub structură, regula +„mânerul sub 1/3 din ceașcă", fractalul desenat cu cifre (6 săptămâni pe +daily, 6.4R vs 2.6R), explicațiile cu stop-urile executate sub low, cu +cumpărătorii prinși în insulă și cu vânzarea la break-even din mâner, +tabelele DA/NU pentru double top, bull flag vs double bottom, și gotcha-urile +formulate ca atare. Regulile (confirmarea swing-ului, scărița, variantele de +double bottom și top, bear flag-ul, cup & handle cu volum, wedge / triunghi, +island top, triple doji, inverted H&S cu umărul drept mai sus, bull flag în +locul crimei) și citatele vin din sesiuni.

+ + diff --git a/summaries/08_ANALIZA_ZILNICA/06_structura_trend.md b/summaries/08_ANALIZA_ZILNICA/06_structura_trend.md new file mode 100644 index 0000000..822b273 --- /dev/null +++ b/summaries/08_ANALIZA_ZILNICA/06_structura_trend.md @@ -0,0 +1,2550 @@ +# Analiză zilnică / #6 — Structura de trend și pattern-urile + +## TLDR + +- **Structura se citește pe swing-uri.** Un swing low e doar „în formare" + până se închide **lumânarea din dreapta** lui. Uptrend = **scărița**: + higher highs și higher lows, iar pullback-ul nu are voie să spargă ultimul + swing low. +- **Double bottom** are două variante bune: al doilea picior **mai sus** + (începutul scăriței) sau **mai jos** (ia stop-urile celor de la primul + picior, cu volum mai mic). Fără divergență de volum, „double bottom-ul în + formare" poate fi doar un **bear flag**. +- **Double top cu al doilea vârf mai sus** e oglinda, pe short. +- **Cup & handle**: trigger = breakout din mâner, deasupra pivotului + monthly, **cu volum**. E fractal: mânerul de pe weekly e o ceașcă mică pe + daily, cu trigger mai devreme și stop mai strâns. +- **Descending wedge** și **ascending triangle** sunt bullish; **ascending + wedge** e bearish. Breakout-ul fără volum e fals. +- **Island top** e bearish: nu cumperi insula, cumperi jos, după ce gap-ul + vechi s-a închis în suport. **Triple doji** la bottom e „foarte strong + bull". **Inverted H&S** cu umărul drept mai sus e aceeași formă ca o + ceașcă cu mâner. +- **Bull flag vs double bottom**: aceeași formă, alt loc. După un impuls + peste vârful anterior e steag; după un downtrend e bottom. + +--- + +## De ce urmărești structura + +Trigger-ele sistemului (buy doji, MBT-10) spun **când** intri. Structura +spune **dacă** ai voie și **unde** stă stop-ul: + +- **stop-ul** se pune sub ultimul swing low confirmat (sau sub piciorul 2, + sub mâner, sub umărul drept). Dacă prețul ajunge acolo, structura pe care + ai cumpărat nu mai există; +- **ținta** vine tot din structură: vârful anterior, înălțimea pattern-ului + proiectată deasupra neckline-ului, adâncimea ceștii; +- **filtrul**: un trigger long într-o scăriță intactă e trade; același + trigger după un lower low e cuțit care cade. + +Mai jos folosesc o singură idee de mecanism de mai multe ori, așa că o +spun aici. Sub fiecare swing low stau **stop-urile** celor care au cumpărat +acolo. Un stop al unui long e un ordin de **vânzare** la piață. Când prețul +coboară sub low, stop-urile se execută în lanț, iar vânzarea forțată +împinge prețul și mai jos, până când cineva mai mare cumpără tot ce se +vinde. Dacă volumul de sub low e mic, n-a fost mult de vândut: cumpărătorul +mare a luat lichiditatea și prețul revine. Dacă volumul e mare, vânzătorii +sunt reali și structura s-a rupt. + +--- + +## Termenii, o singură dată + +| Termen | Ce înseamnă aici | +|---|---| +| **swing high / swing low (SH / SL)** | bară cu high-ul mai sus (low-ul mai jos) decât bara din stânga și cea din dreapta | +| **lumânarea din dreapta** | bara de după swing; până nu se închide, swing-ul e „în formare" | +| **HH / HL** | higher high / higher low: vârf, respectiv minim, mai sus decât precedentul | +| **scărița** | uptrend văzut ca trepte: HL → HH → HL mai sus. Se aplică și pe pivoți: pivot monthly curent peste cel anterior | +| **neckline** | vârful dintre cele două minime ale unui double bottom (sau dintre umeri la H&S); peste el pattern-ul e confirmat | +| **locul crimei** | fost vârf spart, care la retest devine suport (vezi [#3](03_locul_crimei_si_pullback.html)) | +| **wedge / triunghi** | compresie între două linii de trend care converg. Wedge: ambele linii în aceeași direcție. Ascending triangle: sus plat, jos urcă | +| **gap** | spațiu de preț fără tranzacții între două bare (low-ul barei > high-ul precedentei, sau invers) | +| **bull harami** | bară mică a cumpărătorilor cu corpul în interiorul corpului barei anterioare a vânzătorilor | +| **evening star** | pattern de top din 3 bare: cumpărători mari, o bară mică (aici shooting star, codiță lungă sus), vânzători mari | + +--- + +## 1. Swing low, swing high și lumânarea din dreapta + +> „Îmi place swing low-ul ăsta de-aici și deja este confirmat ca și swing +> low dacă se închide candela de-aici." (10.09) + + + + Exemplu construit (fără ticker) — daily + + SL 45.20 + + intrare 47.00 + + TP 49.90 = 1.6R + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + SH + SL + HH + HL + HH + HL + HH + HL + Linia punctată = SMA-20. Bara 27 devine higher low abia când bara 28 închide peste high-ul ei. + + confirmare + + + +- Patru trepte: minime **40.30 → 41.90 → 43.60 → 45.30**, vârfuri + **43.10 → 44.80 → 46.50 → 48.20**. Asta e scărița. +- Bara 27 face low la 45.30. În acel moment e doar un candidat: următoarea + bară poate coborî sub el. +- Candela din dreapta închide la **47.00**, peste high-ul barei 27, fără + să-i spargă low-ul → higher low confirmat → **intrare 47.00**. +- **SL 45.20**, sub higher low: sub el nu mai există treapta pe care ai + cumpărat. +- **TP 49.90**: higher low-ul + mărimea treptei anterioare (de la 43.60 la + 48.20 = 4.60) = **1.6R**. Atins după 5 candele. + +Structura se citește și pe pivoți (10.09): pivotul monthly al lunii curente +mai sus decât cel anterior e tot structură bull, chiar dacă proiecția e +bear. Și ritmul pe termen lung e același, pe bucăți mai mari (04.09): + +> „Down trend, consolidare, breakout. Down trend, consolidare, breakout." + +## 2. NU: higher low-ul care nu se confirmă + + + + Exemplu construit (fără ticker) — daily + + HL? 45.30 (în formare) + + ultimul HL confirmat 43.60 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + HH + HL + lower low + Candela din dreapta închide sub low: nu există higher low. Sub 43.60 scărița e ruptă. + + HL în formare? + + + +Aceeași serie până la bara 27 (low 45.30). Candela din dreapta coboară la +44.90 și închide la **45.20**: bara 27 nu mai e swing low, deci nu există +higher low. Apoi prețul închide la **43.40, sub ultimul higher low confirmat +(43.60)** → lower low, scărița e ruptă. + +> „Poate nu doboar swing low-ul ăsta, deci pentru că s-ar strica structura +> trend-ului" (21.08) + +După ce swing low-ul e violat, nu mai cumperi pe structura veche. Cauți +intrare doar dacă se formează un pattern nou de bottom (double bottom, +inverted H&S); dacă volumul e în distribuție, lași prețul să mai facă un +swing low (02.09). + +--- + +## 3. Double bottom cu al doilea picior mai sus + + + + Exemplu construit (fără ticker) — daily + + neckline 33.30 + + SL 30.70 + + intrare 32.10 + + TP 36.60 = 3.2R + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + picior 1: 30.00 + picior 2: 30.80 (mai sus) + breakout + Intrare la confirmarea piciorului 2; ținta = neckline + înălțimea pattern-ului. + + + +1. **Context.** Downtrend de la 38.60 până la 30.60. +2. **Picior 1: 30.00.** Revenire până la **neckline 33.30**. +3. **Picior 2: 30.80, mai sus** — vânzătorii nu mai reușesc să ducă prețul + la minimul anterior. E prima treaptă a scăriței. +4. **Confirmare.** Candela din dreapta închide la **32.10**, peste high-ul + barei de low → **intrare 32.10**, stop **30.70** sub piciorul 2. +5. **Breakout** peste neckline la 33.80 — pattern-ul e complet. +6. **TP 36.60** = neckline + înălțimea (33.30 − 30.00) = **3.2R**. + +Intrarea la confirmarea piciorului 2 dă stopul cel mai strâns. Cine așteaptă +breakout-ul peste 33.30 intră mai sus, cu același stop, deci cu R mai mic. +Invalidarea din curs (10.09): dacă breakout-ul peste ultimul vârf nu vine, +„rămâne doar double bottom cu al doilea picior mai sus" — nu e încă trend. + +## 4. Double bottom cu al doilea picior mai jos + +> „i-a scalpat pe ăștia cu stoploss-le aici, dar uitați-vă acționea +> volumului, ce bine s-a dus" (21.08) + + + + Exemplu construit (fără ticker) — daily + + picior 1 30.00 + + SL 29.30 + + intrare 31.50 + + TP 37.20 = 2.6R + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + volum + picior 1 + picior 2: stop-uri luate + trigger + neckline 33.30 + Piciorul 2 sparge 30.00 cu volum mai mic decât piciorul 1, apoi închide înapoi peste. + + + +- Același downtrend și același picior 1 (**30.00**, volum 74). +- Piciorul 2 coboară la **29.40**, sub 30.00: stop-urile celor care au + cumpărat la piciorul 1 se execută. Dar volumul barei e **52**, mult sub + 74 — vânzarea forțată a fost absorbită. Bara e un hammer: închide sus. +- **Trigger**: închidere la **31.50**, peste high-ul hammer-ului și înapoi + peste 30.00 → intrare. +- **SL 29.30**, sub piciorul 2. Dacă se sparge și el, n-a fost vânătoare de + stop-uri, a fost cădere. +- **TP 37.20** = neckline 33.30 + (33.30 − 29.40) = **2.6R**. + +Aceeași variantă apare la sfântul buy doji (vezi +[#1](01_buy_doji_si_strategia_mici.html)), pe TLT la bond-uri (19.08) și cu +wick-ul intrat într-un FVG monthly ca al doilea picior (24.08). Varianta cu +trei minime, ultimul mai jos (triple bottom), e același mecanism încă o dată +(03.09, Wynn). + +## 5. NU: „double bottom-ul în formare" care e bear flag + +> „double bottom în formare poate să fie bareflag, poate să fie, dar având +> în vedere divergența asta și locul crimei este mai mari șanse să vedem o +> urcare" (24.08) + + + + Exemplu construit (fără ticker) — daily + + intrare grăbită 30.90 + + picior 1 30.00 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + volum + bear flag? volum mic + volum mai mare + SL atins + Fără divergență de volum, „double bottom-ul în formare" e doar un bear flag. + SL 29.60 + + + +- După piciorul 1 (30.00), revenirea e lentă, urcă doar până la **32.30**, + cu volum mic: nu cumpără nimeni cu convingere. Asta e forma unui bear + flag. +- „Piciorul 2" coboară la **29.70** cu volum **78, mai mare** decât la + piciorul 1 (74). Nu există divergență: vânzătorii au venit mai mulți, nu + mai puțini. +- Cumpărătorul grăbit intră la **30.90**, stop 29.60. Două bare mai târziu + prețul închide la **29.60**: stop luat. Seria se termină la 26.80. + +| Double bottom DA | Double bottom NU (bear flag) | +|---|---| +| volum mai mic la piciorul 2 (divergență) | volum egal sau mai mare la piciorul 2 | +| revenirea dintre picioare ajunge la neckline cu volum | revenire lentă, volum mic, se oprește jos | +| retest al locului crimei / pivot ținut | fără nivel de suport dedesubt | +| trigger: buy doji weekly, MBT-10 la închidere | sell doji pe daily fără semn de întoarcere | + +Și cu toate astea bune, bottom-ul poate mai face un picior (04.09): + +> „de aici am zis că să duce și nu s-a dus" + +De aceea stop-ul stă sub structură, nu „undeva jos". + +--- + +## 6. Double top cu al doilea vârf mai sus (short) + +Oglinda variantei de la secțiunea 4 (17.08). Pe indice (19.08, Dow Jones) +a fost confirmat de o shooting star într-un evening star și de divergență +pe McClellan: + +> „facem double top cu al doilea vârf mai sus și aici am avut un shooting +> star […] iministar-ul, știți că este un pattern din 3 candele" (19.08) + + + + Exemplu construit (fără ticker) — daily + + SL 60.80 + + intrare short 58.90 + + neckline 56.90 + + TP 53.10 = 3.1R + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + volum + vârf 1: 60.00 + evening star + vârf 2: 60.70 + Oglinda double bottom-ului cu piciorul 2 mai jos: vârful 2 ia stop-urile short-urilor. + + neckline spart + + + +1. Uptrend, **vârf 1 la 60.00**, pullback până la **neckline 56.90**. +2. **Vârf 2 la 60.70, mai sus**: ia stop-urile short-urilor puse deasupra + lui 60.00. Bara care îl face e o shooting star: codiță lungă sus, corp + aproape zero — cumpărătorii au urcat prețul și nu l-au putut ține. +3. **Evening star**: bara mare a cumpărătorilor, shooting star-ul, apoi o + bară a vânzătorilor care închide la **58.90**, sub jumătatea primei → + **intrare short 58.90**. +4. **SL 60.80**, deasupra vârfului 2. +5. Neckline-ul se sparge la 56.50. **TP 53.10** = neckline − înălțimea + (60.70 − 56.90) = **3.1R**. + +| Double top DA | Double top NU | +|---|---| +| vârf 2 cu shooting star / evening star | vârf 2 închis sus, fără respingere | +| divergență bear pe McClellan, advance/decline în scădere | McClellan confirmă vârful | +| McClellan sub linia de zero, apoi sell momentum | — | + +McClellan nu e pe desen: condiția din curs rămâne obligatorie, diagrama +arată doar prețul. + +--- + +## 7. Cup & handle (ceașca cu mâner) + +> „e super că în capul lui a plecat cum-by-dodge, strategia mici deasupra +> pivotului, vedeți ce frumusețe de ceașca cu mâner." (03.09) + +### DA: breakout din mâner, cu volum + + + + Exemplu construit (fără ticker) — weekly + + + + SL 48.10 + + intrare 51.00 + + TP 58.40 = 2.6R + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + volum + margine + margine + ceașca + buy doji + mâner + breakout + Trigger = închiderea peste mâner, cu cel mai mare volum din serie; ținta = adâncimea ceștii. + pivot monthly 47.50 + + + +1. **Ceașca**: margine stângă 50.30, coborâre rotunjită până la **42.20**, + urcare înapoi la **50.30**. Adâncime **8.10**. +2. **Buy doji în fundul ceștii** — varianta preferată de el: trigger-ul + sistemului pornește chiar din bottom. +3. **Mânerul**: coborâre mică până la **48.20** (26% din adâncime), + deasupra **pivotului monthly 47.50**, cu volum în scădere. Cine a + cumpărat în vârful de la stânga și a stat 20 de săptămâni pe pierdere + vinde acum la „break-even"; mânerul e acea vânzare, absorbită. +4. **Trigger**: închidere peste mâner la **51.00**, cu cel mai mare volum + din serie → **intrare 51.00**. +5. **SL 48.10**, sub mâner. **TP 58.40** = marginea + adâncimea ceștii = + **2.6R**, atins după 11 săptămâni. + +| Cup & handle DA | Cup & handle NU | +|---|---| +| mâner format, breakout din mâner | mânerul încă în formare | +| peste pivotul monthly, proiecție bull | sub pivot | +| volum la breakout, relative strength | breakout fără volum | +| bonus: ceașcă mică și pe daily, MBT-10 | pattern „forțat", desenat cu greu — confirmi pe 60 / 15 min | + +La bottom, ceașca cu mâner e adesea același lucru cu un inverted H&S cu +umărul drept mai sus (vezi secțiunea 11). + +### NU: breakout fără volum + +> „A făcut break-out fără volum, asta a fost problema lui" (17.08) + + + + Exemplu construit (fără ticker) — weekly + + + + SL 48.10 + + intrare 50.60 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + volum + buy doji + mâner + breakout fără volum + SL atins + Aceeași ceașcă. Breakout-ul are cel mai mic volum de la fundul ceștii încoace: cade înapoi. + pivot monthly 47.50 + + + +Aceeași ceașcă, același mâner. Bara de breakout închide la **50.60**, peste +50.30, dar cu volum **30** — sub media mânerului (35). Nimeni mare nu +cumpără la preț nou. Săptămâna următoare prețul e înapoi în mâner, iar după +4 săptămâni stop-ul de **48.10** e luat. + +### Fractalul: mânerul weekly e o ceașcă pe daily + +> „pattern-ul de genul ăsta o să vedeți inclusiv pe prop, pe 3 minute, pe 5 +> minute" (03.09) + + + + Exemplu construit (fără ticker) — daily, în mânerul weekly + + breakout weekly 50.30 + + + + SL daily 48.80 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ceașca mică + margine + mâner mic + Cele 6 săptămâni ale mânerului, pe daily: trigger-ul vine cu 2 zile înainte de cel weekly. + + trigger daily + intrare daily 50.10 + + + +Cele 6 săptămâni ale mânerului din diagrama DA, desenate pe daily (close-ul +fiecărei vineri e close-ul barei weekly, iar minimul e același, 48.20): + +- În mâner se formează o **ceașcă mică**: fund 48.20, margine **49.90**, + mâner mic până la **48.90**. +- **Trigger daily**: închidere la **50.10**, peste marginea mică — cu 2 + zile înainte de breakout-ul weekly de 51.00, și încă sub nivelul de + breakout weekly (50.30). +- **SL daily 48.80**, sub mânerul mic: risc **1.30**, față de 2.90 pe + weekly. +- Aceeași țintă, 58.40: **6.4R pe daily față de 2.6R pe weekly**. + +Asta câștigi coborând pe timeframe-ul mic: intrarea și stop-ul, nu direcția. +Direcția rămâne dată de ceașca weekly. Dacă ceașca mică eșuează, pierzi 1.30 +și weekly-ul încă n-a dat semnal. + +--- + +## 8. Wedge și triunghi: compresia + +Compresia înseamnă că ambele tabere acceptă un interval tot mai îngust. La +ieșire, stop-urile de pe partea spartă se execută toate, deodată. De aceea +curs-ul cere volum la breakout (04.09): „un wedge în compresie cere volum +pentru breakout masiv". + +### Descending wedge: DA + + + + Exemplu construit (fără ticker) — daily + + + + SL 46.70 + + intrare 48.60 + + TP 53.00 = 2.3R + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + volum + descending wedge + Minime și maxime tot mai jos, dar tot mai apropiate: vânzătorii obosesc. + + breakout + volum + + + +- Downtrend, apoi vârfuri **53.00 → 51.50 → 50.40 → 49.30** și minime + **48.60 → 47.90 → 47.40 → 46.80**. Ambele coboară, dar vârfurile coboară + de două ori mai repede: la fiecare minim nou, vânzătorii câștigă tot mai + puțin. Volumul scade pe toată compresia. +- **Breakout**: închidere la **48.60**, peste linia de sus (48.21 în acel + punct), cu volum 92, cel mai mare din compresie → **intrare 48.60**. +- **SL 46.70**, sub ultimul minim. **TP 53.00**, începutul wedge-ului = + **2.3R**. + +Descending wedge-ul apare și ca bull flag într-un uptrend (19.08), și ca +bază pentru triple doji la bottom (secțiunea 10). + +### Descending wedge: NU (breakout fals) + + + + Exemplu construit (fără ticker) — daily + + + + SL 46.70 + + intrare 48.30 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + volum + descending wedge + breakout fără volum + SL atins + Aceeași compresie. Close peste linie, dar volumul e cel mai mic din serie: fals. + + + +Aceeași compresie. Bara închide la **48.30**, peste linie, dar cu volum +**31** — sub media wedge-ului (40). Trei candele mai târziu prețul e sub +**46.70**: stop luat. Close-ul peste linie singur nu e breakout; e breakout +când vine cu volum. + +### Ascending wedge la rezistența monthly (short) + +Din 17.08: ascending wedge-ul e bearish prin natura lui; ascending triangle, prin +contrast, e bullish. + + + + Exemplu construit (fără ticker) — daily + + + + SL 53.30 + + intrare short 51.40 + + TP 47.00 = 2.3R + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + volum + uptrend + ascending wedge + rezistență monthly + Oglinda: vârfuri tot mai sus, dar tot mai mici, lipite de rezistența monthly. + + breakdown + volum + + + +Oglinda diagramei DA: vârfuri și minime tot mai sus, dar tot mai apropiate, +cu ultimul vârf lipit de **rezistența monthly 53.20**. Cumpărătorii câștigă +tot mai puțin la fiecare vârf nou. + +- **Breakdown**: închidere la **51.40**, sub linia de jos (51.79), cu volum + → **intrare short 51.40**. +- **SL 53.30**, deasupra rezistenței. **TP 47.00**, începutul wedge-ului = + **2.3R**. + +Pe indici (17.08), ascending wedge-ul la rezistența monthly a venit cu +advance/decline la maxim, dar McClellan în divergență bear. Verificarea e +**RSP** (S&P equal weight): dacă RSP nu confirmă vârful, piața e dusă doar +de mega-cap-uri. + +### Ascending triangle: breakout, retest, bull harami + +Din 18.08: ascending triangle cu breakout căzut înapoi, retest al locului +crimei și al pivotului quarterly, bull harami acolo. + + + + Exemplu construit (fără ticker) — daily + + + rezistență = pivot quarterly 50.00 + + + + intrare 51.10 + + TP 53.40 = 1.8R + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + volum + ascending triangle + breakout + retest + harami + Breakout, cădere înapoi pe fosta rezistență, bull harami acolo: intrare la trigger. + SL 49.80 + + + +1. **Triunghiul**: rezistența **50.00** atinsă de 3 ori, minime tot mai sus + **46.60 → 47.60 → 48.50**. Vânzătorii apără același preț, cumpărătorii + plătesc tot mai mult ca să intre. +2. **Breakout** la 50.90, cu volum. +3. **Retest**: prețul cade înapoi, codița atinge exact **50.00** — fosta + rezistență e acum loc al crimei și pivot quarterly. +4. **Bull harami** pe retest, apoi închidere la **51.10** peste harami → + **intrare 51.10**. +5. **SL 49.80**, sub 50.00. **TP 53.40** = 50.00 + înălțimea triunghiului + (3.40) = **1.8R**. + +--- + +## 9. Island top + +> „island top și […] astea sunt foarte bare prin natura lor. Adică am bucat +> asta care este o insulă, care este izolată" (21.08, Cisco) + + + + Exemplu construit (fără ticker) — daily + + TP 50.30 = 2.6R (gap-ul insulei) + + intrare 45.90 + + pivot quarterly 44.50 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + volum + island top + gap down + hammer: gap închis + Insula e bearish. Cumperi abia jos, unde gap-ul vechi s-a închis în pivotul quarterly. + SL 44.20 + + gap up + + + +1. **Uptrend** cu un gap up vechi între **44.50 și 44.90**, lăsat deschis. +2. **Insula**: gap up peste 49.90, patru bare între 50.70 și 52.20, apoi + **gap down** sub 50.70. Toți cei care au cumpărat în insulă sunt în + pierdere și nu există niciun preț intermediar la care să iasă — de aici + presiunea de vânzare. +3. Coborâre în canal. **Nu cumperi aici.** +4. Prețul coboară până închide gap-ul vechi: hammer cu low **44.40**, exact + în **pivotul quarterly 44.50** (marginea de sus a gap-ului). +5. **Trigger**: închidere la **45.90**, peste hammer → **intrare 45.90**. + Din curs: aici poți intra și **înainte** de MBT-10, imediat după + închiderea gap-ului. +6. **SL 44.20**, sub hammer. **TP 50.30**, marginea de jos a gap-ului + insulei = **2.6R**. + +| Island top: cumpărare DA | NU | +|---|---| +| gap-ul de dedesubt închis în suport (pivot quarterly) | cumperi încă în insulă sau în coborâre | +| pattern de peak bottom / MBT-10 (sau imediat după gap închis) | volum în distribuție negativă → aștepți pattern-ul, nu intri direct | + +Canalul descendent de după insulă poate fi el însuși un bull flag, cu retest +la 1/2 din marubozu (21.08). + +--- + +## 10. Triple doji la bottom + +> „avem triple star, se numește pattern-ul ăsta, triple doji, la care este +> foarte strong bull" (19.08, Charter) + + + + Exemplu construit (fără ticker) — weekly + + low anterior 36.30 + + SL 33.60 + + intrare 35.30 + + TP 39.40 = 2.4R + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + volum + lower high + triple doji + trigger + Trei săptămâni la același preț, cu volum în creștere: cineva absoarbe vânzarea. + + + +1. Downtrend cu **low anterior 36.30** și un lower high la **39.40**. +2. Prețul sparge 36.30: stop-urile de sub low se execută. +3. **Trei doji** consecutive la același preț (~34.20), cu volum în creștere + (50 → 58 → 66). Se vinde tot mai mult și prețul nu mai coboară: cineva + cumpără tot. +4. **Trigger**: închidere la **35.30**, peste high-ul celor trei doji + (34.80) → **intrare 35.30**. +5. **SL 33.60**, sub cele trei doji. **TP 39.40**, lower high-ul anterior = + **2.4R**, atins după 7 săptămâni. + +| Triple doji DA | NU | +|---|---| +| descending wedge, low-urile anterioare sparte | fără acumulare de volum | +| stochastic oversold, divergență bull de volum pe weekly | preț la minimul de acum 11 ani „ieftin" nu e motiv | +| MBT-10 ca ultimă confluență | — | + +--- + +## 11. Inverted head & shoulders + +Varianta de bază e în +[Modul 4 / Inverted H&S](../05_MODUL_4/01_patternuri_complexe_partea_a_doua.html) +(inclusiv H&S normal, pe short). Aici e ce adaugă analiza zilnică: umărul +drept mai sus și legătura cu ceașca. + + + + Exemplu construit (fără ticker) — daily + + + + SL 42.40 + + intrare 44.80 + + TP 49.20 = 1.8R + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + volum + umăr stâng + cap + umăr drept (mai sus) + breakout + Umărul drept mai sus decât cel stâng: aceeași formă ca o ceașcă cu mâner. + neckline 44.20 + + + +- **Umăr stâng 42.10, cap 39.20, umăr drept 42.50** — mai sus decât cel + stâng (03.09: QSR, Biogen, PayPal). Un umăr drept mai sus e un higher low: + prima treaptă. Pus lângă ceașca din secțiunea 7, capul e fundul ceștii, + iar umărul drept e mânerul. +- Volumul scade pe umărul drept, apoi cel mai mare volum la breakout. +- **Breakout** peste **neckline 44.20**: intrare **44.80**. **SL 42.40**, + sub umărul drept. **TP 49.20** = neckline + (44.20 − 39.20) = **1.8R**. + +R-ul e mai mic decât la double bottom-ul din secțiunea 3 pentru că stopul +stă departe, sub umăr. Soluția din curs e aceeași ca la ceașcă: inverted H&S +pe **60 min** ca trigger (25.08, 18.08) — intrare mai jos, stop mai strâns, +în direcția pattern-ului mare. Și încă o condiție (04.09, CPK): inverted H&S +pe monthly cu stochastic overbought și volum deteriorat nu se cumpără — +aștepți pullback sau un buy doji. + +--- + +## 12. Bull flag vs double bottom + +> „el a forțat breakout-ul peste vârful la interioare, s-a întors aici cu +> un bull flag" (03.09, MLKN) + + + + Exemplu construit (fără ticker) — daily + + locul crimei 50.00 + + + + intrare 51.70 + + TP 55.30 = 1.9R + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + volum + vârf anterior + picior 1 + picior 2 + Linia punctată = SMA-20. Double bottom DUPĂ un impuls, nu după downtrend: e steag. + SL 49.80 + bull flag + + + +1. **Vârful anterior 50.00**, apoi consolidare sub el. +2. **Impuls**: breakout peste 50.00 până la **55.30**, volum mediu 70. +3. **Bull flag**: coborâre ordonată înapoi, volum mediu **39**. Cei care au + cumpărat impulsul iau profit, dar nu vine vânzare nouă. +4. În locul crimei se formează un **double bottom cu piciorul 2 mai jos**: + 50.40, apoi **50.00** — codița atinge exact fostul vârf. +5. **Trigger** la **51.70** → intrare. **SL 49.80**, sub locul crimei. + **TP 55.30**, vârful impulsului = **1.9R**. + +Piciorul 2 de aici arată la fel ca în secțiunea 4. Ce se schimbă e locul: + +| Bull flag (continuare) | Double bottom (întoarcere) | +|---|---| +| apare **după un impuls** care a spart un vârf anterior | apare **după un downtrend** | +| pullback-ul coboară în locul crimei; SMA-20 încă urcă | minimele se fac sub SMA-20, după lower lows | +| stochastic poate fi overbought, volumul poate fi slab — normal pe pullback | cere divergență de volum ca să nu fie bear flag | +| intri doar când se formează pattern de bottom în locul crimei + MBT-10 | intri la confirmarea piciorului 2 / buy doji | +| țintă: vârful impulsului, apoi mai sus | țintă: neckline + înălțimea | + +Aceeași logică, pe dos: un „double bottom în formare" **după** un downtrend, +fără divergență de volum, e bear flag (secțiunea 5). Detaliile +pullback-ului în locul crimei, cu stop luat și reintrare, sunt în +[#3, secțiunea 5](03_locul_crimei_si_pullback.html). + +--- + +## Gotchas + +- **Nu cumpăra swing low-ul „în formare".** Diagrama 2: bara de 45.30 arăta + a higher low, candela din dreapta a închis la 45.20. +- **Piciorul 2 mai jos e bun doar cu volum mai mic.** Diagrama 4 (52 față + de 74) vs diagrama 5 (78 față de 74): aceeași formă, rezultat opus. +- **Breakout fără volum = fals.** Ceașca (50.60, volum 30) și wedge-ul + (48.30, volum 31) au închis peste nivel și au luat stop-ul în 3-4 bare. +- **Nu cumperi insula și nici căderea de după ea.** Zona de cumpărare e + gap-ul vechi închis în suport, nu primul preț „ieftin". +- **Spike low-ul nu e bottom în sine** (20.08): de obicei întoarce prețul, + „nu de fiecare dată". E motiv să aștepți trigger-ul, nu intrare. + +--- + +## Ce n-a intrat aici + +- **Spike low sub consolidare** (hammer sub o zonă de consolidare, în partea + de jos a unui triunghi, 21.08) — apare doar ca gotcha; nu am desenat + diagramă separată, mecanismul e cel de la piciorul 2 mai jos. +- **Rounding bottom** — menționat de mai multe ori doar ca nume, fără regulă; + e ceașca fără mâner. +- **VIX citit invers** (21.08) — aceleași pattern-uri, altă aplicație. +- **McClellan, stochastic, RSP** — condiții din curs pentru double top, + wedge și triple doji, dar nu se pot desena pe graficul de preț; sunt în + text și tabele. +- **H&S normal** (short) — e în Modul 4, nu în analiza zilnică. + +--- + +## Surse + +Din analiza zilnică (recoltele din `harvest/`): + +- **17.08.2026** — ascending wedge bearish vs ascending triangle bullish; + double top cu al doilea vârf mai sus ca oglindă; RSP; breakout fără volum + la cup & handle. +- **18.08.2026** — ascending triangle cu breakout căzut înapoi, retest + + pivot quarterly + bull harami; inverted H&S pe 60 min; double bottom cu al + doilea picior mai sus sau egal. +- **19.08.2026** — double top cu shooting star / evening star și divergență + McClellan; triple doji la bottom în descending wedge; double bottom cu + ultimul picior mai jos pe TLT. +- **20.08.2026** — spike low nu întotdeauna bottom. +- **21.08.2026** — island top; nu lăsa pullback-ul să spargă swing low-ul; + double bottom cu piciorul 2 mai jos ca vânătoare de stop-uri; spike low + sub consolidare. +- **24.08.2026** — double bottom în formare vs bear flag; FVG monthly ca al + doilea picior. +- **25.08.2026** — inverted H&S pe 60 min ca trigger. +- **02.09.2026** — după swing low violat, doar pattern nou de bottom; cu + volum în distribuție, lași încă un swing low. +- **03.09.2026** — cup & handle: fractal, trigger, condiții; bull flag + înapoi în locul crimei cu double bottom; triple bottom cu ultimul picior + mai jos. +- **04.09.2026** — downtrend / consolidare / breakout; wedge-ul cere volum; + bottom-ul care mai face un picior; inverted H&S overbought fără volum. +- **10.09.2026** — swing low confirmat de lumânarea din dreapta; scărița, + inclusiv pe pivoți; invalidarea double bottom-ului cu piciorul 2 mai sus. + +Din curs: +[Determinarea trendului](../03_MODUL_2/07_determinare_trend.html), +[Patternuri complexe (1): structura de trend](../04_MODUL_3/02_patternuri_complexe_partea_1.html), +[Patternuri complexe (2): Inverted H&S](../05_MODUL_4/01_patternuri_complexe_partea_a_doua.html). + +Referințe externe: +[Investopedia — Cup and handle](https://www.investopedia.com/terms/c/cupandhandle.asp), +[IG — Bull flag and bear flag](https://www.ig.com/en/trading-strategies/bull-flag-and-bear-flag-chart-patterns-explained-190816). + +--- + +*Ce e completare a mea: toate prețurile și diagramele sunt construite (în +transcrieri cifrele sunt nesigure sau lipsesc). Definiția mecanică a +swing-ului (o bară de fiecare parte) și a confirmării (close peste high-ul +barei de low), țintele măsurate (neckline + înălțimea, adâncimea ceștii, +începutul wedge-ului, treapta anterioară), stop-urile sub structură, regula +„mânerul sub 1/3 din ceașcă", fractalul desenat cu cifre (6 săptămâni pe +daily, 6.4R vs 2.6R), explicațiile cu stop-urile executate sub low, cu +cumpărătorii prinși în insulă și cu vânzarea la break-even din mâner, +tabelele DA/NU pentru double top, bull flag vs double bottom, și gotcha-urile +formulate ca atare. Regulile (confirmarea swing-ului, scărița, variantele de +double bottom și top, bear flag-ul, cup & handle cu volum, wedge / triunghi, +island top, triple doji, inverted H&S cu umărul drept mai sus, bull flag în +locul crimei) și citatele vin din sesiuni.*