buy_doji: graficul TF-ului mic devine lupa pe candelele TF-ului mare
Userul nu putea vedea ce bucata din weekly e reprezentata de daily. In perechi_tf si directie, graficul mic nu mai e o serie care vine dupa cel mare, ci descompunerea lui reala: o candela mare = k candele mici, cu open, close, max(high) si min(low) care coincid, verificat bara cu bara prin assert. k per pereche: 5 zile/saptamana, 4 saptamani/luna, 7 bare de 60 min/zi. Corespondenta se vede: caseta de lupa peste exact candelele marite, ghidaje catre colturile cadrului mic, si nivelul-cheie desenat ca aceeasi linie pe ambele panouri, cu acelasi numar de ambele parti. Interdictia "eticheta unui panou nu poate numi pretul celuilalt" capata o exceptie explicita pentru nivelurile comune, cu assert propriu ca numarul apare identic pe ambele panouri. Pullback-ul si momentul intrarii sunt acum etichetate pe desen, nu doar in text. Toate cifrele recalculate din serii. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01ThN7ixZrowca8aTGrK1MUJ
This commit is contained in:
@@ -1,101 +1,149 @@
|
||||
SPEC DIAGRAMĂ — buy_doji_perechi_tf
|
||||
====================================
|
||||
tip: PRET (trei rânduri, câte două grafice pe rând)
|
||||
tip: PRET (trei rânduri, câte două grafice pe rând, legate prin lupă)
|
||||
destinație: summaries/17_STRATEGII/01_buy_doji.md, Pasul 2 („Alegi perechea…")
|
||||
cheie markdown: <!-- DIAGRAMA: perechi_tf -->
|
||||
generator: gen/strategii/buy_doji_perechi_tf.py (de scris de agentul de diagrame)
|
||||
titlu SVG: „Aceeași regulă pe trei perechi — exemplu construit (fără ticker)"
|
||||
generator: gen/strategii/buy_doji_perechi_tf.py
|
||||
titlu SVG: „Aceeași regulă pe trei perechi — graficul mic e lupa pe ultimele
|
||||
candele mari"
|
||||
stil: STYLE.md §„Cum trebuie să arate un grafic de preț": candele lipite
|
||||
(gap 15-18, body_w 9-10), fără volum, open = close-ul precedentului.
|
||||
(gap 15, body_w 9), fără volum, open = close-ul precedentului.
|
||||
Un singur SVG, 3 rânduri stivuite vertical (lățime 720, mobil).
|
||||
Pe fiecare rând: stânga = TF mare (11 candele), dreapta = TF mic
|
||||
(15 candele). Scară proprie pe fiecare grafic, dar UNA singură pe
|
||||
tot graficul (px/unitate constant în interiorul lui).
|
||||
Scară proprie pe fiecare panou, dar UNA singură în interiorul lui.
|
||||
|
||||
CE S-A SCHIMBAT (20.09.2026) ȘI DE CE
|
||||
-------------------------------------
|
||||
Userul: „ar trebui să aibă corespondență la prețuri, ca să îmi dau seama care
|
||||
bucată din graficul weekly este reprezentată de graficul daily — adică care
|
||||
candelă weekly e reprezentată de candelele din graficul daily, cu aceleași
|
||||
linii de preț."
|
||||
|
||||
Versiunea veche punea în dreapta o serie care VENEA DUPĂ graficul mare (o
|
||||
săgeată „apoi cobori pe graficul mic"). Nu se vedea nicio corespondență.
|
||||
Acum graficul mic e **descompunerea reală** a ultimelor candele mari:
|
||||
caseta de lupă + două ghidaje + nivelul comun cu același număr pe ambele
|
||||
panouri.
|
||||
|
||||
CE TREBUIE SĂ DEMONSTREZE
|
||||
-------------------------
|
||||
1. Regula e identică pe toate trei perechile: TF mare dă buy doji confirmat
|
||||
(direcția: long permis), TF mic face pullback de 8 candele până la high-ul
|
||||
dojiului mare, face un doji acolo, confirmă, intri.
|
||||
2. Ce se schimbă când cobori: stopul pe TF mic e de 4-5 ori mai mic decât
|
||||
stopul pe TF mare pentru același setup; „8 candele" înseamnă alt timp.
|
||||
3. Săgeată/paranteză „zoom" de la ultima candelă a graficului mare spre
|
||||
graficul mic: graficul mic începe după confirmarea de pe TF mare.
|
||||
1. Regula e identică pe toate trei perechile: pe TF-ul mare, buy doji +
|
||||
confirmare dau direcția (long permis); în interiorul ultimelor candele
|
||||
mari, pe TF-ul mic, se vede pullback-ul de 8 candele până la high-ul
|
||||
dojiului mare, doji-ul acolo, confirmarea = intrarea, stopul, ținta 1:1.
|
||||
2. **Agregarea, vizibilă și adevărată**: fiecare candelă mare din casetă se
|
||||
sparge în k candele mici. Graficul mic nu e „altă serie", e aceeași serie
|
||||
privită mai de aproape.
|
||||
3. Ce se schimbă când cobori: stopul pe TF mic e de ~4 ori mai mic decât cel
|
||||
măsurat pe TF mare pentru același setup → de ~4 ori mai multe acțiuni la
|
||||
același risc.
|
||||
|
||||
SERIA — rândul A (weekly → daily), f = 1.0
|
||||
------------------------------------------
|
||||
TF mare (weekly), (open, high, low, close), index 0-10:
|
||||
0 (122.0,122.6,119.4,120.0) 1 (120.0,120.5,117.0,117.5) 2 (117.5,119.0,117.1,118.4)
|
||||
3 (118.4,118.8,114.3,114.8) 4 (114.8,115.3,111.5,112.0) 5 (112.0,113.4,111.6,112.9)
|
||||
6 (112.9,113.2,109.1,109.6) 7 (109.6,110.0,106.3,106.8) 8 (106.8,107.2,103.6,104.0)
|
||||
9 (104.0,105.2,101.9,103.8) <- doji weekly
|
||||
10 (103.8,107.4,103.5,107.0) <- confirmare (close 107.0 > high doji 105.2)
|
||||
TF mic (daily), index 0-14 (open[0] = 107.0 = close-ul barei mari 10):
|
||||
0 (107.0,107.2,106.4,106.6) 1 (106.6,106.8,106.0,106.1) 2 (106.1,106.6,105.95,106.4)
|
||||
3 (106.4,106.5,105.8,105.9) 4 (105.9,106.0,105.5,105.6) 5 (105.6,105.95,105.5,105.8)
|
||||
SERIILE — cum se construiesc
|
||||
----------------------------
|
||||
Sursa de adevăr e seria FINĂ (TF mic), 15 bare, rândul A, f = 1.0:
|
||||
0 (107.0,107.2,106.4,106.6) 1 (106.6,106.8,106.0,106.1)
|
||||
2 (106.1,106.6,105.95,106.4) 3 (106.4,106.5,105.8,105.9)
|
||||
4 (105.9,106.0,105.5,105.6) 5 (105.6,105.95,105.5,105.8)
|
||||
6 (105.8,105.9,105.4,105.5) 7 (105.5,105.6,105.25,105.35)
|
||||
8 (105.35,105.75,105.10,105.40) <- doji daily, low-ul atinge nivelul 105.20
|
||||
8 (105.35,105.75,105.10,105.40) <- doji mic, low 105.10 la nivelul 105.20
|
||||
9 (105.40,106.40,105.30,106.30) <- confirmare => intrare 106.30
|
||||
10 (106.3,107.0,106.2,106.9) 11 (106.9,107.5,106.7,107.4) 12 (107.4,107.55,107.0,107.2)
|
||||
13 (107.2,108.0,107.1,107.9) 14 (107.9,108.6,107.8,108.5)
|
||||
10 (106.3,107.0,106.2,106.9) 11 (106.9,107.5,106.7,107.4)
|
||||
12 (107.4,107.55,107.0,107.2) 13 (107.2,108.0,107.1,107.9)
|
||||
14 (107.9,108.6,107.8,108.5)
|
||||
barele 0-7 = pullback-ul de 8 candele; 10.. = drumul spre țintă.
|
||||
|
||||
SERIA — rândul B (monthly → weekly) și rândul C (daily → 60 min)
|
||||
----------------------------------------------------------------
|
||||
Aceeași formă, scalată: p' = round(100 + f*(p - 100), 2), cu f = 2.5 (B) și
|
||||
f = 0.4 (C), aplicat pe fiecare o/h/l/c din rândul A. Generatorul calculează
|
||||
seriile, NU le copiază de mână. Valorile care rezultă (de verificat cu assert):
|
||||
Barele TF-ului mare DINAINTEA lupei (BASE), 8 bare, rândul A:
|
||||
0 (118.4,118.8,114.3,114.8) 1 (114.8,115.3,111.5,112.0)
|
||||
2 (112.0,113.4,111.6,112.9) 3 (112.9,113.2,109.1,109.6)
|
||||
4 (109.6,110.0,106.3,106.8) 5 (106.8,107.2,103.6,104.0)
|
||||
6 (104.0,105.2,101.9,103.8) <- doji mare (high 105.20 = nivelul comun)
|
||||
7 (103.8,107.4,103.5,107.0) <- confirmare mare (close 107.00 = open fine[0])
|
||||
|
||||
Candelele mari din casetă NU se scriu de mână: se CALCULEAZĂ prin agregare
|
||||
pe k bare fine. Per rând:
|
||||
rând TF mare → TF mic k candele mari mărite bare fine folosite
|
||||
A weekly → daily 5 3 15 (0..14)
|
||||
B monthly → weekly 4 3 12 (0..11)
|
||||
C daily → 60 min 7 2 14 (0..13)
|
||||
|
||||
Rândurile B și C se obțin din A prin p' = round(100 + f*(p - 100), 2), cu
|
||||
f = 2.5 (B) și f = 0.4 (C). Transformarea e afină, deci agregarea se
|
||||
păstrează; gruparea (k) diferă însă per rând, deci barele mari se recalculează.
|
||||
|
||||
VALORI CARE REZULTĂ (verificate cu assert)
|
||||
------------------------------------------
|
||||
A: doji mare h 105.20 / l 101.90; confirmare mare close 107.00;
|
||||
lupă 105.10-108.60; intrare 106.30; SL 105.10; risc 1.20 (1.13 %); TP1 107.50
|
||||
doar pe TF mare: intrare 107.00, SL 101.90, risc 5.10 (4.77 %) → x4.22
|
||||
B: doji mare h 113.00 / l 104.75; confirmare mare close 117.50;
|
||||
doji mic l 112.75; intrare 115.75; SL 112.75; risc 3.00 (2.59 %); TP1 118.75
|
||||
doar pe TF mare: intrare 117.50, SL 104.75, risc 12.75 (10.85 %)
|
||||
lupă 112.75-118.75; intrare 115.75; SL 112.75; risc 3.00 (2.59 %); TP1 118.75
|
||||
doar pe TF mare: intrare 117.50, SL 104.75, risc 12.75 (10.85 %) → x4.19
|
||||
C: doji mare h 102.08 / l 100.76; confirmare mare close 102.80;
|
||||
doji mic l 102.04; intrare 102.52; SL 102.04; risc 0.48 (0.47 %); TP1 103.00
|
||||
doar pe TF mare: intrare 102.80, SL 100.76, risc 2.04 (1.98 %)
|
||||
A (pentru comparație): intrare 106.30; SL 105.10; risc 1.20 (1.13 %); TP1 107.50
|
||||
doar pe TF mare: intrare 107.00, SL 101.90, risc 5.10 (4.77 %)
|
||||
lupă 102.04-103.20; intrare 102.52; SL 102.04; risc 0.48 (0.47 %); TP1 103.00
|
||||
doar pe TF mare: intrare 102.80, SL 100.76, risc 2.04 (1.98 %) → x4.24
|
||||
|
||||
NIVELURI (pe fiecare rând)
|
||||
--------------------------
|
||||
Pe graficul mare: linie punctată gri la high-ul dojiului mare („high doji
|
||||
weekly 105.20" / „high doji monthly 113.00" / „high doji daily 102.08").
|
||||
Pe graficul mic: aceeași linie, dar etichetată „nivel din <TF mare>", FĂRĂ
|
||||
preț: un preț al TF-ului mare pe panoul TF-ului mic se citește ca trigger al
|
||||
panoului mic. Prețurile de pe panoul mic sunt doar ale lui:
|
||||
intrare verde; SL roșu; TP1 verde punctat.
|
||||
LEGĂTURA DINTRE PANOURI (miezul diagramei)
|
||||
-------------------------------------------
|
||||
1. **Caseta de lupă** (albastru) pe graficul mare, peste EXACT candelele
|
||||
mărite, întinsă pe intervalul de preț [low zonă, high zonă].
|
||||
2. **Două ghidaje** punctate albastre de la colțurile din dreapta ale casetei
|
||||
la colțurile din stânga ale cadrului graficului mic — convenția clasică de
|
||||
zoom. Ghidajele sunt exacte: cadrul mic acoperă exact intervalul de preț al
|
||||
casetei (assert: max/min din barele mici == max/min din candelele mari
|
||||
mărite). Între ghidaje, textul „lupă: ultimele N candele <TF mare>".
|
||||
3. **Nivelul comun**: high-ul dojiului mare, desenat ca aceeași linie punctată
|
||||
gri pe AMBELE panouri, cu ACELAȘI număr de ambele părți — stânga
|
||||
„high doji weekly 105.20", dreapta „nivel weekly 105.20". Scările rămân
|
||||
proprii fiecărui panou; nivelul comun face legătura.
|
||||
Extremele zonei mărite sunt repere comune implicite: le arată ghidajele.
|
||||
(Nu le etichetăm cu cifre: coloana din dreapta s-ar aglomera.)
|
||||
|
||||
ETICHETE
|
||||
--------
|
||||
Titlu rând: A „weekly → daily" B „monthly → weekly" C „daily → 60 min"
|
||||
Pe graficul mare: zonă peste doji + confirmare, etichetată dedesubt
|
||||
„doji + confirmare: aici se decide direcția".
|
||||
Pe graficul mic: zonă peste doji + confirmare, etichetată „doji la nivel:
|
||||
aici intri"; Level „stop <preț>" (pe rândul A și „sub ultimele 4 candele"),
|
||||
Level „ținta 1:1 <preț>", Level „intrare <preț>".
|
||||
Săgeata-zoom dintre grafice: „apoi cobori pe graficul mic".
|
||||
Subtitluri: stânga „<TF mare>: direcția";
|
||||
dreapta „<TF mic>: descompunerea ultimelor N candele <TF mare>".
|
||||
Pe graficul mare: zonă verde peste doji + confirmare, etichetată dedesubt
|
||||
„doji + confirmare: aici se decide direcția"; nivelul comun la stânga.
|
||||
Pe graficul mic: zonă verde peste doji-ul mic + confirmare, cu o linie de
|
||||
legătură spre eticheta „doji la nivel, apoi confirmare: aici intri";
|
||||
paranteză sub cadru peste primele 8 bare: „pullback: 8 candele în jos, fără
|
||||
minim nou"; coloana din dreapta: „ținta 1:1 <preț>", „intrare <preț>",
|
||||
„nivel <TF mare> <preț>", „stop <preț>" (pe rândul A și „sub ultimele 4 bare").
|
||||
Doar pe rândul A: paranteză de stop pe TF-ul mare („stop 4,77 %") și pe cel
|
||||
mic („stop 1,13 %"), cu o săgeată între ele: „același setup, stop de 4 ori
|
||||
mai mic → de 4 ori mai multe acțiuni la același risc".
|
||||
mic („stop 1,13 %"), cu o săgeată roșie între ele: „același setup, stop de
|
||||
4,2 ori mai mic → de 4,2 ori mai multe acțiuni la același risc". Raportul
|
||||
se calculează, nu se scrie.
|
||||
Restul cifrelor (praguri, „8 candele" pe fiecare pereche, cât ții) stau în
|
||||
tabelul din capitol, nu în SVG: diagrama nu repetă tabelul.
|
||||
|
||||
ASSERT-URI OBLIGATORII ÎN GENERATOR
|
||||
-----------------------------------
|
||||
Pe fiecare rând (A, B, C), pe seriile calculate:
|
||||
1. Fiecare bară: h >= max(o,c) și l <= min(o,c); open[i] == close[i-1]
|
||||
(pe fiecare grafic separat).
|
||||
2. open-ul primei bare mici == close-ul barei mari 10.
|
||||
3. Doji mare (9) și doji mic (8): abs(o-c) <= 0.10*(h-l).
|
||||
4. close mare[10] > high mare[9]; close mic[9] > high mic[8].
|
||||
5. SL == min(l for bare mici 6..9) == low mic[8] (extrema ultimelor 4).
|
||||
6. risc == intrare - SL; TP1 == intrare + risc; primul i>9 cu high >= TP1 este 11.
|
||||
7. Valorile din lista „valori care rezultă" de mai sus, egale la 2 zecimale,
|
||||
inclusiv procentele din textul de sub rând.
|
||||
8. abs(low mic[8] - high mare[9]) / high mare[9] <= 0.005 (doji mic la nivel,
|
||||
sub pragul cel mai strict, 0,5 %).
|
||||
9. Raportul pixeli SL-intrare / intrare-TP1 == 1 pe fiecare grafic mic.
|
||||
10. Fiecare preț stă pe panoul lui: nicio etichetă din dreapta (x >= SL_X1-20)
|
||||
nu conține dh/dl/conf/b_sl/b_entry, nicio etichetă din stânga nu conține
|
||||
entry/sl/tp/sdl; și invers, dh apare pe panoul mare, iar entry/sl/tp pe
|
||||
cel mic. Asta e assert-ul care prinde „high doji 105.20" pus pe daily.
|
||||
1. Fiecare bară: h >= max(o,c) și l <= min(o,c); open[i] == close[i-1]
|
||||
(pe fiecare grafic separat, inclusiv peste joncțiunea BASE→lupă).
|
||||
2. AGREGAREA, per candelă mare mărită j: open == open-ul primei mici,
|
||||
close == close-ul ultimei mici, high == max(high mici), low == min(low mici).
|
||||
3. len(fine) == k * nz; open fine[0] == close-ul confirmării mari.
|
||||
4. Doji mare (BASE 6) și doji mic (fine 8): abs(o-c) <= 0.10*(h-l).
|
||||
5. Confirmări: close BASE[7] > high BASE[6]; close fine[9] > high fine[8].
|
||||
6. SL == min(l for fine 6..9) == low fine[8] == minimul întregii zone mărite.
|
||||
7. risc == intrare - SL; TP1 == intrare + risc; primul i>9 cu high >= TP1 e 11.
|
||||
8. Pullback: fine[0].close > fine[7].close (coboară) ȘI min(low 0..7) >
|
||||
low-ul dojiului mare (deci „fără minim nou").
|
||||
9. Extremele zonei mărite == extremele candelelor mari mărite.
|
||||
10. abs(low fine[8] - high doji mare) / high doji mare <= 0.005.
|
||||
11. Raportul pixeli SL-intrare / intrare-TP1 == 1 pe fiecare grafic mic.
|
||||
12. 4 <= stop% pe TF mare / stop% pe TF mic < 4.5.
|
||||
13. Valorile din „VALORI CARE REZULTĂ", egale la 2 zecimale.
|
||||
14. PANOURI. Nicio etichetă din dreapta (x >= FRAME_L-20) nu conține un preț
|
||||
al TF-ului mare, nicio etichetă din stânga nu conține unul al TF-ului mic.
|
||||
**Excepție explicită: NIVELURILE COMUNE** (setul COMUNE din generator,
|
||||
acum {dh} = high-ul dojiului mare). Ele sunt scoase din ambele seturi de
|
||||
interdicție ȘI au un assert propriu: numărul trebuie să apară pe AMBELE
|
||||
panouri, formatat identic (2 zecimale). O scutire fără assert ar permite
|
||||
ca nivelul să dispară de pe un panou sau să apară cu alt număr.
|
||||
15. Fiecare text încape în viewBox și nicio pereche de texte nu se suprapune
|
||||
(aceeași regulă ca audit_diagrams.py: |Δy| < 13 și suprapunere pe x).
|
||||
|
||||
SURSA
|
||||
-----
|
||||
|
||||
Reference in New Issue
Block a user