diff --git a/gen/az_volum.py b/gen/az_volum.py index a5f5e74..6491e9a 100644 --- a/gen/az_volum.py +++ b/gen/az_volum.py @@ -78,10 +78,10 @@ print(f"D1 rez {RES} breakout close {cds[B].c} vol {da_v[B]} = {da_v[B] / vavg:. ch = Chart(candles=cds, levels=[Level(RES, f"rezistență {RES:.2f}", ORANGE, label_at="left"), Level(sl, f"SL {sl:.2f}", RED), - Level(entry, f"intrare {entry:.2f} (1/2 marubozu)", GREEN), + Level(entry, f"intrare {entry:.2f} (1/2 marubozu)", GREEN, label_at="left"), Level(tp, f"TP {tp:.2f} = 2R", BLUE)], marks=[Mark(17, "consolidare, volum mic", GRAY, "below", dy=6), - Mark(B, "breakout", GREEN, "above", dy=-95), + Mark(B, "breakout", GREEN, "above", dy=-35), Mark(PB, "retest", GREEN, "below", dy=4)], mas=[MA(20, ORANGE, dash="4 3", text="SMA-20")], scale=40, title="Exemplu construit (fără ticker) — daily", @@ -236,7 +236,7 @@ ch = Chart(candles=cds, Level(entry, f"intrare {entry:.2f}", GREEN), Level(tp, f"TP {tp:.2f} = 2R", BLUE)], marks=[Mark(L1, f"picior 1: {leg1:.2f}", RED, "below", dy=-2), - Mark(L2, f"picior 2: {leg2:.2f}", RED, "below", dy=12), + Mark(L2, "picior 2", RED, "above", dy=-22), Mark(T, "buy doji", GREEN, "above", dy=-30)], mas=[MA(20, GRAY, dash="4 3", text="SMA-20")], scale=34, title="Exemplu construit (fără ticker) — daily", @@ -325,28 +325,32 @@ svgs["volum_conduce"] = svg_ # ---------------------------------------------------------------- 8. monthly: contextul (volum pozitiv) mo_cl = [30.0, 31.2, 30.6, 32.1, 33.4, 32.8, 34.5, 35.6, 35.0, 36.8, 38.0, # 0-10 uptrend 1 37.2, 36.5, 37.0, 36.1, 36.8, # 11-15 consolidare - 38.4, 39.6, 40.9, 40.2, 41.8, 43.0, # 16-21 breakout, vârf - 42.1, 41.3, 41.8, 40.9, 41.5, 42.4] # 22-27 pullback -mo_w = [(0.4, 0.4)] * len(mo_cl) + 38.4, 39.6, 40.9, 40.2, 41.8, 43.1, # 16-21 breakout, vârf + 42.1, # 22 pullback + 42.3] # 23 hammer: codița atinge locul crimei +mo_w = [(0.4, 0.4)] * 23 + [(0.2, 3.7)] mo_v = [60, 70, 40, 72, 76, 42, 78, 80, 44, 82, 84, 40, 38, 50, 36, 48, 96, 88, 90, 44, 92, 94, - 36, 34, 58, 32, 60, 64] + 36, 58] cds = from_closes(mo_cl, wicks=mo_w, vols=mo_v, start=29.4) CRIME = round(max(c.h for c in cds[8:16]), 2) PEAK = round(max(c.h for c in cds), 2) -assert CRIME == 38.40 and PEAK == 43.40, (CRIME, PEAK) +MBO = 16 +assert CRIME == 38.40 and PEAK == 43.50, (CRIME, PEAK) +assert next(i for i, c in enumerate(cds) if c.c >= CRIME) == MBO and mo_v[MBO] == max(mo_v[:MBO + 1]), \ + "eticheta «breakout cu volum» trebuie să stea pe prima închidere peste 38.40, cu volumul maxim de până atunci" +MO_PB_LOW = round(min(c.l for c in cds[22:]), 2) u_m, d_m = up_down_vol(cds, 0, len(cds)) -u_pb, d_pb = up_down_vol(cds, 22, len(cds)) +d_pb = avg(c.vol for c in cds[22:] if c.c < c.o) assert u_m >= 1.6 * d_m, "pe monthly volumul cumpărătorilor trebuie să domine" assert d_pb < avg(mo_v[16:22]) * 0.5, "pullback-ul monthly are volum de vânzare mic" print(f"D8 monthly: vol cumpărători {u_m:.0f} vs vânzători {d_m:.0f} = {u_m / d_m:.1f}x; locul crimei {CRIME}; vârf {PEAK}") ch = Chart(candles=cds, levels=[Level(CRIME, f"fost vârf {CRIME:.2f}", ORANGE, label_at="left")], - marks=[Mark(12, "consolidare", GRAY, "below", dy=4), - Mark(13, "breakout cu volum", GREEN, "above", dy=-35), - Mark(24, "pullback, volum mic", GRAY, "above", dy=-20)], - mas=[MA(20, GRAY, dash="4 3", text="SMA-20")], + marks=[Mark(12, "consolidare", GRAY, "below", dy=24), + Mark(MBO, "breakout cu volum", GREEN, "below", dy=6), + Mark(23, "hammer", GREEN, "below", dy=0)], scale=14, title="Exemplu construit (fără ticker) — monthly", caption=f"Monthly: barele de cumpărători au volum mediu {u_m / d_m:.1f}x față de barele de vânzători.", **STYLE) @@ -379,6 +383,9 @@ risk = entry - sl R = (top - entry) / risk hit = next(i for i in range(CFW + 1, len(cds)) if cds[i].h >= top) assert R >= 2.0, R +assert MO_PB_LOW == round(cds[HM].l, 2) == CRIME and top == PEAK, \ + "monthly și weekly trebuie să spună același lucru: pullback până la 38.40, vârf la același preț" + print(f"D9 weekly: raliu vol {rally_v:.0f}, pullback vol {pb_v:.0f} ({pb_v / rally_v:.0%}); hammer low {cds[HM].l:.2f}; " f"intrare {entry} SL {sl} risc {risk:.2f} TP {top} = {R:.2f}R atins la {hit}") ch = Chart(candles=cds, @@ -387,7 +394,7 @@ ch = Chart(candles=cds, Level(entry, f"intrare {entry:.2f}", GREEN), Level(top, f"TP {top:.2f} = {R:.1f}R", BLUE)], marks=[Mark(24, "volum în scădere", GRAY, "above", dy=-100), - Mark(HM, "hammer", GREEN, "below", dy=12)], + Mark(HM, "hammer", GREEN, "above", dy=-20)], mas=[MA(20, GRAY, dash="4 3", text="SMA-20")], scale=60, title="Exemplu construit (fără ticker) — weekly", caption="Weekly-ul arată vânzare, dar pe volum mic: e retestul, nu ieșirea instituționalilor.", diff --git a/summaries/08_ANALIZA_ZILNICA/05_volum.html b/summaries/08_ANALIZA_ZILNICA/05_volum.html index 890b313..1b70f85 100644 --- a/summaries/08_ANALIZA_ZILNICA/05_volum.html +++ b/summaries/08_ANALIZA_ZILNICA/05_volum.html @@ -37,8 +37,9 @@ monthly = „nu sunt instituționali" — ideea long slăbește.
@@ -777,9 +779,11 @@ interesant să vedem asta, pentru că asta arată implicare instituțională"„Într-un moment, buy momentum, facem break-out deasupra pivotului -monthly. Volumul e țeavă" (10.09)
+monthly. Volumul e țeavă, deși nu pompează bani în compania asta de +energie" (10.09)„plecăm cu un buy doji, cu volum țeavă și de aici, uitați-vă ce s-a întâmplat, vedeți ce înseamnă volumul" (04.09)
Din sesiuni, varianta de pe indici: „breakdown sub pivot, volumul trece -negativ" (19.08, DHI) și „volumul se duce într-o distribuție negativă. Asta -nu-mi place" (02.09, LEU, pe un sell doji).
+Din sesiuni, pe acțiuni, volumul care trece negativ e motiv să nu intri +long: breakdown sub pivot cu volum care trece negativ = trigger NU (19.08, +DHI); pe LEU, într-un sell doji, „volumul da să duce într-o distribuție +negativă. Asta nu-mi place" (02.09). Short-ul pe retest din diagramă e +aplicarea mea a oglinzii.
Ce faci când vezi asta: pui simbolul pe listă și aștepți trigger-ul de preț. Volumul care iese primul îți spune că breakout-ul, când vine, are combustibil; nu îți dă intrarea.
-Ce spune el, pe bucăți: „volumul este în breakout peste nivelele de aici, pe -instituțional" (19.08, PGNY, înaintea breakout-ului de preț); „am avut o -compresie inclusiv pe volum" (17.08); pe un wedge în compresie, „aș vrea să -văd și volumul mai tare [...] posibil să vedem un breakout masiv" (04.09).
+Regula e a lui, formulată în +Q&A 11.06.2025 / Volumul conduce prețul: +dacă volumul e în breakout peste vârfurile lui anterioare, iar prețul e încă +sub prețul de la acele vârfuri, sunt mari șanse ca prețul să ajungă +acolo. „Asta e strategie de sine stătătoare." Merge pe orice timeframe; a +arătat-o live pe un minut, cu indicatorul de volum din curs și cu OBV +(On Balance Volume: total cumulat, volumul barei se adună când închide mai +sus și se scade când închide mai jos).
+În analiza zilnică: „volumul este in breakout peste nivele de aici, pe +instituțional" (19.08, PGNY, la un posibil cup & handle, înaintea +breakout-ului de preț).
Volumul se citește de sus în jos. Monthly-ul spune dacă instituționalii sunt în simbol. Weekly-ul spune ce fac acum.
-Weekly, aceeași perioadă. Aici pullback-ul arată urât: 7 săptămâni de +
Weekly, ultimele luni ale graficului monthly (de la vârful de 43.50 la +hammer). Aici pullback-ul arată urât: 7 săptămâni de scădere. Dar volumul mediu pe pullback e 52% din cel de pe raliu. E „deteriorat", nu inversat.
Cazul din rândul 3, cu semnale care se contrazic:
-„volumul da este în distribuție negativă în momentul de față pe monthly, -în schimb, cineva pe instituțional cumpără Bloom Energy." (24.08)
+„volumul da este în distribuție negativă […] pe Mantri, în schimb, cineva +pe instituțional cumpără Bloom Energy." (24.08; „Mantri" e probabil +„monthly" transcris greșit)
Decizia a rămas pe pattern-ul de bottom (higher low + buy doji), nu pe volum.
@@ -1864,20 +1865,21 @@ Cu aceeași intrare și același stop, ar fi fost scos după 7 săptămâni.