svg_candles: cautarea nivelurilor, scoasa in functie comuna; 11 generatoare reparate

Unsprezece generatoare nu mai rulau deloc la HEAD: cautau <line x1="24", iar
svg_candles scrie x1="24.0" de cand are Level.i0. Un generator mort inseamna
ca diagrama nu mai poate fi regenerata, si nimeni n-ar fi aflat pana cand ar
fi incercat cineva, peste luni.

Cele 11 copii ale aceluiasi regex au disparut: y_niveluri() si offset_render()
se agata acum de semnatura liniei de Level (stroke-width + dasharray), nu de
x-ul ei. Caz nou in selftest, cu Level(i0=) si panou de volum - combinatia la
care varianta veche fie crapa, fie prindea tacut linia de zero a volumului.

41 de SVG-uri regenerate, toate identice cu cele comise dupa normalizarea
x1=24 -> x1=24.0, deci niciun desen n-a sarit. Verificarea asta a prins o
regresie reala: la buy_doji_transe substitutia lasase scaderea veche pe randul
urmator, offsetul se scadea de doua ori si desenul urca 92 px.

Inca doua generatoare moarte din aceeasi familie, gasite pe drum
(intrarea_cazul_lui, intrarea_doua_variante): desenau peste grafic citind
ch._y() fara offset. Nu crapau zgomotos - produceau suprapuneri la 22 px.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01ThN7ixZrowca8aTGrK1MUJ
This commit is contained in:
Claude Agent
2026-10-02 06:12:32 +00:00
parent d82e1d5ce5
commit 84f933bcfa
60 changed files with 505 additions and 444 deletions

View File

@@ -174,11 +174,11 @@ stopul sub fitilul hammer-ului, vinzi o parte când prețul a urcat cât riscai
<!-- DIAGRAMA: bh_ansamblu -->
<svg viewBox="0 0 720 559" xmlns="http://www.w3.org/2000/svg" style="width:100%;height:auto;font:12px sans-serif">
<text x="24" y="48" fill="#333" style="font-weight:bold">Buy hammer — daily (ticker ilustrativ XYZ, din lecția de pattern)</text>
<line x1="24" y1="382.4" x2="706" y2="382.4" stroke="#c00" stroke-width="1.5" stroke-dasharray="4 3"/>
<text x="30" y="376.4" fill="#c00">SL 62.05 — sub low-ul hammer-ului</text>
<line x1="24" y1="340.8" x2="706" y2="340.8" stroke="#188a3e" stroke-width="1.5" stroke-dasharray="4 3"/>
<line x1="24.0" y1="382.4" x2="706" y2="382.4" stroke="#c00" stroke-width="1.5" stroke-dasharray="4 3"/>
<text x="30.0" y="376.4" fill="#c00">SL 62.05 — sub low-ul hammer-ului</text>
<line x1="24.0" y1="340.8" x2="706" y2="340.8" stroke="#188a3e" stroke-width="1.5" stroke-dasharray="4 3"/>
<text x="692" y="334.8" fill="#188a3e" text-anchor="end">intrare 63.35</text>
<line x1="24" y1="257.6" x2="706" y2="257.6" stroke="#1a5fb4" stroke-width="1.5" stroke-dasharray="4 3"/>
<line x1="24.0" y1="257.6" x2="706" y2="257.6" stroke="#1a5fb4" stroke-width="1.5" stroke-dasharray="4 3"/>
<text x="692" y="251.6" fill="#1a5fb4" text-anchor="end">TP 65.95 = 2R</text>
<line x1="44.0" y1="56.0" x2="44.0" y2="73.6" stroke="#1a1a1a" stroke-width="1.2"/>
<rect x="39.5" y="64.0" width="9" height="1.6" fill="#188a3e"/>
@@ -310,13 +310,13 @@ ziua e în desfășurare, nu e semnal.
<!-- DIAGRAMA: mbt_ansamblu -->
<svg viewBox="0 0 780 526" xmlns="http://www.w3.org/2000/svg" style="width:100%;height:auto;font:12px sans-serif">
<text x="24" y="48" fill="#333" style="font-weight:bold">MBT-10 — pullback în locul crimei + hammer, închidere la 54.60 (exemplu construit)</text>
<line x1="24" y1="198.0" x2="766" y2="198.0" stroke="#777" stroke-width="1.5" stroke-dasharray="4 3"/>
<text x="30" y="192.0" fill="#777">locul crimei 52.10 (fost vârf spart)</text>
<line x1="24" y1="200.0" x2="766" y2="200.0" stroke="#c00" stroke-width="1.5" stroke-dasharray="4 3"/>
<line x1="24.0" y1="198.0" x2="766" y2="198.0" stroke="#777" stroke-width="1.5" stroke-dasharray="4 3"/>
<text x="30.0" y="192.0" fill="#777">locul crimei 52.10 (fost vârf spart)</text>
<line x1="24.0" y1="200.0" x2="766" y2="200.0" stroke="#c00" stroke-width="1.5" stroke-dasharray="4 3"/>
<text x="752" y="194.0" fill="#c00" text-anchor="end">SL 52.00 — sub codița hammer-ului</text>
<line x1="24" y1="148.0" x2="766" y2="148.0" stroke="#188a3e" stroke-width="1.5" stroke-dasharray="4 3"/>
<line x1="24.0" y1="148.0" x2="766" y2="148.0" stroke="#188a3e" stroke-width="1.5" stroke-dasharray="4 3"/>
<text x="752" y="142.0" fill="#188a3e" text-anchor="end">intrare 54.60 (close în MBT-10)</text>
<line x1="24" y1="62.0" x2="766" y2="62.0" stroke="#1a5fb4" stroke-width="1.5" stroke-dasharray="4 3"/>
<line x1="24.0" y1="62.0" x2="766" y2="62.0" stroke="#1a5fb4" stroke-width="1.5" stroke-dasharray="4 3"/>
<text x="752" y="56.0" fill="#1a5fb4" text-anchor="end">TP 58.90 = 1.65R</text>
<line x1="44.0" y1="314.0" x2="44.0" y2="336.0" stroke="#1a1a1a" stroke-width="1.2"/>
<rect x="39.5" y="320.0" width="9" height="8.0" fill="#188a3e"/>
@@ -939,10 +939,10 @@ din distanța până la el.**
<text x="24" y="64" fill="#333" style="font-weight:bold">Buy hammer — stopul și mărimea poziției (daily, ticker ilustrativ XYZ)</text>
<rect x="257.3" y="163.0" width="49.0" height="77.6" fill="#b06000" fill-opacity="0.08" stroke="#b06000" stroke-width="1"/>
<text x="257.3" y="89.4" fill="#b06000" style="font-weight:bold">cele două bare care dau stopul</text>
<line x1="24" y1="177.6" x2="740" y2="177.6" stroke="#188a3e" stroke-width="1.5" stroke-dasharray="4 3"/>
<text x="30" y="171.6" fill="#188a3e">intrare 63.35 (close-ul confirmării)</text>
<line x1="24" y1="234.8" x2="740" y2="234.8" stroke="#c00" stroke-width="1.5" stroke-dasharray="4 3"/>
<text x="30" y="228.8" fill="#c00">SL 62.05</text>
<line x1="24.0" y1="177.6" x2="740" y2="177.6" stroke="#188a3e" stroke-width="1.5" stroke-dasharray="4 3"/>
<text x="30.0" y="171.6" fill="#188a3e">intrare 63.35 (close-ul confirmării)</text>
<line x1="24.0" y1="234.8" x2="740" y2="234.8" stroke="#c00" stroke-width="1.5" stroke-dasharray="4 3"/>
<text x="30.0" y="228.8" fill="#c00">SL 62.05</text>
<line x1="138.8" y1="85.2" x2="138.8" y2="122.6" stroke="#1a1a1a" stroke-width="1.2"/>
<rect x="132.3" y="96.2" width="13" height="13.2" fill="#188a3e"/>
<line x1="164.8" y1="85.2" x2="164.8" y2="157.8" stroke="#1a1a1a" stroke-width="1.2"/>
@@ -1016,14 +1016,14 @@ dedesubt, iar după ce e atinsă muți stopul sub fiecare swing low nou.**
<rect x="348.4" y="114.5" width="83.0" height="58.5" fill="#b06000" fill-opacity="0.08" stroke="#b06000" stroke-width="1"/>
<text x="348.4" y="109.5" fill="#b06000" style="font-weight:bold">pullback</text>
<rect x="444.4" y="82.2" width="51.0" height="60.2" fill="#b06000" fill-opacity="0.08" stroke="#b06000" stroke-width="1"/>
<line x1="24" y1="136.1" x2="771" y2="136.1" stroke="#1a5fb4" stroke-width="1.5" stroke-dasharray="4 3"/>
<line x1="24.0" y1="136.1" x2="771" y2="136.1" stroke="#1a5fb4" stroke-width="1.5" stroke-dasharray="4 3"/>
<text x="757" y="130.1" fill="#1a5fb4" text-anchor="end">65.95 = 2R — ținta din exemplul lecției</text>
<line x1="24" y1="180.3" x2="771" y2="180.3" stroke="#188a3e" stroke-width="1.5" stroke-dasharray="4 3"/>
<line x1="24.0" y1="180.3" x2="771" y2="180.3" stroke="#188a3e" stroke-width="1.5" stroke-dasharray="4 3"/>
<text x="757" y="174.3" fill="#188a3e" text-anchor="end">64.65 = 1:1 — prima jumătate</text>
<line x1="24" y1="224.5" x2="771" y2="224.5" stroke="#555" stroke-width="1.5" stroke-dasharray="4 3"/>
<text x="30" y="218.5" fill="#555">intrare 63.35</text>
<line x1="24" y1="268.7" x2="771" y2="268.7" stroke="#c00" stroke-width="1.5" stroke-dasharray="4 3"/>
<text x="30" y="262.7" fill="#c00">SL inițial 62.05</text>
<line x1="24.0" y1="224.5" x2="771" y2="224.5" stroke="#555" stroke-width="1.5" stroke-dasharray="4 3"/>
<text x="30.0" y="218.5" fill="#555">intrare 63.35</text>
<line x1="24.0" y1="268.7" x2="771" y2="268.7" stroke="#c00" stroke-width="1.5" stroke-dasharray="4 3"/>
<text x="30.0" y="262.7" fill="#c00">SL inițial 62.05</text>
<line x1="133.9" y1="190.5" x2="133.9" y2="233.0" stroke="#1a1a1a" stroke-width="1.2"/>
<rect x="129.4" y="199.0" width="9" height="23.8" fill="#c00"/>
<line x1="149.9" y1="204.1" x2="149.9" y2="233.0" stroke="#1a1a1a" stroke-width="1.2"/>
@@ -1110,11 +1110,11 @@ exemplu.
<!-- DIAGRAMA: bh_sell -->
<svg viewBox="0 0 720 621" xmlns="http://www.w3.org/2000/svg" style="width:100%;height:auto;font:12px sans-serif">
<text x="24" y="70" fill="#333" style="font-weight:bold">Sell hammer — oglinda pe short (daily, exemplu construit)</text>
<line x1="24" y1="78.0" x2="706" y2="78.0" stroke="#c00" stroke-width="1.5" stroke-dasharray="4 3"/>
<line x1="24.0" y1="78.0" x2="706" y2="78.0" stroke="#c00" stroke-width="1.5" stroke-dasharray="4 3"/>
<text x="692" y="72.0" fill="#c00" text-anchor="end">SL 100.25 — peste high-ul sell hammer-ului</text>
<line x1="24" y1="119.6" x2="706" y2="119.6" stroke="#188a3e" stroke-width="1.5" stroke-dasharray="4 3"/>
<text x="30" y="113.6" fill="#188a3e">intrare short 98.95</text>
<line x1="24" y1="202.8" x2="706" y2="202.8" stroke="#1a5fb4" stroke-width="1.5" stroke-dasharray="4 3"/>
<line x1="24.0" y1="119.6" x2="706" y2="119.6" stroke="#188a3e" stroke-width="1.5" stroke-dasharray="4 3"/>
<text x="30.0" y="113.6" fill="#188a3e">intrare short 98.95</text>
<line x1="24.0" y1="202.8" x2="706" y2="202.8" stroke="#1a5fb4" stroke-width="1.5" stroke-dasharray="4 3"/>
<text x="692" y="196.8" fill="#1a5fb4" text-anchor="end">TP 96.35 = 2R</text>
<line x1="44.0" y1="386.8" x2="44.0" y2="404.4" stroke="#1a1a1a" stroke-width="1.2"/>
<rect x="39.5" y="396.4" width="9" height="1.6" fill="#188a3e"/>
@@ -1383,10 +1383,10 @@ timpul zilei nu contează.**
<text x="24" y="72" fill="#333" style="font-weight:bold">MBT-10 — „în formare" nu e semnal (cifrele exemplului din material)</text>
<rect x="442.3" y="199.5" width="49.0" height="155.4" fill="#b06000" fill-opacity="0.08" stroke="#b06000" stroke-width="1"/>
<text x="442.3" y="194.5" fill="#b06000" style="font-weight:bold">cele două zile care contează</text>
<line x1="24" y1="210.9" x2="737" y2="210.9" stroke="#555" stroke-width="1.5" stroke-dasharray="4 3"/>
<line x1="24.0" y1="210.9" x2="737" y2="210.9" stroke="#555" stroke-width="1.5" stroke-dasharray="4 3"/>
<text x="723" y="204.9" fill="#555" text-anchor="end">intraday 55.30</text>
<line x1="24" y1="319.7" x2="737" y2="319.7" stroke="#1a5fb4" stroke-width="1.5" stroke-dasharray="4 3"/>
<text x="30" y="313.7" fill="#1a5fb4">locul crimei 52.10 — structura ideii</text>
<line x1="24.0" y1="319.7" x2="737" y2="319.7" stroke="#1a5fb4" stroke-width="1.5" stroke-dasharray="4 3"/>
<text x="30.0" y="313.7" fill="#1a5fb4">locul crimei 52.10 — structura ideii</text>
<line x1="115.8" y1="124.2" x2="115.8" y2="163.3" stroke="#1a1a1a" stroke-width="1.2"/>
<rect x="109.3" y="132.7" width="13" height="20.4" fill="#188a3e"/>
<line x1="141.8" y1="103.8" x2="141.8" y2="142.9" stroke="#1a1a1a" stroke-width="1.2"/>
@@ -2229,9 +2229,9 @@ candela următoare se închide peste high-ul lui, stopul sub low-ul lui.
<!-- DIAGRAMA: mbt_tesla -->
<svg viewBox="0 0 620 510" xmlns="http://www.w3.org/2000/svg" style="width:100%;height:auto;font:12px sans-serif">
<text x="24" y="48" fill="#333" style="font-weight:bold">Tesla — daily: trigger MBT-10, intrare 311.21 → 333.00 = +7.0 % în 6 zile</text>
<line x1="24" y1="425.7" x2="606" y2="425.7" stroke="#188a3e" stroke-width="1.5" stroke-dasharray="4 3"/>
<text x="30" y="419.7" fill="#188a3e">intrare 311.21 (close)</text>
<line x1="24" y1="262.2" x2="606" y2="262.2" stroke="#1a5fb4" stroke-width="1.5" stroke-dasharray="4 3"/>
<line x1="24.0" y1="425.7" x2="606" y2="425.7" stroke="#188a3e" stroke-width="1.5" stroke-dasharray="4 3"/>
<text x="30.0" y="419.7" fill="#188a3e">intrare 311.21 (close)</text>
<line x1="24.0" y1="262.2" x2="606" y2="262.2" stroke="#1a5fb4" stroke-width="1.5" stroke-dasharray="4 3"/>
<text x="592" y="256.2" fill="#1a5fb4" text-anchor="end">rezultat 333.00 = +7.0 % în 6 zile</text>
<line x1="44.0" y1="56.0" x2="44.0" y2="64.3" stroke="#1a1a1a" stroke-width="1.2"/>
<rect x="39.5" y="59.8" width="9" height="1.6" fill="#188a3e"/>