06 structura: exemplul de triple doji contrazicea regula lui; plus 6 defecte

Verificare independenta fata de harvest/ si transcrieri. Niciun punct
contestat.

Conținut:
- citat inventat, scos: "un wedge in compresie cere volum pentru breakout
  masiv" nu exista in transcriere (verificat cu grep, 0 apariții acum). El
  spune ca vrea volum mai mare ("as vad sa vad si volumul mai tare"), iar
  breakout-ul masiv il leaga de reintrarea in MBT-10. Nu formuleaza nicio
  regula. Acelasi citat fals era si in 04, corectat acolo.
- exemplul de triple doji contrazicea regula lui: avea volum de vanzare in
  crestere, cand el cere acumulare si divergenta bull de volum (19.08).
  Contrazicea si propriul tabel DA/NU de dedesubt, si documentul 05.
  Reparat DESENUL, nu textul: volumul scade sub low-ul anterior (divergenta
  bull), scade pe cele trei doji (epuizare), trigger-ul are volumul maxim
  din serie, iar pe urcare barele verzi au mai mult volum decat cele rosii.
  Trei assert-uri noi pe relatiile astea. Tabelul DA/NU a rămas neschimbat
  si acum se potriveste.
- trei atribuiri "din curs" erau de fapt din analiza zilnica, verificate
  fisier cu fisier in module: conditia McClellan pentru double top (19.08),
  inverted H&S pe 60 min ca trigger (25.08, 18.08), si RSP + McClellan +
  stochastic (17.08, 19.08). In module McClellan apare doar ca nume. A
  patra trimitere, cea catre modulele 2, 3 si 4, e corecta si a rămas.
- doua caption-uri contraziceau desenul ("volumul e cel mai mic din serie",
  "cel mai mic volum de la fundul cestii" - de fapt egalitate); corectate
  dupa ce arata desenul, unde assert-ul exista deja.
- 44.50 era numit marginea de sus a gap-ului 44.50-44.90, deci de jos.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MtSTyTmt6AbCL9j5ajEDm1
This commit is contained in:
Claude Agent
2026-09-14 06:33:12 +00:00
parent 790af51b4c
commit b805d66c23
3 changed files with 102 additions and 92 deletions

View File

@@ -140,8 +140,8 @@ ch = Chart(candles=cds,
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")],
Mark(17, "HH", GREEN, "above", dy=-14), Mark(20, "HL", GREEN, "below", dy=12),
Mark(24, "HH", GREEN, "above"), Mark(HL, "HL", GREEN, "below", dy=14)],
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.",
@@ -387,7 +387,7 @@ ch = Chart(candles=cds,
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)],
Mark(25, "mâner", ORANGE, "above", dy=-2), 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})
@@ -415,11 +415,11 @@ 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),
marks=[Mark(BD, "buy doji", GREEN, "above", dy=-20), Mark(25, "mâner", ORANGE, "above", dy=-2),
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.",
caption="Aceeași ceașcă. Breakout-ul are volum sub media mânerului: 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)
@@ -455,7 +455,7 @@ ch = Chart(candles=cds,
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)],
Mark(25, "mâner mic", ORANGE, "below", dy=0)],
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})
@@ -571,7 +571,7 @@ ch = Chart(candles=cds,
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.",
caption="Aceeași compresie. Close peste linie, dar cu volum sub media wedge-ului: 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)
@@ -699,7 +699,7 @@ 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 abs(gap1[0] - PIV_Q) < 1e-9, "marginea de jos a gap-ului vechi = pivotul quarterly"
assert cds[TRI].c > hm.h
entry = cds[TRI].c
sl = round(hm.l - 0.2, 2)
@@ -737,8 +737,8 @@ cl = [44.0, 43.1, 43.5, 42.2, 41.0, 41.4, 39.9, 38.6,
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]
vols = [50, 54, 42, 58, 60, 44, 62, 64, 70, 46, 42, 40, 52, 56, 44, 56, 52, 48, 46, 42,
36, 34, 32, 84, 66, 40, 70, 72, 42, 76, 80]
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]
@@ -746,7 +746,11 @@ 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(vols[15:20]) < vols[8], "sub low-ul anterior volumul trebuie să fie mai mic (divergență bull de volum)"
assert vols[20] > vols[21] > vols[22] and vols[20] < min(vols[15:20]), "pe doji vânzarea trebuie să se epuizeze"
up = [vols[i] for i in range(23, len(cl)) if cl[i] > cl[i - 1]]
dn = [vols[i] for i in range(23, len(cl)) if cl[i] < cl[i - 1]]
assert vols[23] == max(vols) and min(up) > max(dn), "din oversold, volumul trebuie să fie pe barele verzi (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
@@ -769,7 +773,7 @@ ch = Chart(candles=cds,
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.",
caption="Sub low volumul scade, pe doji se stinge; trigger-ul și urcarea vin cu volum: acumulare.",
**{**STYLE, "width": 700})
svg_ = ch.render()
assert abs(px_ratio(ch, sl, entry, tp) - R) < 0.01
@@ -865,8 +869,8 @@ ch = Chart(candles=cds,
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)],
Mark(L1, "picior 1", RED, "below", dy=8),
Mark(L2, "picior 2", RED, "below", dy=12)],
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.",