svg_candles: serie continua, panou de volum, medii mobile, etichete ancorate
Userul a cerut ca diagramele de pret sa arate ca un grafic real (TradingView): linie continua de pret si volum, ca sa se vada trendul. Candelele izolate cu spatii mari nu spun nimic despre trend. Adaugat in svg_candles.py: - from_closes() / walk(): serii continue, open = close-ul barei anterioare, cu structura controlata exact din close-uri - panou de volum (vol_h), bare colorate pe directia candelei - MA: medii mobile calculate din close-uri - Mark: etichete ancorate pe candele anume (la 30 de bare, tag-urile per candela se suprapun) - title, Level.label_at - selftest extins: volum proportional, serie fara goluri, structura pastrata STYLE.md: regula noua, cu cele doua stiluri (serie de 25-45 de bare pentru orice grafic de pret; stilul vechi de 3-6 candele doar pentru definitii de pattern-uri de o candela) si obligatia de assert in generator. gen/exemplu_grafic_real.py: referinta de copiat. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01MtSTyTmt6AbCL9j5ajEDm1
This commit is contained in:
32
STYLE.md
32
STYLE.md
@@ -110,6 +110,38 @@ Verificare automată de pus în orice pagină cu trade-uri: pentru fiecare
|
||||
diagramă cu trei niveluri (SL / intrare / TP), raportul dintre distanțele în
|
||||
preț trebuie să fie identic cu raportul dintre distanțele în pixeli.
|
||||
|
||||
## Cum trebuie să arate un grafic de preț (cerut de user, 2026-09-13)
|
||||
|
||||
Userul citește diagramele ca să vadă **trendul** și să facă analogie cu un
|
||||
grafic real din TradingView. Candelele izolate, cu spații mari între ele, nu
|
||||
arată ca un grafic și nu-i spun nimic despre trend. Deci:
|
||||
|
||||
**Orice diagramă care arată preț sau volum se desenează ca serie continuă:**
|
||||
- **25-45 de candele**, lipite (`gap=15-18`, `body_w=9-10`), nu 3-6 candele
|
||||
izolate. Pattern-ul trebuie să aibă context în stânga și în dreapta lui.
|
||||
- **Open-ul fiecărei bare = close-ul barei anterioare.** Folosește
|
||||
`from_closes(...)` (definești close-urile, deci controlezi exact structura)
|
||||
sau `walk(...)`. Fără goluri artificiale între bare.
|
||||
- **Panou de volum dedesubt** (`vol_h=70`), cu bare colorate pe direcția
|
||||
candelei, de fiecare dată când textul vorbește despre volum.
|
||||
- **Medie mobilă** (`mas=[MA(20, ...)]`) când textul vorbește despre trend
|
||||
sau despre SMA — se calculează singură din close-uri.
|
||||
- **Etichetele se ancorează pe candele** cu `marks=[Mark(i, ...)]`, nu cu
|
||||
`tag` per candelă: la 30 de bare, etichetele per candelă se suprapun.
|
||||
- `title="SIMBOL — timeframe"` sus, ca pe un chart real.
|
||||
|
||||
Stilul vechi (3-6 candele, `gap=92`) rămâne valabil **doar** pentru
|
||||
definiții de pattern-uri de o candelă (ce e un marubozu, ce e un doji),
|
||||
unde contează forma barei, nu trendul.
|
||||
|
||||
**Verificare obligatorie în generator:** după ce construiești seria, extrage
|
||||
din ea nivelurile pe care le afirmi în text (`min(c.l for c in cds[a:b])`) și
|
||||
pune `assert` că se potrivesc — ex. că al doilea picior chiar e mai jos decât
|
||||
primul, că intrarea e egală cu close-ul ultimei bare, că R-ul din etichetă e
|
||||
cel calculat. Ochiul nu prinde o structură care contrazice eticheta; calculul
|
||||
da. (Găsit ca bug real de agenții de verificare, 13.09.2026: o intrare short
|
||||
descrisă „sub low-ul barei de retest", desenată deasupra lui.)
|
||||
|
||||
## Diagrame (obligatorii, nu opționale — userul e vizual learner)
|
||||
- **Orice paragraf "Exemplu real" cu cifre concrete are nevoie de propria
|
||||
diagramă chiar acolo, lipită de text** — nu doar undeva mai jos în fișier,
|
||||
|
||||
Reference in New Issue
Block a user