04_selectia: ultimele doua diagrame (rvol, trinity)
Pasul 6 si cele 3 stele, singurele doua marcaje ramase LIPSA. Ambele conceptuale, dupa tiparul lui selectia_scor / selectia_cadrane. Singurul prag desenat la RVOL e 100 %, cat da sursa; trinity ilustreaza doar sensul din acest capitol (RS + Power + volum in cadranul 1). Assert-urile masoara in pixeli raportul bara/medie (2.00 si 0.61), deci o schimbare de scara sau de serie face eticheta sa pice, nu sa minta. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01ThN7ixZrowca8aTGrK1MUJ
This commit is contained in:
315
gen/strategii/selectia_rvol.py
Normal file
315
gen/strategii/selectia_rvol.py
Normal file
@@ -0,0 +1,315 @@
|
||||
#!/usr/bin/env python3
|
||||
"""Relative volume (RVOL) — bara zilei față de media ultimelor 10 bare.
|
||||
|
||||
Diagramă conceptuală (NU grafic de preț): pentru
|
||||
`summaries/17_STRATEGII/04_selectia.md`, Nivel 2, Pasul 6. Citește
|
||||
specificația `gen/strategii/selectia_rvol.spec.txt` și scrie
|
||||
`gen/strategii/selectia_rvol.svg`.
|
||||
|
||||
Nu folosește `svg_candles` / `pchart`: SVG-ul e construit ca string, doar
|
||||
stdlib. Fără `<g transform>` — toate coordonatele sunt absolute.
|
||||
|
||||
Ce arată:
|
||||
- două panouri cu ACELAȘI istoric de 10 bare de volum și aceeași medie;
|
||||
- linia mediei = 100 %, punctată, etichetată pe ambele panouri;
|
||||
- bara „azi": stânga de 2x media (RVOL 200 %, cazul HIG), dreapta 0.61x
|
||||
media (RVOL 0.61, cazul ULTA);
|
||||
- banda de jos: sub 100 % e minus, nu veto (cele trei rezultate reale ale
|
||||
scanerului de Buy Doji: 0.86, 1.03, 0.61);
|
||||
- nota: media e pe 10 bare, nu pe 50 ca în setările implicite.
|
||||
|
||||
Singurul prag din material e „peste 100 %"; nu se desenează alt prag.
|
||||
|
||||
Rulare: .venv/bin/python gen/strategii/selectia_rvol.py
|
||||
"""
|
||||
import html
|
||||
import re
|
||||
import xml.etree.ElementTree as ET
|
||||
from pathlib import Path
|
||||
|
||||
W, H = 700, 764
|
||||
|
||||
BLACK = "#000000"
|
||||
GRAY = "#777777"
|
||||
RED = "#c00"
|
||||
GREEN = "#188a3e"
|
||||
BLUE = "#1a5fb4"
|
||||
ORANGE = "#b06000"
|
||||
|
||||
GREEN_BG = "#eef7f0"
|
||||
RED_BG = "#fdeeee"
|
||||
NOTE_BG = "#fdf0e0"
|
||||
GRAY_BG = "#f7f7f7"
|
||||
|
||||
# ------------------------------------------------------- date (unități de volum)
|
||||
# Istoricul e ales ca media lui să fie exact 100 -> „media = 100 %".
|
||||
ISTORIC = [82, 95, 88, 91, 97, 140, 103, 110, 120, 74]
|
||||
MEDIA = sum(ISTORIC) / len(ISTORIC) # = 100.0
|
||||
AZI_HIG = 2.00 * MEDIA # RVOL 200 % (cazul HIG)
|
||||
AZI_ULTA = 0.61 * MEDIA # RVOL 0.61 (cazul ULTA)
|
||||
|
||||
# ------------------------------------------------------- geometrie panouri
|
||||
PAN_Y0, PAN_Y1 = 128.0, 438.0 # cadrul panoului
|
||||
BASE = 430.0 # linia de 0 a volumului
|
||||
UNIT = 0.84 # px per unitate de volum
|
||||
PAN_W = 284.0
|
||||
PAN_AX, PAN_BX = 40.0, 376.0 # marginea stângă a fiecărui panou
|
||||
|
||||
TEXTS = [] # (x, y, s, size, weight, fill, anchor)
|
||||
RECTS = [] # (x, y, w, h, tag)
|
||||
|
||||
|
||||
def add(x, y, s, size=13, weight="normal", fill=BLACK, anchor="middle"):
|
||||
TEXTS.append((float(x), float(y), s, size, weight, fill, anchor))
|
||||
return s
|
||||
|
||||
|
||||
def est_w(s, size, weight):
|
||||
factor = 0.62 if weight == "bold" else 0.56
|
||||
return len(s) * size * factor
|
||||
|
||||
|
||||
def txt(x, y, s, size=13, weight="normal", fill=BLACK, anchor="middle"):
|
||||
return (f'<text x="{x:.1f}" y="{y:.1f}" font-size="{size}" '
|
||||
f'font-weight="{weight}" fill="{fill}" text-anchor="{anchor}">'
|
||||
f'{html.escape(s, quote=False)}</text>')
|
||||
|
||||
|
||||
def rect(x, y, w, h, tag, fill="#ffffff", stroke=GRAY, sw=1.5, dash=None,
|
||||
opacity=None):
|
||||
RECTS.append((float(x), float(y), float(w), float(h), tag))
|
||||
d = f' stroke-dasharray="{dash}"' if dash else ""
|
||||
o = f' fill-opacity="{opacity}"' if opacity is not None else ""
|
||||
return (f'<rect x="{x:.1f}" y="{y:.1f}" width="{w:.1f}" height="{h:.1f}" '
|
||||
f'fill="{fill}"{o} stroke="{stroke}" stroke-width="{sw}"{d}/>')
|
||||
|
||||
|
||||
def line(x1, y1, x2, y2, stroke=GRAY, width=1.0, dash=None):
|
||||
d = f' stroke-dasharray="{dash}"' if dash else ""
|
||||
return (f'<line x1="{x1:.1f}" y1="{y1:.1f}" x2="{x2:.1f}" y2="{y2:.1f}" '
|
||||
f'stroke="{stroke}" stroke-width="{width}"{d}/>')
|
||||
|
||||
|
||||
def arrow(x1, y1, x2, y2, stroke=BLACK, width=1.6):
|
||||
"""Săgeată verticală simplă (vârf triunghiular la capătul (x2, y2))."""
|
||||
dy = 1 if y2 > y1 else -1
|
||||
return [line(x1, y1, x2, y2 - dy * 7, stroke, width),
|
||||
f'<polygon points="{x2:.1f},{y2:.1f} {x2 - 5:.1f},{y2 - dy * 8:.1f} '
|
||||
f'{x2 + 5:.1f},{y2 - dy * 8:.1f}" fill="{stroke}"/>']
|
||||
|
||||
|
||||
# ---------------------------------------------------------------- panou
|
||||
BARS = {} # tag panou -> listă de (x_centru, y_top, înălțime, valoare)
|
||||
|
||||
|
||||
def panou(tag, px, azi, culoare_azi, eticheta_azi, subeticheta_azi, captura):
|
||||
"""Desenează un panou: 10 bare de istoric + linia mediei + bara „azi"."""
|
||||
out = [rect(px, PAN_Y0, PAN_W, PAN_Y1 - PAN_Y0, f"pan_{tag}",
|
||||
fill="#ffffff", stroke=GRAY, sw=1.2)]
|
||||
vals = ISTORIC + [azi]
|
||||
slot = PAN_W / len(vals)
|
||||
bw = slot * 0.62
|
||||
bars = []
|
||||
for i, v in enumerate(vals):
|
||||
cx = px + slot * (i + 0.5)
|
||||
h = v * UNIT
|
||||
top = BASE - h
|
||||
ultima = (i == len(vals) - 1)
|
||||
col = culoare_azi if ultima else "#9aa3ad"
|
||||
out.append(f'<rect x="{cx - bw / 2:.1f}" y="{top:.1f}" width="{bw:.1f}" '
|
||||
f'height="{h:.1f}" fill="{col}" '
|
||||
f'fill-opacity="{1.0 if ultima else 0.55}" '
|
||||
f'stroke="{col if ultima else "#7a828a"}" stroke-width="1"/>')
|
||||
bars.append((cx, top, h, v))
|
||||
BARS[tag] = bars
|
||||
|
||||
# linia de bază (volum 0) și linia mediei
|
||||
out.append(line(px, BASE, px + PAN_W, BASE, BLACK, 1.2))
|
||||
y_med = BASE - MEDIA * UNIT
|
||||
out.append(line(px, y_med, px + PAN_W, y_med, ORANGE, 2.0, "5 3"))
|
||||
# eticheta stă în stânga, unde barele sunt sub linie, ca să nu cadă peste ele
|
||||
add(px + 6, y_med - 6, "media = 100 %", 13, "bold", ORANGE, "start")
|
||||
|
||||
# eticheta barei „azi" + săgeata către vârful ei
|
||||
cx, top, _h, _v = bars[-1]
|
||||
add(px + PAN_W / 2, PAN_Y0 + 24, eticheta_azi, 15, "bold", culoare_azi)
|
||||
add(px + PAN_W / 2, PAN_Y0 + 44, subeticheta_azi, 13, "normal", BLACK)
|
||||
out += arrow(cx, PAN_Y0 + 54, cx, top - 4, culoare_azi, 1.8)
|
||||
|
||||
# axa de jos: ce sunt barele
|
||||
add(px + (PAN_W - slot) / 2 - slot * 0.3, BASE + 20,
|
||||
"ultimele 10 bare de volum", 13, "normal", GRAY)
|
||||
add(cx, BASE + 20, "azi", 13, "bold", culoare_azi)
|
||||
|
||||
# captura: de ce contează
|
||||
add(px + PAN_W / 2, BASE + 48, captura[0], 13, "bold", culoare_azi)
|
||||
add(px + PAN_W / 2, BASE + 68, captura[1], 13, "normal", BLACK)
|
||||
return out
|
||||
|
||||
|
||||
# =============================================================== CONȚINUT
|
||||
p = []
|
||||
|
||||
add(W / 2, 34, "Relative volume (RVOL): volumul zilei față de media pe 10 bare",
|
||||
17, "bold")
|
||||
add(W / 2, 58, "RVOL = volumul de azi ÷ media ultimelor 10 bare de volum",
|
||||
14, "bold", GRAY)
|
||||
add(W / 2, 80,
|
||||
"Măsoară dacă azi chiar participă lumea, nu doar tu. Singurul prag din curs: peste 100 %.",
|
||||
13, "normal", GRAY)
|
||||
|
||||
add(PAN_AX + PAN_W / 2, 110, "Cazul HIG — peste prag", 15, "bold", GREEN)
|
||||
add(PAN_BX + PAN_W / 2, 110, "Cazul ULTA — sub prag", 15, "bold", RED)
|
||||
|
||||
p += panou("hig", PAN_AX, AZI_HIG, GREEN,
|
||||
"azi = 2 × media → RVOL 200 %",
|
||||
"cel mai mare din cele 16 rezultate",
|
||||
("peste 100 % = confirmare",
|
||||
"se tranzacționează dublu față de normal"))
|
||||
p += panou("ulta", PAN_BX, AZI_ULTA, RED,
|
||||
"azi = 0,61 × media → RVOL 0.61",
|
||||
"sub jumătate față de o zi normală",
|
||||
("sub 100 % = minus, NU veto",
|
||||
"îl notezi, dar analiza continuă"))
|
||||
|
||||
# ---- banda „minus, nu veto"
|
||||
BAND_Y = 526.0
|
||||
p.append(rect(40, BAND_Y, 620, 112, "band_veto", fill=GRAY_BG, stroke=GRAY, sw=1.2))
|
||||
add(60, BAND_Y + 26, "Sub 100 % e un minus, nu un veto", 15, "bold", BLACK, "start")
|
||||
add(60, BAND_Y + 50,
|
||||
"Pe scanerul real de Buy Doji, cele trei rezultate aveau RVOL 0.86, 1.03 și 0.61.",
|
||||
13, "normal", BLACK, "start")
|
||||
add(60, BAND_Y + 70,
|
||||
"Un prag dur de genul „RVOL ≥ 1.2” ar fi dat zero rezultate în ziua aia.",
|
||||
13, "normal", BLACK, "start")
|
||||
add(60, BAND_Y + 94,
|
||||
"De aceea RVOL e o coloană pe care o citești, nu un filtru care taie automat.",
|
||||
13, "bold", BLACK, "start")
|
||||
|
||||
# ---- nota: media pe 10, nu pe 50
|
||||
NOTE_Y = 654.0
|
||||
p.append(rect(40, NOTE_Y, 620, 90, "note_10", fill=NOTE_BG, stroke=ORANGE, sw=1.4))
|
||||
add(60, NOTE_Y + 26,
|
||||
"Media e pe 10 bare, nu pe 50 (implicit în platforme).",
|
||||
13, "bold", BLACK, "start")
|
||||
add(60, NOTE_Y + 48,
|
||||
"Cifra cursului e mai sensibilă la ziua curentă. Dacă vezi altă valoare în",
|
||||
13, "normal", GRAY, "start")
|
||||
add(60, NOTE_Y + 68,
|
||||
"altă platformă, nu e greșeală de calcul, e altă lungime de medie.",
|
||||
13, "normal", GRAY, "start")
|
||||
|
||||
# =============================================================== EMITERE
|
||||
head = (f'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 {W} {H}" '
|
||||
f'width="{W}" height="{H}" font-family="system-ui, sans-serif" role="img" '
|
||||
f'aria-label="Relative volume: doua panouri de volum cu aceeasi medie '
|
||||
f'pe 10 bare; in stanga ziua de azi e de doua ori media (RVOL 200 la '
|
||||
f'suta, cazul HIG), in dreapta 0.61 din medie (cazul ULTA); sub 100 la '
|
||||
f'suta e minus, nu veto">')
|
||||
body = [head, f'<rect x="0" y="0" width="{W}" height="{H}" fill="#ffffff"/>']
|
||||
body += p
|
||||
for x, y, s, size, weight, fill, anchor in TEXTS:
|
||||
body.append(txt(x, y, s, size, weight, fill, anchor))
|
||||
body.append("</svg>")
|
||||
svg = "\n".join(body) + "\n"
|
||||
|
||||
# =============================================================== VERIFICARE
|
||||
# 1. geometria desenată chiar spune ce spun etichetele: raportul dintre
|
||||
# înălțimea barei „azi" și înălțimea liniei mediei (măsurate în px, de la
|
||||
# linia de 0) trebuie să fie 2.00, respectiv 0.61.
|
||||
h_media_px = BASE - (BASE - MEDIA * UNIT)
|
||||
for tag, rvol_cerut in (("hig", 2.00), ("ulta", 0.61)):
|
||||
h_azi_px = BARS[tag][-1][2]
|
||||
assert abs(h_azi_px / h_media_px - rvol_cerut) < 0.005, \
|
||||
f"{tag}: bara desenată dă RVOL {h_azi_px / h_media_px:.3f}, nu {rvol_cerut}"
|
||||
|
||||
# 2. istoricul e chiar de 10 bare și media lui e chiar linia trasată
|
||||
for tag in ("hig", "ulta"):
|
||||
istoric = [b[3] for b in BARS[tag][:-1]]
|
||||
assert len(istoric) == 10, f"{tag}: {len(istoric)} bare de istoric, nu 10"
|
||||
assert abs(sum(istoric) / 10 - MEDIA) < 1e-9, f"{tag}: media desenată nu e media barelor"
|
||||
# istoricul e identic în ambele panouri (același simbol de referință vizual)
|
||||
assert [b[3] for b in BARS["hig"][:-1]] == [b[3] for b in BARS["ulta"][:-1]]
|
||||
|
||||
# 3. bara „azi" din HIG e chiar cea mai înaltă, iar cea din ULTA e sub medie
|
||||
assert BARS["hig"][-1][2] == max(b[2] for b in BARS["hig"]), "bara HIG nu e cea mai înaltă"
|
||||
assert BARS["ulta"][-1][2] < h_media_px, "bara ULTA nu e sub linia mediei"
|
||||
# și barele nu ies din cadrul panoului
|
||||
for tag in ("hig", "ulta"):
|
||||
for cx, top, h, v in BARS[tag]:
|
||||
assert top >= PAN_Y0, f"{tag}: bară peste marginea de sus a panoului"
|
||||
assert abs(top + h - BASE) < 1e-6, f"{tag}: bară care nu pleacă de la linia de 0"
|
||||
|
||||
# 3b. eticheta mediei nu cade peste nicio bară (e pusă în stânga, unde barele
|
||||
# sunt sub linia mediei)
|
||||
_y_med = BASE - MEDIA * UNIT
|
||||
for tag in ("hig", "ulta"):
|
||||
px = PAN_AX if tag == "hig" else PAN_BX
|
||||
lat = est_w("media = 100 %", 13, "bold")
|
||||
for cx, top, h, v in BARS[tag]:
|
||||
if cx - 9 < px + 6 + lat and cx + 9 > px + 6:
|
||||
assert top > _y_med - 6 + 3, \
|
||||
f"{tag}: eticheta mediei cade peste o bară (valoare {v})"
|
||||
|
||||
# 4. nicio cifră care nu e desenată sau care nu vine din material
|
||||
PERMISE = {"2", "200", "100", "10", "50", "0.61", "0,61", "0.86", "1.03", "1.2", "16"}
|
||||
for _x, _y, s, *_ in TEXTS:
|
||||
for n in re.findall(r"\d+(?:[.,]\d+)?", s):
|
||||
assert n in PERMISE, f"cifră fără acoperire în material: {n!r} în {s!r}"
|
||||
# pragul inventat „ideal > 200 %" nu are voie să apară
|
||||
assert "ideal" not in svg.lower(), "prag inventat de tip ideal peste N la suta"
|
||||
|
||||
# 5. textele obligatorii
|
||||
for req in ("Relative volume (RVOL): volumul zilei față de media pe 10 bare",
|
||||
"RVOL = volumul de azi ÷ media ultimelor 10 bare de volum",
|
||||
"Singurul prag din curs: peste 100 %",
|
||||
"media = 100 %",
|
||||
"azi = 2 × media → RVOL 200 %",
|
||||
"azi = 0,61 × media → RVOL 0.61",
|
||||
"peste 100 % = confirmare",
|
||||
"sub 100 % = minus, NU veto",
|
||||
"Sub 100 % e un minus, nu un veto",
|
||||
"RVOL 0.86, 1.03 și 0.61",
|
||||
"zero rezultate în ziua aia",
|
||||
"nu un filtru care taie automat",
|
||||
"Media e pe 10 bare, nu pe 50"):
|
||||
assert req in svg, f"lipsește din desen: {req!r}"
|
||||
# eticheta mediei apare o dată pe fiecare panou
|
||||
assert svg.count("media = 100 %") == 2, "linia mediei neetichetată pe ambele panouri"
|
||||
|
||||
# 6. fiecare etichetă: mărime >= 13, în pânză, fără suprapuneri
|
||||
boxes = []
|
||||
for x, y, s, size, weight, fill, anchor in TEXTS:
|
||||
assert size >= 13, f"font sub 13px: {s!r} ({size})"
|
||||
w = est_w(s, size, weight)
|
||||
if anchor == "end":
|
||||
left = x - w
|
||||
elif anchor == "start":
|
||||
left = x
|
||||
else:
|
||||
left = x - w / 2.0
|
||||
right = left + w
|
||||
top, bottom = y - size * 0.78, y + size * 0.22
|
||||
assert -2 <= left and right <= W + 2, f"text în afara pânzei orizontal: {s!r}"
|
||||
assert 0 <= top and bottom <= H, f"text în afara pânzei vertical: {s!r}"
|
||||
boxes.append((left, right, top, bottom, s))
|
||||
for i in range(len(boxes)):
|
||||
for j in range(i + 1, len(boxes)):
|
||||
l1, r1, t1, b1, s1 = boxes[i]
|
||||
l2, r2, t2_, b2, s2 = boxes[j]
|
||||
if r1 > l2 + 2 and r2 > l1 + 2 and b1 > t2_ + 2 and b2 > t1 + 2:
|
||||
raise AssertionError(f"etichete suprapuse: {s1!r} / {s2!r}")
|
||||
|
||||
# 7. stil + XML valid, fără transformări (audit_diagrams dă fals-pozitive pe ele)
|
||||
assert "filter=" not in svg and "gradient" not in svg, "fără umbre/gradienți"
|
||||
assert "transform=" not in svg, "fără <g transform>: coordonate absolute"
|
||||
assert 'font-family="system-ui, sans-serif"' in svg, "lipsește fontul cerut"
|
||||
assert svg.lstrip().startswith("<svg "), "rădăcina nu e <svg>"
|
||||
assert ET.fromstring(svg).tag.endswith("svg")
|
||||
|
||||
OUT = Path(__file__).with_suffix(".svg")
|
||||
OUT.write_text(svg, encoding="utf-8")
|
||||
print(f"scris {OUT} ({len(svg)} bytes, {len(TEXTS)} etichete, "
|
||||
f"2 panouri x 11 bare, medie {MEDIA:.0f}, "
|
||||
f"RVOL desenat {BARS['hig'][-1][2] / h_media_px:.2f} / "
|
||||
f"{BARS['ulta'][-1][2] / h_media_px:.2f}, {W}x{H}), verificare OK")
|
||||
27
gen/strategii/selectia_rvol.spec.txt
Normal file
27
gen/strategii/selectia_rvol.spec.txt
Normal file
@@ -0,0 +1,27 @@
|
||||
TIP: CONCEPT (bare de volum + linia mediei, nu candele)
|
||||
|
||||
UNDE APARE: strategii/04_selectia.md, Nivel 2, Pasul 6 „Relative volume peste 100 %".
|
||||
|
||||
CE ARATA: cum se citeste RVOL — volumul zilei impartit la media ultimelor 10 bare
|
||||
de volum — in doua cazuri reale din material: HIG la 200 % si ULTA la 0.61.
|
||||
|
||||
COMPOZITIE:
|
||||
- doua panouri de volum, identice ca istoric (10 bare) si ca linie a mediei;
|
||||
- linia mediei = 100 %, punctata, etichetata pe ambele panouri;
|
||||
- bara „azi": in panoul stang de 2x media (RVOL 200 %), in cel drept 0.61 x media.
|
||||
|
||||
CIFRE (toate din capitol / material, niciuna inventata):
|
||||
- HIG: RVOL 200 %, cel mai mare din cele 16 rezultate ale scanerului din ziua aceea.
|
||||
- ULTA: RVOL 0.61, sub jumatate fata de normal.
|
||||
- scanerul real de Buy Doji: cele trei rezultate aveau 0.86, 1.03 si 0.61.
|
||||
- media e pe 10 bare; indicatorul standard din platforme o calculeaza pe 50.
|
||||
- pragul din sursa e doar „peste 100 %". NU se pune alt prag (nu exista
|
||||
„ideal > 200 %" in material).
|
||||
|
||||
MESAJ:
|
||||
- peste 100 % = confirmare (participa lumea, nu doar tu);
|
||||
- sub 100 % = minus, NU veto: analiza a continuat la 0.99, 0.96, 0.94, 0.88, 0.74;
|
||||
- un prag dur „RVOL >= 1.2" ar fi dat zero rezultate in ziua scanerului de Buy Doji,
|
||||
de aceea RVOL e coloana pe care o citesti, nu filtru care taie automat.
|
||||
|
||||
TITLU: "Relative volume (RVOL): volumul zilei față de media pe 10 bare"
|
||||
63
gen/strategii/selectia_rvol.svg
Normal file
63
gen/strategii/selectia_rvol.svg
Normal file
@@ -0,0 +1,63 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 700 764" width="700" height="764" font-family="system-ui, sans-serif" role="img" aria-label="Relative volume: doua panouri de volum cu aceeasi medie pe 10 bare; in stanga ziua de azi e de doua ori media (RVOL 200 la suta, cazul HIG), in dreapta 0.61 din medie (cazul ULTA); sub 100 la suta e minus, nu veto">
|
||||
<rect x="0" y="0" width="700" height="764" fill="#ffffff"/>
|
||||
<rect x="40.0" y="128.0" width="284.0" height="310.0" fill="#ffffff" stroke="#777777" stroke-width="1.2"/>
|
||||
<rect x="44.9" y="361.1" width="16.0" height="68.9" fill="#9aa3ad" fill-opacity="0.55" stroke="#7a828a" stroke-width="1"/>
|
||||
<rect x="70.7" y="350.2" width="16.0" height="79.8" fill="#9aa3ad" fill-opacity="0.55" stroke="#7a828a" stroke-width="1"/>
|
||||
<rect x="96.5" y="356.1" width="16.0" height="73.9" fill="#9aa3ad" fill-opacity="0.55" stroke="#7a828a" stroke-width="1"/>
|
||||
<rect x="122.4" y="353.6" width="16.0" height="76.4" fill="#9aa3ad" fill-opacity="0.55" stroke="#7a828a" stroke-width="1"/>
|
||||
<rect x="148.2" y="348.5" width="16.0" height="81.5" fill="#9aa3ad" fill-opacity="0.55" stroke="#7a828a" stroke-width="1"/>
|
||||
<rect x="174.0" y="312.4" width="16.0" height="117.6" fill="#9aa3ad" fill-opacity="0.55" stroke="#7a828a" stroke-width="1"/>
|
||||
<rect x="199.8" y="343.5" width="16.0" height="86.5" fill="#9aa3ad" fill-opacity="0.55" stroke="#7a828a" stroke-width="1"/>
|
||||
<rect x="225.6" y="337.6" width="16.0" height="92.4" fill="#9aa3ad" fill-opacity="0.55" stroke="#7a828a" stroke-width="1"/>
|
||||
<rect x="251.5" y="329.2" width="16.0" height="100.8" fill="#9aa3ad" fill-opacity="0.55" stroke="#7a828a" stroke-width="1"/>
|
||||
<rect x="277.3" y="367.8" width="16.0" height="62.2" fill="#9aa3ad" fill-opacity="0.55" stroke="#7a828a" stroke-width="1"/>
|
||||
<rect x="303.1" y="262.0" width="16.0" height="168.0" fill="#188a3e" fill-opacity="1.0" stroke="#188a3e" stroke-width="1"/>
|
||||
<line x1="40.0" y1="430.0" x2="324.0" y2="430.0" stroke="#000000" stroke-width="1.2"/>
|
||||
<line x1="40.0" y1="346.0" x2="324.0" y2="346.0" stroke="#b06000" stroke-width="2.0" stroke-dasharray="5 3"/>
|
||||
<line x1="311.1" y1="182.0" x2="311.1" y2="251.0" stroke="#188a3e" stroke-width="1.8"/>
|
||||
<polygon points="311.1,258.0 306.1,250.0 316.1,250.0" fill="#188a3e"/>
|
||||
<rect x="376.0" y="128.0" width="284.0" height="310.0" fill="#ffffff" stroke="#777777" stroke-width="1.2"/>
|
||||
<rect x="380.9" y="361.1" width="16.0" height="68.9" fill="#9aa3ad" fill-opacity="0.55" stroke="#7a828a" stroke-width="1"/>
|
||||
<rect x="406.7" y="350.2" width="16.0" height="79.8" fill="#9aa3ad" fill-opacity="0.55" stroke="#7a828a" stroke-width="1"/>
|
||||
<rect x="432.5" y="356.1" width="16.0" height="73.9" fill="#9aa3ad" fill-opacity="0.55" stroke="#7a828a" stroke-width="1"/>
|
||||
<rect x="458.4" y="353.6" width="16.0" height="76.4" fill="#9aa3ad" fill-opacity="0.55" stroke="#7a828a" stroke-width="1"/>
|
||||
<rect x="484.2" y="348.5" width="16.0" height="81.5" fill="#9aa3ad" fill-opacity="0.55" stroke="#7a828a" stroke-width="1"/>
|
||||
<rect x="510.0" y="312.4" width="16.0" height="117.6" fill="#9aa3ad" fill-opacity="0.55" stroke="#7a828a" stroke-width="1"/>
|
||||
<rect x="535.8" y="343.5" width="16.0" height="86.5" fill="#9aa3ad" fill-opacity="0.55" stroke="#7a828a" stroke-width="1"/>
|
||||
<rect x="561.6" y="337.6" width="16.0" height="92.4" fill="#9aa3ad" fill-opacity="0.55" stroke="#7a828a" stroke-width="1"/>
|
||||
<rect x="587.5" y="329.2" width="16.0" height="100.8" fill="#9aa3ad" fill-opacity="0.55" stroke="#7a828a" stroke-width="1"/>
|
||||
<rect x="613.3" y="367.8" width="16.0" height="62.2" fill="#9aa3ad" fill-opacity="0.55" stroke="#7a828a" stroke-width="1"/>
|
||||
<rect x="639.1" y="378.8" width="16.0" height="51.2" fill="#c00" fill-opacity="1.0" stroke="#c00" stroke-width="1"/>
|
||||
<line x1="376.0" y1="430.0" x2="660.0" y2="430.0" stroke="#000000" stroke-width="1.2"/>
|
||||
<line x1="376.0" y1="346.0" x2="660.0" y2="346.0" stroke="#b06000" stroke-width="2.0" stroke-dasharray="5 3"/>
|
||||
<line x1="647.1" y1="182.0" x2="647.1" y2="367.8" stroke="#c00" stroke-width="1.8"/>
|
||||
<polygon points="647.1,374.8 642.1,366.8 652.1,366.8" fill="#c00"/>
|
||||
<rect x="40.0" y="526.0" width="620.0" height="112.0" fill="#f7f7f7" stroke="#777777" stroke-width="1.2"/>
|
||||
<rect x="40.0" y="654.0" width="620.0" height="90.0" fill="#fdf0e0" stroke="#b06000" stroke-width="1.4"/>
|
||||
<text x="350.0" y="34.0" font-size="17" font-weight="bold" fill="#000000" text-anchor="middle">Relative volume (RVOL): volumul zilei față de media pe 10 bare</text>
|
||||
<text x="350.0" y="58.0" font-size="14" font-weight="bold" fill="#777777" text-anchor="middle">RVOL = volumul de azi ÷ media ultimelor 10 bare de volum</text>
|
||||
<text x="350.0" y="80.0" font-size="13" font-weight="normal" fill="#777777" text-anchor="middle">Măsoară dacă azi chiar participă lumea, nu doar tu. Singurul prag din curs: peste 100 %.</text>
|
||||
<text x="182.0" y="110.0" font-size="15" font-weight="bold" fill="#188a3e" text-anchor="middle">Cazul HIG — peste prag</text>
|
||||
<text x="518.0" y="110.0" font-size="15" font-weight="bold" fill="#c00" text-anchor="middle">Cazul ULTA — sub prag</text>
|
||||
<text x="46.0" y="340.0" font-size="13" font-weight="bold" fill="#b06000" text-anchor="start">media = 100 %</text>
|
||||
<text x="182.0" y="152.0" font-size="15" font-weight="bold" fill="#188a3e" text-anchor="middle">azi = 2 × media → RVOL 200 %</text>
|
||||
<text x="182.0" y="172.0" font-size="13" font-weight="normal" fill="#000000" text-anchor="middle">cel mai mare din cele 16 rezultate</text>
|
||||
<text x="161.3" y="450.0" font-size="13" font-weight="normal" fill="#777777" text-anchor="middle">ultimele 10 bare de volum</text>
|
||||
<text x="311.1" y="450.0" font-size="13" font-weight="bold" fill="#188a3e" text-anchor="middle">azi</text>
|
||||
<text x="182.0" y="478.0" font-size="13" font-weight="bold" fill="#188a3e" text-anchor="middle">peste 100 % = confirmare</text>
|
||||
<text x="182.0" y="498.0" font-size="13" font-weight="normal" fill="#000000" text-anchor="middle">se tranzacționează dublu față de normal</text>
|
||||
<text x="382.0" y="340.0" font-size="13" font-weight="bold" fill="#b06000" text-anchor="start">media = 100 %</text>
|
||||
<text x="518.0" y="152.0" font-size="15" font-weight="bold" fill="#c00" text-anchor="middle">azi = 0,61 × media → RVOL 0.61</text>
|
||||
<text x="518.0" y="172.0" font-size="13" font-weight="normal" fill="#000000" text-anchor="middle">sub jumătate față de o zi normală</text>
|
||||
<text x="497.3" y="450.0" font-size="13" font-weight="normal" fill="#777777" text-anchor="middle">ultimele 10 bare de volum</text>
|
||||
<text x="647.1" y="450.0" font-size="13" font-weight="bold" fill="#c00" text-anchor="middle">azi</text>
|
||||
<text x="518.0" y="478.0" font-size="13" font-weight="bold" fill="#c00" text-anchor="middle">sub 100 % = minus, NU veto</text>
|
||||
<text x="518.0" y="498.0" font-size="13" font-weight="normal" fill="#000000" text-anchor="middle">îl notezi, dar analiza continuă</text>
|
||||
<text x="60.0" y="552.0" font-size="15" font-weight="bold" fill="#000000" text-anchor="start">Sub 100 % e un minus, nu un veto</text>
|
||||
<text x="60.0" y="576.0" font-size="13" font-weight="normal" fill="#000000" text-anchor="start">Pe scanerul real de Buy Doji, cele trei rezultate aveau RVOL 0.86, 1.03 și 0.61.</text>
|
||||
<text x="60.0" y="596.0" font-size="13" font-weight="normal" fill="#000000" text-anchor="start">Un prag dur de genul „RVOL ≥ 1.2” ar fi dat zero rezultate în ziua aia.</text>
|
||||
<text x="60.0" y="620.0" font-size="13" font-weight="bold" fill="#000000" text-anchor="start">De aceea RVOL e o coloană pe care o citești, nu un filtru care taie automat.</text>
|
||||
<text x="60.0" y="680.0" font-size="13" font-weight="bold" fill="#000000" text-anchor="start">Media e pe 10 bare, nu pe 50 (implicit în platforme).</text>
|
||||
<text x="60.0" y="702.0" font-size="13" font-weight="normal" fill="#777777" text-anchor="start">Cifra cursului e mai sensibilă la ziua curentă. Dacă vezi altă valoare în</text>
|
||||
<text x="60.0" y="722.0" font-size="13" font-weight="normal" fill="#777777" text-anchor="start">altă platformă, nu e greșeală de calcul, e altă lungime de medie.</text>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 7.9 KiB |
314
gen/strategii/selectia_trinity.py
Normal file
314
gen/strategii/selectia_trinity.py
Normal file
@@ -0,0 +1,314 @@
|
||||
#!/usr/bin/env python3
|
||||
"""Cele 3 stele (Trinity) — RS, Power și volum, toate în cadranul 1.
|
||||
|
||||
Diagramă conceptuală (NU grafic de preț): pentru
|
||||
`summaries/17_STRATEGII/04_selectia.md`, Nivel 3, „Cele 3 stele (Trinity)".
|
||||
Citește specificația `gen/strategii/selectia_trinity.spec.txt` și scrie
|
||||
`gen/strategii/selectia_trinity.svg`.
|
||||
|
||||
Nu folosește `svg_candles` / `pchart`: SVG-ul e construit ca string, doar
|
||||
stdlib. Fără `<g transform>` — toate coordonatele sunt absolute.
|
||||
|
||||
Ce arată:
|
||||
- stânga: un simbol cu RS, Power și volum toate în cadranul 1 -> 3 stele;
|
||||
- dreapta: un simbol cu doar două din trei în cadranul 1 -> nu e trinity;
|
||||
- fiecare indicator e o mini-histogramă cu linia de 0 și media mobilă
|
||||
peste ea; cadranul 1 = ultima bară peste 0 ȘI peste MA (definiția de la
|
||||
pasul 5 al capitolului);
|
||||
- nota că Power e proprietar, fără formulă publicată;
|
||||
- nota că „trinity" are în material și alte sensuri — aici e numai ăsta.
|
||||
|
||||
Desenul e pur calitativ: nicio valoare de RS / Power / volum pe etichete.
|
||||
|
||||
Rulare: .venv/bin/python gen/strategii/selectia_trinity.py
|
||||
"""
|
||||
import html
|
||||
import re
|
||||
import xml.etree.ElementTree as ET
|
||||
from pathlib import Path
|
||||
|
||||
W, H = 700, 868
|
||||
|
||||
BLACK = "#000000"
|
||||
GRAY = "#777777"
|
||||
RED = "#c00"
|
||||
GREEN = "#188a3e"
|
||||
ORANGE = "#b06000"
|
||||
|
||||
GREEN_BG = "#eef7f0"
|
||||
RED_BG = "#fdeeee"
|
||||
NOTE_BG = "#fdf0e0"
|
||||
GRAY_BG = "#f7f7f7"
|
||||
|
||||
# ------------------------------------------------------- serii (calitative)
|
||||
# Cadranul 1 = ultima bară peste 0 ȘI peste media ei mobilă.
|
||||
IN_Q1 = [-2, -1, 0, 1, 2, 2, 3, 4, 5, 6] # urcă: ultima e peste 0 și peste MA
|
||||
IN_Q3 = [6, 6, 5, 5, 4, 4, 3, 3, 2, 2] # coboară: peste 0, dar SUB MA
|
||||
|
||||
|
||||
def ma4(vals):
|
||||
"""Media mobilă pe 4, ca la indicatorii cursului (histogramă + MA peste ea)."""
|
||||
return [sum(vals[max(0, i - 3):i + 1]) / len(vals[max(0, i - 3):i + 1])
|
||||
for i in range(len(vals))]
|
||||
|
||||
|
||||
def in_cadranul_1(vals):
|
||||
"""Ultima bară: peste 0 ȘI peste media ei mobilă."""
|
||||
return vals[-1] > 0 and vals[-1] > ma4(vals)[-1]
|
||||
|
||||
|
||||
# ------------------------------------------------------- geometrie
|
||||
COL_W = 300.0
|
||||
COL_AX, COL_BX = 32.0, 368.0
|
||||
COL_Y0 = 110.0
|
||||
ROW_H = 118.0 # un indicator pe rând
|
||||
ROW_Y0 = COL_Y0 + 60.0 # primul rând, sub titlul coloanei
|
||||
COL_H = 60.0 + 3 * ROW_H + 62.0
|
||||
|
||||
TEXTS = [] # (x, y, s, size, weight, fill, anchor)
|
||||
RECTS = [] # (x, y, w, h, tag)
|
||||
STARS = {} # tag coloană -> câte stele s-au desenat
|
||||
|
||||
|
||||
def add(x, y, s, size=13, weight="normal", fill=BLACK, anchor="middle"):
|
||||
TEXTS.append((float(x), float(y), s, size, weight, fill, anchor))
|
||||
return s
|
||||
|
||||
|
||||
def est_w(s, size, weight):
|
||||
factor = 0.62 if weight == "bold" else 0.56
|
||||
return len(s) * size * factor
|
||||
|
||||
|
||||
def txt(x, y, s, size=13, weight="normal", fill=BLACK, anchor="middle"):
|
||||
return (f'<text x="{x:.1f}" y="{y:.1f}" font-size="{size}" '
|
||||
f'font-weight="{weight}" fill="{fill}" text-anchor="{anchor}">'
|
||||
f'{html.escape(s, quote=False)}</text>')
|
||||
|
||||
|
||||
def rect(x, y, w, h, tag, fill="#ffffff", stroke=GRAY, sw=1.5, dash=None):
|
||||
RECTS.append((float(x), float(y), float(w), float(h), tag))
|
||||
d = f' stroke-dasharray="{dash}"' if dash else ""
|
||||
return (f'<rect x="{x:.1f}" y="{y:.1f}" width="{w:.1f}" height="{h:.1f}" '
|
||||
f'fill="{fill}" stroke="{stroke}" stroke-width="{sw}"{d}/>')
|
||||
|
||||
|
||||
def line(x1, y1, x2, y2, stroke=GRAY, width=1.0, dash=None):
|
||||
d = f' stroke-dasharray="{dash}"' if dash else ""
|
||||
return (f'<line x1="{x1:.1f}" y1="{y1:.1f}" x2="{x2:.1f}" y2="{y2:.1f}" '
|
||||
f'stroke="{stroke}" stroke-width="{width}"{d}/>')
|
||||
|
||||
|
||||
def stea(cx, cy, r, fill, stroke):
|
||||
"""Steluță cu 5 colțuri, desenată ca poligon (fără font de emoji)."""
|
||||
import math
|
||||
pts = []
|
||||
for k in range(10):
|
||||
ang = -math.pi / 2 + k * math.pi / 5
|
||||
rad = r if k % 2 == 0 else r * 0.42
|
||||
pts.append(f"{cx + rad * math.cos(ang):.1f},{cy + rad * math.sin(ang):.1f}")
|
||||
return (f'<polygon points="{" ".join(pts)}" fill="{fill}" stroke="{stroke}" '
|
||||
f'stroke-width="1.2"/>')
|
||||
|
||||
|
||||
def histograma(x0, y0, w, h, vals, culoare):
|
||||
"""Mini-histogramă: barele, linia de 0 și media mobilă punctată peste ea."""
|
||||
yz = y0 + h / 2.0
|
||||
unit = (h / 2.0 - 4) / max(abs(v) for v in vals)
|
||||
bw = w / (len(vals) * 1.6)
|
||||
xs = [x0 + w * (i + 0.5) / len(vals) for i in range(len(vals))]
|
||||
out = [f'<rect x="{x0:.1f}" y="{y0:.1f}" width="{w:.1f}" height="{h:.1f}" '
|
||||
f'fill="#ffffff" stroke="{GRAY}" stroke-width="0.8"/>',
|
||||
line(x0, yz, x0 + w, yz, BLACK, 1.0)]
|
||||
for i, v in enumerate(vals):
|
||||
top = yz - v * unit if v > 0 else yz
|
||||
out.append(f'<rect x="{xs[i] - bw / 2:.1f}" y="{top:.1f}" width="{bw:.1f}" '
|
||||
f'height="{abs(v) * unit:.1f}" fill="{culoare}" '
|
||||
f'fill-opacity="{1.0 if i == len(vals) - 1 else 0.35}"/>')
|
||||
pts = " ".join(f"{xs[i]:.1f},{yz - m * unit:.1f}" for i, m in enumerate(ma4(vals)))
|
||||
out.append(f'<polyline points="{pts}" fill="none" stroke="{ORANGE}" '
|
||||
f'stroke-width="1.6" stroke-dasharray="3 2"/>')
|
||||
return out, xs[-1], (yz - vals[-1] * unit if vals[-1] > 0 else yz)
|
||||
|
||||
|
||||
def coloana(tag, cx0, titlu, subtitlu, serii, culoare_cadru, fundal):
|
||||
"""O coloană: trei indicatori, fiecare cu histograma lui și verdictul lui."""
|
||||
out = [rect(cx0, COL_Y0, COL_W, COL_H, f"col_{tag}",
|
||||
fill=fundal, stroke=culoare_cadru, sw=1.8)]
|
||||
add(cx0 + COL_W / 2, COL_Y0 + 26, titlu, 16, "bold", culoare_cadru)
|
||||
add(cx0 + COL_W / 2, COL_Y0 + 46, subtitlu, 13, "normal", BLACK)
|
||||
|
||||
stele = 0
|
||||
for i, (nume, vals) in enumerate(serii):
|
||||
y = ROW_Y0 + i * ROW_H
|
||||
q1 = in_cadranul_1(vals)
|
||||
col = GREEN if q1 else RED
|
||||
add(cx0 + 16, y + 16, nume, 14, "bold", BLACK, "start")
|
||||
hist, _x_ult, _y_ult = histograma(cx0 + 16, y + 26, COL_W - 90, 56, vals, col)
|
||||
out += hist
|
||||
if q1:
|
||||
stele += 1
|
||||
out.append(stea(cx0 + COL_W - 34, y + 54, 15, "#e0a800", "#8a6d00"))
|
||||
add(cx0 + 16, y + 100, "cadranul 1: peste 0 și peste MA",
|
||||
13, "normal", GREEN, "start")
|
||||
else:
|
||||
out.append(line(cx0 + COL_W - 46, y + 42, cx0 + COL_W - 22, y + 66, RED, 2.4))
|
||||
out.append(line(cx0 + COL_W - 22, y + 42, cx0 + COL_W - 46, y + 66, RED, 2.4))
|
||||
add(cx0 + 16, y + 100, "cadranul 3: peste 0, dar sub MA",
|
||||
13, "normal", RED, "start")
|
||||
STARS[tag] = stele
|
||||
return out
|
||||
|
||||
|
||||
# =============================================================== CONȚINUT
|
||||
p = []
|
||||
|
||||
add(W / 2, 32, "Cele 3 stele (Trinity): RS, Power și volum, toate în cadranul 1",
|
||||
17, "bold")
|
||||
add(W / 2, 56,
|
||||
"Sortare finală, când după cei șase pași ți-au rămas prea multe simboluri.",
|
||||
13, "normal", GRAY)
|
||||
add(W / 2, 78,
|
||||
"Cadranul 1 = ultima bară a indicatorului e peste 0 ȘI peste media lui mobilă (linia punctată).",
|
||||
13, "normal", GRAY)
|
||||
|
||||
SERII_A = [("Relative strength", IN_Q1), ("Power", IN_Q1), ("Volum", IN_Q1)]
|
||||
SERII_B = [("Relative strength", IN_Q1), ("Power", IN_Q3), ("Volum", IN_Q1)]
|
||||
|
||||
p += coloana("a", COL_AX, "Simbol A — 3 stele",
|
||||
"toate trei arată în aceeași direcție", SERII_A, GREEN, GREEN_BG)
|
||||
p += coloana("b", COL_BX, "Simbol B — 2 din 3",
|
||||
"Power rămâne în urmă: nu e trinity", SERII_B, RED, RED_BG)
|
||||
|
||||
# verdictul fiecărei coloane, sub cele trei rânduri
|
||||
VY = ROW_Y0 + 3 * ROW_H + 24
|
||||
add(COL_AX + COL_W / 2, VY, "3 stele → îl iei primul la analiză", 14, "bold", GREEN)
|
||||
add(COL_BX + COL_W / 2, VY, "2 stele → nu e „3 stele”", 14, "bold", RED)
|
||||
|
||||
# ---- ce înseamnă aici, și ce NU înseamnă
|
||||
BAND_Y = COL_Y0 + COL_H + 22
|
||||
p.append(rect(32, BAND_Y, 636, 98, "band_sens", fill=GRAY_BG, stroke=GRAY, sw=1.2))
|
||||
add(50, BAND_Y + 26,
|
||||
"În capitolul ăsta „3 stele” / „trinity” înseamnă exact un lucru:",
|
||||
14, "bold", BLACK, "start")
|
||||
add(50, BAND_Y + 48,
|
||||
"relative strength, Power și volumul, toate trei în cadranul 1 pe același simbol.",
|
||||
13, "normal", BLACK, "start")
|
||||
add(50, BAND_Y + 74,
|
||||
"Cuvântul apare în material și cu alte sensuri (la MDSRT: trei indicatori în divergență",
|
||||
13, "normal", GRAY, "start")
|
||||
add(50, BAND_Y + 92,
|
||||
"simultană). Acelea sunt altceva și nu se aplică aici.",
|
||||
13, "normal", GRAY, "start")
|
||||
|
||||
# ---- nota Power
|
||||
NOTE_Y = BAND_Y + 114
|
||||
p.append(rect(32, NOTE_Y, 636, 92, "note_power", fill=NOTE_BG, stroke=ORANGE, sw=1.4))
|
||||
add(50, NOTE_Y + 26,
|
||||
"Power e proprietar: măsoară tăria trendului, dar formula nu e publicată.",
|
||||
13, "bold", BLACK, "start")
|
||||
add(50, NOTE_Y + 48,
|
||||
"Citești cadranul din indicator, nu îl poți reconstrui singur.",
|
||||
13, "normal", BLACK, "start")
|
||||
add(50, NOTE_Y + 72,
|
||||
"De aceea sortarea după 3 stele e o rafinare, nu un pas obligatoriu.",
|
||||
13, "normal", GRAY, "start")
|
||||
|
||||
# =============================================================== EMITERE
|
||||
head = (f'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 {W} {H}" '
|
||||
f'width="{W}" height="{H}" font-family="system-ui, sans-serif" role="img" '
|
||||
f'aria-label="Cele 3 stele: relative strength, Power si volum, toate in '
|
||||
f'cadranul 1 pe acelasi simbol; in dreapta un simbol cu doar doua din '
|
||||
f'trei, care nu e trinity">')
|
||||
body = [head, f'<rect x="0" y="0" width="{W}" height="{H}" fill="#ffffff"/>']
|
||||
body += p
|
||||
for x, y, s, size, weight, fill, anchor in TEXTS:
|
||||
body.append(txt(x, y, s, size, weight, fill, anchor))
|
||||
body.append("</svg>")
|
||||
svg = "\n".join(body) + "\n"
|
||||
|
||||
# =============================================================== VERIFICARE
|
||||
# 1. seriile desenate chiar satisfac definiția cadranului 1 (nu e tautologic:
|
||||
# verifică ultima bară față de 0 și față de media mobilă calculată din serie)
|
||||
assert in_cadranul_1(IN_Q1), "seria „cadranul 1” nu e în cadranul 1"
|
||||
assert IN_Q3[-1] > 0 and IN_Q3[-1] < ma4(IN_Q3)[-1], \
|
||||
"seria „cadranul 3” trebuie să fie peste 0, dar sub MA"
|
||||
|
||||
# 2. numărul de stele desenate = numărul de indicatori în cadranul 1
|
||||
assert STARS["a"] == sum(in_cadranul_1(v) for _, v in SERII_A) == 3, \
|
||||
f"coloana A: {STARS['a']} stele, dar seriile dau altceva"
|
||||
assert STARS["b"] == sum(in_cadranul_1(v) for _, v in SERII_B) == 2, \
|
||||
f"coloana B: {STARS['b']} stele, dar seriile dau altceva"
|
||||
assert svg.count("<polygon") == STARS["a"] + STARS["b"], \
|
||||
"numărul de steluțe desenate nu e cel calculat din serii"
|
||||
|
||||
# 3. cei trei indicatori sunt exact cei din definiția capitolului
|
||||
assert [n for n, _ in SERII_A] == ["Relative strength", "Power", "Volum"]
|
||||
assert [n for n, _ in SERII_A] == [n for n, _ in SERII_B], \
|
||||
"cele două coloane compară alți indicatori"
|
||||
|
||||
# 4. textele obligatorii
|
||||
for req in ("Cele 3 stele (Trinity): RS, Power și volum, toate în cadranul 1",
|
||||
"Cadranul 1 = ultima bară a indicatorului e peste 0 ȘI peste media lui mobilă",
|
||||
"Simbol A — 3 stele", "Simbol B — 2 din 3",
|
||||
"cadranul 1: peste 0 și peste MA",
|
||||
"cadranul 3: peste 0, dar sub MA",
|
||||
"3 stele → îl iei primul la analiză",
|
||||
"relative strength, Power și volumul, toate trei în cadranul 1 pe același simbol",
|
||||
"Cuvântul apare în material și cu alte sensuri",
|
||||
"formula nu e publicată",
|
||||
"o rafinare, nu un pas obligatoriu"):
|
||||
assert req in svg, f"lipsește din desen: {req!r}"
|
||||
# „cadranul 1” marcat de 3 ori în stânga + 2 în dreapta = 5
|
||||
assert svg.count("cadranul 1: peste 0 și peste MA") == 5
|
||||
assert svg.count("cadranul 3: peste 0, dar sub MA") == 1
|
||||
|
||||
# 5. desen pur calitativ: nicio valoare de RS / Power / volum
|
||||
PERMISE = {"0", "1", "2", "3"} # doar praguri și numărători de stele
|
||||
for _x, _y, s, *_ in TEXTS:
|
||||
for n in re.findall(r"\d+(?:[.,]\d+)?", s):
|
||||
assert n in PERMISE, f"cifră inventată de indicator: {n!r} în {s!r}"
|
||||
assert "%" not in s, f"procent inventat: {s!r}"
|
||||
|
||||
# 6. coloanele nu se suprapun și încap în pânză
|
||||
cols = [r for r in RECTS if r[4].startswith("col_")]
|
||||
assert len(cols) == 2
|
||||
(ax, ay, aw, ah, _), (bx, by, bw, bh, _) = cols
|
||||
assert ax + aw < bx, "coloanele se suprapun"
|
||||
assert bx + bw <= W - 20, "coloana din dreapta iese din pânză"
|
||||
assert ay + ah <= H and by + bh <= H
|
||||
|
||||
# 7. fiecare etichetă: mărime >= 13, în pânză, fără suprapuneri
|
||||
boxes = []
|
||||
for x, y, s, size, weight, fill, anchor in TEXTS:
|
||||
assert size >= 13, f"font sub 13px: {s!r} ({size})"
|
||||
w = est_w(s, size, weight)
|
||||
if anchor == "end":
|
||||
left = x - w
|
||||
elif anchor == "start":
|
||||
left = x
|
||||
else:
|
||||
left = x - w / 2.0
|
||||
right = left + w
|
||||
top, bottom = y - size * 0.78, y + size * 0.22
|
||||
assert -2 <= left and right <= W + 2, f"text în afara pânzei orizontal: {s!r}"
|
||||
assert 0 <= top and bottom <= H, f"text în afara pânzei vertical: {s!r}"
|
||||
boxes.append((left, right, top, bottom, s))
|
||||
for i in range(len(boxes)):
|
||||
for j in range(i + 1, len(boxes)):
|
||||
l1, r1, t1, b1, s1 = boxes[i]
|
||||
l2, r2, t2_, b2, s2 = boxes[j]
|
||||
if r1 > l2 + 2 and r2 > l1 + 2 and b1 > t2_ + 2 and b2 > t1 + 2:
|
||||
raise AssertionError(f"etichete suprapuse: {s1!r} / {s2!r}")
|
||||
|
||||
# 8. stil + XML valid, fără transformări
|
||||
assert "filter=" not in svg and "gradient" not in svg, "fără umbre/gradienți"
|
||||
assert "transform=" not in svg, "fără <g transform>: coordonate absolute"
|
||||
assert 'font-family="system-ui, sans-serif"' in svg, "lipsește fontul cerut"
|
||||
assert svg.lstrip().startswith("<svg "), "rădăcina nu e <svg>"
|
||||
assert ET.fromstring(svg).tag.endswith("svg")
|
||||
|
||||
OUT = Path(__file__).with_suffix(".svg")
|
||||
OUT.write_text(svg, encoding="utf-8")
|
||||
print(f"scris {OUT} ({len(svg)} bytes, {len(TEXTS)} etichete, "
|
||||
f"stele: A={STARS['a']}, B={STARS['b']}, {W}x{H}), verificare OK")
|
||||
24
gen/strategii/selectia_trinity.spec.txt
Normal file
24
gen/strategii/selectia_trinity.spec.txt
Normal file
@@ -0,0 +1,24 @@
|
||||
TIP: CONCEPT (trei mini-histograme cu linia de 0 si media mobila, nu candele)
|
||||
|
||||
UNDE APARE: strategii/04_selectia.md, Nivel 3, „Cele 3 stele (Trinity)".
|
||||
|
||||
CE ARATA: sensul pe care „trinity / 3 stele" il are IN CAPITOLUL ASTA si numai el:
|
||||
relative strength, Power si volumul, toate trei in cadranul 1 pe acelasi simbol.
|
||||
|
||||
COMPOZITIE:
|
||||
- coloana stanga: un simbol cu toate trei in cadranul 1 -> 3 stele;
|
||||
- coloana dreapta: un simbol cu doar doua din trei in cadranul 1 -> nu e trinity;
|
||||
- fiecare indicator e o mini-histograma cu linia de 0 si media mobila peste ea;
|
||||
cadranul 1 = ultima bara peste 0 SI peste MA (definitie din pasul 5).
|
||||
|
||||
NOTE OBLIGATORII:
|
||||
- Power e proprietar, fara formula publicata in material: citesti cadranul,
|
||||
nu il poti reconstrui. De aceea sortarea e rafinare, nu pas obligatoriu.
|
||||
- „trinity" are in material si alte sensuri (la MDSRT = trei indicatori in
|
||||
divergenta; intr-o sesiune de intrebari = 3 indicatori + bull reversal +
|
||||
suport = 5 stele). Diagrama asta ilustreaza DOAR sensul din capitolul de
|
||||
selectie.
|
||||
|
||||
FARA CIFRE: desenul e pur calitativ, nu contine valori de RS / Power / volum.
|
||||
|
||||
TITLU: "Cele 3 stele (Trinity): RS, Power și volum, toate în cadranul 1"
|
||||
120
gen/strategii/selectia_trinity.svg
Normal file
120
gen/strategii/selectia_trinity.svg
Normal file
@@ -0,0 +1,120 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 700 868" width="700" height="868" font-family="system-ui, sans-serif" role="img" aria-label="Cele 3 stele: relative strength, Power si volum, toate in cadranul 1 pe acelasi simbol; in dreapta un simbol cu doar doua din trei, care nu e trinity">
|
||||
<rect x="0" y="0" width="700" height="868" fill="#ffffff"/>
|
||||
<rect x="32.0" y="110.0" width="300.0" height="476.0" fill="#eef7f0" stroke="#188a3e" stroke-width="1.8"/>
|
||||
<rect x="48.0" y="196.0" width="210.0" height="56.0" fill="#ffffff" stroke="#777777" stroke-width="0.8"/>
|
||||
<line x1="48.0" y1="224.0" x2="258.0" y2="224.0" stroke="#000000" stroke-width="1.0"/>
|
||||
<rect x="51.9" y="224.0" width="13.1" height="8.0" fill="#188a3e" fill-opacity="0.35"/>
|
||||
<rect x="72.9" y="224.0" width="13.1" height="4.0" fill="#188a3e" fill-opacity="0.35"/>
|
||||
<rect x="93.9" y="224.0" width="13.1" height="0.0" fill="#188a3e" fill-opacity="0.35"/>
|
||||
<rect x="114.9" y="220.0" width="13.1" height="4.0" fill="#188a3e" fill-opacity="0.35"/>
|
||||
<rect x="135.9" y="216.0" width="13.1" height="8.0" fill="#188a3e" fill-opacity="0.35"/>
|
||||
<rect x="156.9" y="216.0" width="13.1" height="8.0" fill="#188a3e" fill-opacity="0.35"/>
|
||||
<rect x="177.9" y="212.0" width="13.1" height="12.0" fill="#188a3e" fill-opacity="0.35"/>
|
||||
<rect x="198.9" y="208.0" width="13.1" height="16.0" fill="#188a3e" fill-opacity="0.35"/>
|
||||
<rect x="219.9" y="204.0" width="13.1" height="20.0" fill="#188a3e" fill-opacity="0.35"/>
|
||||
<rect x="240.9" y="200.0" width="13.1" height="24.0" fill="#188a3e" fill-opacity="1.0"/>
|
||||
<polyline points="58.5,232.0 79.5,230.0 100.5,228.0 121.5,226.0 142.5,222.0 163.5,219.0 184.5,216.0 205.5,213.0 226.5,210.0 247.5,206.0" fill="none" stroke="#b06000" stroke-width="1.6" stroke-dasharray="3 2"/>
|
||||
<polygon points="298.0,209.0 301.7,218.9 312.3,219.4 304.0,225.9 306.8,236.1 298.0,230.3 289.2,236.1 292.0,225.9 283.7,219.4 294.3,218.9" fill="#e0a800" stroke="#8a6d00" stroke-width="1.2"/>
|
||||
<rect x="48.0" y="314.0" width="210.0" height="56.0" fill="#ffffff" stroke="#777777" stroke-width="0.8"/>
|
||||
<line x1="48.0" y1="342.0" x2="258.0" y2="342.0" stroke="#000000" stroke-width="1.0"/>
|
||||
<rect x="51.9" y="342.0" width="13.1" height="8.0" fill="#188a3e" fill-opacity="0.35"/>
|
||||
<rect x="72.9" y="342.0" width="13.1" height="4.0" fill="#188a3e" fill-opacity="0.35"/>
|
||||
<rect x="93.9" y="342.0" width="13.1" height="0.0" fill="#188a3e" fill-opacity="0.35"/>
|
||||
<rect x="114.9" y="338.0" width="13.1" height="4.0" fill="#188a3e" fill-opacity="0.35"/>
|
||||
<rect x="135.9" y="334.0" width="13.1" height="8.0" fill="#188a3e" fill-opacity="0.35"/>
|
||||
<rect x="156.9" y="334.0" width="13.1" height="8.0" fill="#188a3e" fill-opacity="0.35"/>
|
||||
<rect x="177.9" y="330.0" width="13.1" height="12.0" fill="#188a3e" fill-opacity="0.35"/>
|
||||
<rect x="198.9" y="326.0" width="13.1" height="16.0" fill="#188a3e" fill-opacity="0.35"/>
|
||||
<rect x="219.9" y="322.0" width="13.1" height="20.0" fill="#188a3e" fill-opacity="0.35"/>
|
||||
<rect x="240.9" y="318.0" width="13.1" height="24.0" fill="#188a3e" fill-opacity="1.0"/>
|
||||
<polyline points="58.5,350.0 79.5,348.0 100.5,346.0 121.5,344.0 142.5,340.0 163.5,337.0 184.5,334.0 205.5,331.0 226.5,328.0 247.5,324.0" fill="none" stroke="#b06000" stroke-width="1.6" stroke-dasharray="3 2"/>
|
||||
<polygon points="298.0,327.0 301.7,336.9 312.3,337.4 304.0,343.9 306.8,354.1 298.0,348.3 289.2,354.1 292.0,343.9 283.7,337.4 294.3,336.9" fill="#e0a800" stroke="#8a6d00" stroke-width="1.2"/>
|
||||
<rect x="48.0" y="432.0" width="210.0" height="56.0" fill="#ffffff" stroke="#777777" stroke-width="0.8"/>
|
||||
<line x1="48.0" y1="460.0" x2="258.0" y2="460.0" stroke="#000000" stroke-width="1.0"/>
|
||||
<rect x="51.9" y="460.0" width="13.1" height="8.0" fill="#188a3e" fill-opacity="0.35"/>
|
||||
<rect x="72.9" y="460.0" width="13.1" height="4.0" fill="#188a3e" fill-opacity="0.35"/>
|
||||
<rect x="93.9" y="460.0" width="13.1" height="0.0" fill="#188a3e" fill-opacity="0.35"/>
|
||||
<rect x="114.9" y="456.0" width="13.1" height="4.0" fill="#188a3e" fill-opacity="0.35"/>
|
||||
<rect x="135.9" y="452.0" width="13.1" height="8.0" fill="#188a3e" fill-opacity="0.35"/>
|
||||
<rect x="156.9" y="452.0" width="13.1" height="8.0" fill="#188a3e" fill-opacity="0.35"/>
|
||||
<rect x="177.9" y="448.0" width="13.1" height="12.0" fill="#188a3e" fill-opacity="0.35"/>
|
||||
<rect x="198.9" y="444.0" width="13.1" height="16.0" fill="#188a3e" fill-opacity="0.35"/>
|
||||
<rect x="219.9" y="440.0" width="13.1" height="20.0" fill="#188a3e" fill-opacity="0.35"/>
|
||||
<rect x="240.9" y="436.0" width="13.1" height="24.0" fill="#188a3e" fill-opacity="1.0"/>
|
||||
<polyline points="58.5,468.0 79.5,466.0 100.5,464.0 121.5,462.0 142.5,458.0 163.5,455.0 184.5,452.0 205.5,449.0 226.5,446.0 247.5,442.0" fill="none" stroke="#b06000" stroke-width="1.6" stroke-dasharray="3 2"/>
|
||||
<polygon points="298.0,445.0 301.7,454.9 312.3,455.4 304.0,461.9 306.8,472.1 298.0,466.3 289.2,472.1 292.0,461.9 283.7,455.4 294.3,454.9" fill="#e0a800" stroke="#8a6d00" stroke-width="1.2"/>
|
||||
<rect x="368.0" y="110.0" width="300.0" height="476.0" fill="#fdeeee" stroke="#c00" stroke-width="1.8"/>
|
||||
<rect x="384.0" y="196.0" width="210.0" height="56.0" fill="#ffffff" stroke="#777777" stroke-width="0.8"/>
|
||||
<line x1="384.0" y1="224.0" x2="594.0" y2="224.0" stroke="#000000" stroke-width="1.0"/>
|
||||
<rect x="387.9" y="224.0" width="13.1" height="8.0" fill="#188a3e" fill-opacity="0.35"/>
|
||||
<rect x="408.9" y="224.0" width="13.1" height="4.0" fill="#188a3e" fill-opacity="0.35"/>
|
||||
<rect x="429.9" y="224.0" width="13.1" height="0.0" fill="#188a3e" fill-opacity="0.35"/>
|
||||
<rect x="450.9" y="220.0" width="13.1" height="4.0" fill="#188a3e" fill-opacity="0.35"/>
|
||||
<rect x="471.9" y="216.0" width="13.1" height="8.0" fill="#188a3e" fill-opacity="0.35"/>
|
||||
<rect x="492.9" y="216.0" width="13.1" height="8.0" fill="#188a3e" fill-opacity="0.35"/>
|
||||
<rect x="513.9" y="212.0" width="13.1" height="12.0" fill="#188a3e" fill-opacity="0.35"/>
|
||||
<rect x="534.9" y="208.0" width="13.1" height="16.0" fill="#188a3e" fill-opacity="0.35"/>
|
||||
<rect x="555.9" y="204.0" width="13.1" height="20.0" fill="#188a3e" fill-opacity="0.35"/>
|
||||
<rect x="576.9" y="200.0" width="13.1" height="24.0" fill="#188a3e" fill-opacity="1.0"/>
|
||||
<polyline points="394.5,232.0 415.5,230.0 436.5,228.0 457.5,226.0 478.5,222.0 499.5,219.0 520.5,216.0 541.5,213.0 562.5,210.0 583.5,206.0" fill="none" stroke="#b06000" stroke-width="1.6" stroke-dasharray="3 2"/>
|
||||
<polygon points="634.0,209.0 637.7,218.9 648.3,219.4 640.0,225.9 642.8,236.1 634.0,230.3 625.2,236.1 628.0,225.9 619.7,219.4 630.3,218.9" fill="#e0a800" stroke="#8a6d00" stroke-width="1.2"/>
|
||||
<rect x="384.0" y="314.0" width="210.0" height="56.0" fill="#ffffff" stroke="#777777" stroke-width="0.8"/>
|
||||
<line x1="384.0" y1="342.0" x2="594.0" y2="342.0" stroke="#000000" stroke-width="1.0"/>
|
||||
<rect x="387.9" y="318.0" width="13.1" height="24.0" fill="#c00" fill-opacity="0.35"/>
|
||||
<rect x="408.9" y="318.0" width="13.1" height="24.0" fill="#c00" fill-opacity="0.35"/>
|
||||
<rect x="429.9" y="322.0" width="13.1" height="20.0" fill="#c00" fill-opacity="0.35"/>
|
||||
<rect x="450.9" y="322.0" width="13.1" height="20.0" fill="#c00" fill-opacity="0.35"/>
|
||||
<rect x="471.9" y="326.0" width="13.1" height="16.0" fill="#c00" fill-opacity="0.35"/>
|
||||
<rect x="492.9" y="326.0" width="13.1" height="16.0" fill="#c00" fill-opacity="0.35"/>
|
||||
<rect x="513.9" y="330.0" width="13.1" height="12.0" fill="#c00" fill-opacity="0.35"/>
|
||||
<rect x="534.9" y="330.0" width="13.1" height="12.0" fill="#c00" fill-opacity="0.35"/>
|
||||
<rect x="555.9" y="334.0" width="13.1" height="8.0" fill="#c00" fill-opacity="0.35"/>
|
||||
<rect x="576.9" y="334.0" width="13.1" height="8.0" fill="#c00" fill-opacity="1.0"/>
|
||||
<polyline points="394.5,318.0 415.5,318.0 436.5,319.3 457.5,320.0 478.5,322.0 499.5,324.0 520.5,326.0 541.5,328.0 562.5,330.0 583.5,332.0" fill="none" stroke="#b06000" stroke-width="1.6" stroke-dasharray="3 2"/>
|
||||
<line x1="622.0" y1="330.0" x2="646.0" y2="354.0" stroke="#c00" stroke-width="2.4"/>
|
||||
<line x1="646.0" y1="330.0" x2="622.0" y2="354.0" stroke="#c00" stroke-width="2.4"/>
|
||||
<rect x="384.0" y="432.0" width="210.0" height="56.0" fill="#ffffff" stroke="#777777" stroke-width="0.8"/>
|
||||
<line x1="384.0" y1="460.0" x2="594.0" y2="460.0" stroke="#000000" stroke-width="1.0"/>
|
||||
<rect x="387.9" y="460.0" width="13.1" height="8.0" fill="#188a3e" fill-opacity="0.35"/>
|
||||
<rect x="408.9" y="460.0" width="13.1" height="4.0" fill="#188a3e" fill-opacity="0.35"/>
|
||||
<rect x="429.9" y="460.0" width="13.1" height="0.0" fill="#188a3e" fill-opacity="0.35"/>
|
||||
<rect x="450.9" y="456.0" width="13.1" height="4.0" fill="#188a3e" fill-opacity="0.35"/>
|
||||
<rect x="471.9" y="452.0" width="13.1" height="8.0" fill="#188a3e" fill-opacity="0.35"/>
|
||||
<rect x="492.9" y="452.0" width="13.1" height="8.0" fill="#188a3e" fill-opacity="0.35"/>
|
||||
<rect x="513.9" y="448.0" width="13.1" height="12.0" fill="#188a3e" fill-opacity="0.35"/>
|
||||
<rect x="534.9" y="444.0" width="13.1" height="16.0" fill="#188a3e" fill-opacity="0.35"/>
|
||||
<rect x="555.9" y="440.0" width="13.1" height="20.0" fill="#188a3e" fill-opacity="0.35"/>
|
||||
<rect x="576.9" y="436.0" width="13.1" height="24.0" fill="#188a3e" fill-opacity="1.0"/>
|
||||
<polyline points="394.5,468.0 415.5,466.0 436.5,464.0 457.5,462.0 478.5,458.0 499.5,455.0 520.5,452.0 541.5,449.0 562.5,446.0 583.5,442.0" fill="none" stroke="#b06000" stroke-width="1.6" stroke-dasharray="3 2"/>
|
||||
<polygon points="634.0,445.0 637.7,454.9 648.3,455.4 640.0,461.9 642.8,472.1 634.0,466.3 625.2,472.1 628.0,461.9 619.7,455.4 630.3,454.9" fill="#e0a800" stroke="#8a6d00" stroke-width="1.2"/>
|
||||
<rect x="32.0" y="608.0" width="636.0" height="98.0" fill="#f7f7f7" stroke="#777777" stroke-width="1.2"/>
|
||||
<rect x="32.0" y="722.0" width="636.0" height="92.0" fill="#fdf0e0" stroke="#b06000" stroke-width="1.4"/>
|
||||
<text x="350.0" y="32.0" font-size="17" font-weight="bold" fill="#000000" text-anchor="middle">Cele 3 stele (Trinity): RS, Power și volum, toate în cadranul 1</text>
|
||||
<text x="350.0" y="56.0" font-size="13" font-weight="normal" fill="#777777" text-anchor="middle">Sortare finală, când după cei șase pași ți-au rămas prea multe simboluri.</text>
|
||||
<text x="350.0" y="78.0" font-size="13" font-weight="normal" fill="#777777" text-anchor="middle">Cadranul 1 = ultima bară a indicatorului e peste 0 ȘI peste media lui mobilă (linia punctată).</text>
|
||||
<text x="182.0" y="136.0" font-size="16" font-weight="bold" fill="#188a3e" text-anchor="middle">Simbol A — 3 stele</text>
|
||||
<text x="182.0" y="156.0" font-size="13" font-weight="normal" fill="#000000" text-anchor="middle">toate trei arată în aceeași direcție</text>
|
||||
<text x="48.0" y="186.0" font-size="14" font-weight="bold" fill="#000000" text-anchor="start">Relative strength</text>
|
||||
<text x="48.0" y="270.0" font-size="13" font-weight="normal" fill="#188a3e" text-anchor="start">cadranul 1: peste 0 și peste MA</text>
|
||||
<text x="48.0" y="304.0" font-size="14" font-weight="bold" fill="#000000" text-anchor="start">Power</text>
|
||||
<text x="48.0" y="388.0" font-size="13" font-weight="normal" fill="#188a3e" text-anchor="start">cadranul 1: peste 0 și peste MA</text>
|
||||
<text x="48.0" y="422.0" font-size="14" font-weight="bold" fill="#000000" text-anchor="start">Volum</text>
|
||||
<text x="48.0" y="506.0" font-size="13" font-weight="normal" fill="#188a3e" text-anchor="start">cadranul 1: peste 0 și peste MA</text>
|
||||
<text x="518.0" y="136.0" font-size="16" font-weight="bold" fill="#c00" text-anchor="middle">Simbol B — 2 din 3</text>
|
||||
<text x="518.0" y="156.0" font-size="13" font-weight="normal" fill="#000000" text-anchor="middle">Power rămâne în urmă: nu e trinity</text>
|
||||
<text x="384.0" y="186.0" font-size="14" font-weight="bold" fill="#000000" text-anchor="start">Relative strength</text>
|
||||
<text x="384.0" y="270.0" font-size="13" font-weight="normal" fill="#188a3e" text-anchor="start">cadranul 1: peste 0 și peste MA</text>
|
||||
<text x="384.0" y="304.0" font-size="14" font-weight="bold" fill="#000000" text-anchor="start">Power</text>
|
||||
<text x="384.0" y="388.0" font-size="13" font-weight="normal" fill="#c00" text-anchor="start">cadranul 3: peste 0, dar sub MA</text>
|
||||
<text x="384.0" y="422.0" font-size="14" font-weight="bold" fill="#000000" text-anchor="start">Volum</text>
|
||||
<text x="384.0" y="506.0" font-size="13" font-weight="normal" fill="#188a3e" text-anchor="start">cadranul 1: peste 0 și peste MA</text>
|
||||
<text x="182.0" y="548.0" font-size="14" font-weight="bold" fill="#188a3e" text-anchor="middle">3 stele → îl iei primul la analiză</text>
|
||||
<text x="518.0" y="548.0" font-size="14" font-weight="bold" fill="#c00" text-anchor="middle">2 stele → nu e „3 stele”</text>
|
||||
<text x="50.0" y="634.0" font-size="14" font-weight="bold" fill="#000000" text-anchor="start">În capitolul ăsta „3 stele” / „trinity” înseamnă exact un lucru:</text>
|
||||
<text x="50.0" y="656.0" font-size="13" font-weight="normal" fill="#000000" text-anchor="start">relative strength, Power și volumul, toate trei în cadranul 1 pe același simbol.</text>
|
||||
<text x="50.0" y="682.0" font-size="13" font-weight="normal" fill="#777777" text-anchor="start">Cuvântul apare în material și cu alte sensuri (la MDSRT: trei indicatori în divergență</text>
|
||||
<text x="50.0" y="700.0" font-size="13" font-weight="normal" fill="#777777" text-anchor="start">simultană). Acelea sunt altceva și nu se aplică aici.</text>
|
||||
<text x="50.0" y="748.0" font-size="13" font-weight="bold" fill="#000000" text-anchor="start">Power e proprietar: măsoară tăria trendului, dar formula nu e publicată.</text>
|
||||
<text x="50.0" y="770.0" font-size="13" font-weight="normal" fill="#000000" text-anchor="start">Citești cadranul din indicator, nu îl poți reconstrui singur.</text>
|
||||
<text x="50.0" y="794.0" font-size="13" font-weight="normal" fill="#777777" text-anchor="start">De aceea sortarea după 3 stele e o rafinare, nu un pas obligatoriu.</text>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 13 KiB |
@@ -896,6 +896,70 @@ să reacționeze la ziua curentă. Dacă îl compari cu RVOL-ul din setările
|
||||
implicite ale altei platforme, vei vedea alte cifre — nu e o greșeală de
|
||||
calcul.</p>
|
||||
<!-- DIAGRAMA: rvol -->
|
||||
<p><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 700 764" width="700" height="764" font-family="system-ui, sans-serif" role="img" aria-label="Relative volume: doua panouri de volum cu aceeasi medie pe 10 bare; in stanga ziua de azi e de doua ori media (RVOL 200 la suta, cazul HIG), in dreapta 0.61 din medie (cazul ULTA); sub 100 la suta e minus, nu veto">
|
||||
<rect x="0" y="0" width="700" height="764" fill="#ffffff"/>
|
||||
<rect x="40.0" y="128.0" width="284.0" height="310.0" fill="#ffffff" stroke="#777777" stroke-width="1.2"/>
|
||||
<rect x="44.9" y="361.1" width="16.0" height="68.9" fill="#9aa3ad" fill-opacity="0.55" stroke="#7a828a" stroke-width="1"/>
|
||||
<rect x="70.7" y="350.2" width="16.0" height="79.8" fill="#9aa3ad" fill-opacity="0.55" stroke="#7a828a" stroke-width="1"/>
|
||||
<rect x="96.5" y="356.1" width="16.0" height="73.9" fill="#9aa3ad" fill-opacity="0.55" stroke="#7a828a" stroke-width="1"/>
|
||||
<rect x="122.4" y="353.6" width="16.0" height="76.4" fill="#9aa3ad" fill-opacity="0.55" stroke="#7a828a" stroke-width="1"/>
|
||||
<rect x="148.2" y="348.5" width="16.0" height="81.5" fill="#9aa3ad" fill-opacity="0.55" stroke="#7a828a" stroke-width="1"/>
|
||||
<rect x="174.0" y="312.4" width="16.0" height="117.6" fill="#9aa3ad" fill-opacity="0.55" stroke="#7a828a" stroke-width="1"/>
|
||||
<rect x="199.8" y="343.5" width="16.0" height="86.5" fill="#9aa3ad" fill-opacity="0.55" stroke="#7a828a" stroke-width="1"/>
|
||||
<rect x="225.6" y="337.6" width="16.0" height="92.4" fill="#9aa3ad" fill-opacity="0.55" stroke="#7a828a" stroke-width="1"/>
|
||||
<rect x="251.5" y="329.2" width="16.0" height="100.8" fill="#9aa3ad" fill-opacity="0.55" stroke="#7a828a" stroke-width="1"/>
|
||||
<rect x="277.3" y="367.8" width="16.0" height="62.2" fill="#9aa3ad" fill-opacity="0.55" stroke="#7a828a" stroke-width="1"/>
|
||||
<rect x="303.1" y="262.0" width="16.0" height="168.0" fill="#188a3e" fill-opacity="1.0" stroke="#188a3e" stroke-width="1"/>
|
||||
<line x1="40.0" y1="430.0" x2="324.0" y2="430.0" stroke="#000000" stroke-width="1.2"/>
|
||||
<line x1="40.0" y1="346.0" x2="324.0" y2="346.0" stroke="#b06000" stroke-width="2.0" stroke-dasharray="5 3"/>
|
||||
<line x1="311.1" y1="182.0" x2="311.1" y2="251.0" stroke="#188a3e" stroke-width="1.8"/>
|
||||
<polygon points="311.1,258.0 306.1,250.0 316.1,250.0" fill="#188a3e"/>
|
||||
<rect x="376.0" y="128.0" width="284.0" height="310.0" fill="#ffffff" stroke="#777777" stroke-width="1.2"/>
|
||||
<rect x="380.9" y="361.1" width="16.0" height="68.9" fill="#9aa3ad" fill-opacity="0.55" stroke="#7a828a" stroke-width="1"/>
|
||||
<rect x="406.7" y="350.2" width="16.0" height="79.8" fill="#9aa3ad" fill-opacity="0.55" stroke="#7a828a" stroke-width="1"/>
|
||||
<rect x="432.5" y="356.1" width="16.0" height="73.9" fill="#9aa3ad" fill-opacity="0.55" stroke="#7a828a" stroke-width="1"/>
|
||||
<rect x="458.4" y="353.6" width="16.0" height="76.4" fill="#9aa3ad" fill-opacity="0.55" stroke="#7a828a" stroke-width="1"/>
|
||||
<rect x="484.2" y="348.5" width="16.0" height="81.5" fill="#9aa3ad" fill-opacity="0.55" stroke="#7a828a" stroke-width="1"/>
|
||||
<rect x="510.0" y="312.4" width="16.0" height="117.6" fill="#9aa3ad" fill-opacity="0.55" stroke="#7a828a" stroke-width="1"/>
|
||||
<rect x="535.8" y="343.5" width="16.0" height="86.5" fill="#9aa3ad" fill-opacity="0.55" stroke="#7a828a" stroke-width="1"/>
|
||||
<rect x="561.6" y="337.6" width="16.0" height="92.4" fill="#9aa3ad" fill-opacity="0.55" stroke="#7a828a" stroke-width="1"/>
|
||||
<rect x="587.5" y="329.2" width="16.0" height="100.8" fill="#9aa3ad" fill-opacity="0.55" stroke="#7a828a" stroke-width="1"/>
|
||||
<rect x="613.3" y="367.8" width="16.0" height="62.2" fill="#9aa3ad" fill-opacity="0.55" stroke="#7a828a" stroke-width="1"/>
|
||||
<rect x="639.1" y="378.8" width="16.0" height="51.2" fill="#c00" fill-opacity="1.0" stroke="#c00" stroke-width="1"/>
|
||||
<line x1="376.0" y1="430.0" x2="660.0" y2="430.0" stroke="#000000" stroke-width="1.2"/>
|
||||
<line x1="376.0" y1="346.0" x2="660.0" y2="346.0" stroke="#b06000" stroke-width="2.0" stroke-dasharray="5 3"/>
|
||||
<line x1="647.1" y1="182.0" x2="647.1" y2="367.8" stroke="#c00" stroke-width="1.8"/>
|
||||
<polygon points="647.1,374.8 642.1,366.8 652.1,366.8" fill="#c00"/>
|
||||
<rect x="40.0" y="526.0" width="620.0" height="112.0" fill="#f7f7f7" stroke="#777777" stroke-width="1.2"/>
|
||||
<rect x="40.0" y="654.0" width="620.0" height="90.0" fill="#fdf0e0" stroke="#b06000" stroke-width="1.4"/>
|
||||
<text x="350.0" y="34.0" font-size="17" font-weight="bold" fill="#000000" text-anchor="middle">Relative volume (RVOL): volumul zilei față de media pe 10 bare</text>
|
||||
<text x="350.0" y="58.0" font-size="14" font-weight="bold" fill="#777777" text-anchor="middle">RVOL = volumul de azi ÷ media ultimelor 10 bare de volum</text>
|
||||
<text x="350.0" y="80.0" font-size="13" font-weight="normal" fill="#777777" text-anchor="middle">Măsoară dacă azi chiar participă lumea, nu doar tu. Singurul prag din curs: peste 100 %.</text>
|
||||
<text x="182.0" y="110.0" font-size="15" font-weight="bold" fill="#188a3e" text-anchor="middle">Cazul HIG — peste prag</text>
|
||||
<text x="518.0" y="110.0" font-size="15" font-weight="bold" fill="#c00" text-anchor="middle">Cazul ULTA — sub prag</text>
|
||||
<text x="46.0" y="340.0" font-size="13" font-weight="bold" fill="#b06000" text-anchor="start">media = 100 %</text>
|
||||
<text x="182.0" y="152.0" font-size="15" font-weight="bold" fill="#188a3e" text-anchor="middle">azi = 2 × media → RVOL 200 %</text>
|
||||
<text x="182.0" y="172.0" font-size="13" font-weight="normal" fill="#000000" text-anchor="middle">cel mai mare din cele 16 rezultate</text>
|
||||
<text x="161.3" y="450.0" font-size="13" font-weight="normal" fill="#777777" text-anchor="middle">ultimele 10 bare de volum</text>
|
||||
<text x="311.1" y="450.0" font-size="13" font-weight="bold" fill="#188a3e" text-anchor="middle">azi</text>
|
||||
<text x="182.0" y="478.0" font-size="13" font-weight="bold" fill="#188a3e" text-anchor="middle">peste 100 % = confirmare</text>
|
||||
<text x="182.0" y="498.0" font-size="13" font-weight="normal" fill="#000000" text-anchor="middle">se tranzacționează dublu față de normal</text>
|
||||
<text x="382.0" y="340.0" font-size="13" font-weight="bold" fill="#b06000" text-anchor="start">media = 100 %</text>
|
||||
<text x="518.0" y="152.0" font-size="15" font-weight="bold" fill="#c00" text-anchor="middle">azi = 0,61 × media → RVOL 0.61</text>
|
||||
<text x="518.0" y="172.0" font-size="13" font-weight="normal" fill="#000000" text-anchor="middle">sub jumătate față de o zi normală</text>
|
||||
<text x="497.3" y="450.0" font-size="13" font-weight="normal" fill="#777777" text-anchor="middle">ultimele 10 bare de volum</text>
|
||||
<text x="647.1" y="450.0" font-size="13" font-weight="bold" fill="#c00" text-anchor="middle">azi</text>
|
||||
<text x="518.0" y="478.0" font-size="13" font-weight="bold" fill="#c00" text-anchor="middle">sub 100 % = minus, NU veto</text>
|
||||
<text x="518.0" y="498.0" font-size="13" font-weight="normal" fill="#000000" text-anchor="middle">îl notezi, dar analiza continuă</text>
|
||||
<text x="60.0" y="552.0" font-size="15" font-weight="bold" fill="#000000" text-anchor="start">Sub 100 % e un minus, nu un veto</text>
|
||||
<text x="60.0" y="576.0" font-size="13" font-weight="normal" fill="#000000" text-anchor="start">Pe scanerul real de Buy Doji, cele trei rezultate aveau RVOL 0.86, 1.03 și 0.61.</text>
|
||||
<text x="60.0" y="596.0" font-size="13" font-weight="normal" fill="#000000" text-anchor="start">Un prag dur de genul „RVOL ≥ 1.2” ar fi dat zero rezultate în ziua aia.</text>
|
||||
<text x="60.0" y="620.0" font-size="13" font-weight="bold" fill="#000000" text-anchor="start">De aceea RVOL e o coloană pe care o citești, nu un filtru care taie automat.</text>
|
||||
<text x="60.0" y="680.0" font-size="13" font-weight="bold" fill="#000000" text-anchor="start">Media e pe 10 bare, nu pe 50 (implicit în platforme).</text>
|
||||
<text x="60.0" y="702.0" font-size="13" font-weight="normal" fill="#777777" text-anchor="start">Cifra cursului e mai sensibilă la ziua curentă. Dacă vezi altă valoare în</text>
|
||||
<text x="60.0" y="722.0" font-size="13" font-weight="normal" fill="#777777" text-anchor="start">altă platformă, nu e greșeală de calcul, e altă lungime de medie.</text>
|
||||
</svg></p>
|
||||
<!-- /DIAGRAMA: rvol -->
|
||||
|
||||
<p><strong>Sub 100 % e un minus, nu un veto.</strong> În material analiza a continuat la
|
||||
0.99, 0.96, 0.94, 0.88 și 0.74. Iar pe scanerul real de Buy Doji, cele trei
|
||||
@@ -925,6 +989,127 @@ simbol. Asta e ce numește cursul „3 stele" sau „trinity" în capitolul de
|
||||
selecție — și numai asta. Când toate trei arată în aceeași direcție,
|
||||
simbolul are și forță relativă, și trend susținut, și participare.</p>
|
||||
<!-- DIAGRAMA: trinity -->
|
||||
<p><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 700 868" width="700" height="868" font-family="system-ui, sans-serif" role="img" aria-label="Cele 3 stele: relative strength, Power si volum, toate in cadranul 1 pe acelasi simbol; in dreapta un simbol cu doar doua din trei, care nu e trinity">
|
||||
<rect x="0" y="0" width="700" height="868" fill="#ffffff"/>
|
||||
<rect x="32.0" y="110.0" width="300.0" height="476.0" fill="#eef7f0" stroke="#188a3e" stroke-width="1.8"/>
|
||||
<rect x="48.0" y="196.0" width="210.0" height="56.0" fill="#ffffff" stroke="#777777" stroke-width="0.8"/>
|
||||
<line x1="48.0" y1="224.0" x2="258.0" y2="224.0" stroke="#000000" stroke-width="1.0"/>
|
||||
<rect x="51.9" y="224.0" width="13.1" height="8.0" fill="#188a3e" fill-opacity="0.35"/>
|
||||
<rect x="72.9" y="224.0" width="13.1" height="4.0" fill="#188a3e" fill-opacity="0.35"/>
|
||||
<rect x="93.9" y="224.0" width="13.1" height="0.0" fill="#188a3e" fill-opacity="0.35"/>
|
||||
<rect x="114.9" y="220.0" width="13.1" height="4.0" fill="#188a3e" fill-opacity="0.35"/>
|
||||
<rect x="135.9" y="216.0" width="13.1" height="8.0" fill="#188a3e" fill-opacity="0.35"/>
|
||||
<rect x="156.9" y="216.0" width="13.1" height="8.0" fill="#188a3e" fill-opacity="0.35"/>
|
||||
<rect x="177.9" y="212.0" width="13.1" height="12.0" fill="#188a3e" fill-opacity="0.35"/>
|
||||
<rect x="198.9" y="208.0" width="13.1" height="16.0" fill="#188a3e" fill-opacity="0.35"/>
|
||||
<rect x="219.9" y="204.0" width="13.1" height="20.0" fill="#188a3e" fill-opacity="0.35"/>
|
||||
<rect x="240.9" y="200.0" width="13.1" height="24.0" fill="#188a3e" fill-opacity="1.0"/>
|
||||
<polyline points="58.5,232.0 79.5,230.0 100.5,228.0 121.5,226.0 142.5,222.0 163.5,219.0 184.5,216.0 205.5,213.0 226.5,210.0 247.5,206.0" fill="none" stroke="#b06000" stroke-width="1.6" stroke-dasharray="3 2"/>
|
||||
<polygon points="298.0,209.0 301.7,218.9 312.3,219.4 304.0,225.9 306.8,236.1 298.0,230.3 289.2,236.1 292.0,225.9 283.7,219.4 294.3,218.9" fill="#e0a800" stroke="#8a6d00" stroke-width="1.2"/>
|
||||
<rect x="48.0" y="314.0" width="210.0" height="56.0" fill="#ffffff" stroke="#777777" stroke-width="0.8"/>
|
||||
<line x1="48.0" y1="342.0" x2="258.0" y2="342.0" stroke="#000000" stroke-width="1.0"/>
|
||||
<rect x="51.9" y="342.0" width="13.1" height="8.0" fill="#188a3e" fill-opacity="0.35"/>
|
||||
<rect x="72.9" y="342.0" width="13.1" height="4.0" fill="#188a3e" fill-opacity="0.35"/>
|
||||
<rect x="93.9" y="342.0" width="13.1" height="0.0" fill="#188a3e" fill-opacity="0.35"/>
|
||||
<rect x="114.9" y="338.0" width="13.1" height="4.0" fill="#188a3e" fill-opacity="0.35"/>
|
||||
<rect x="135.9" y="334.0" width="13.1" height="8.0" fill="#188a3e" fill-opacity="0.35"/>
|
||||
<rect x="156.9" y="334.0" width="13.1" height="8.0" fill="#188a3e" fill-opacity="0.35"/>
|
||||
<rect x="177.9" y="330.0" width="13.1" height="12.0" fill="#188a3e" fill-opacity="0.35"/>
|
||||
<rect x="198.9" y="326.0" width="13.1" height="16.0" fill="#188a3e" fill-opacity="0.35"/>
|
||||
<rect x="219.9" y="322.0" width="13.1" height="20.0" fill="#188a3e" fill-opacity="0.35"/>
|
||||
<rect x="240.9" y="318.0" width="13.1" height="24.0" fill="#188a3e" fill-opacity="1.0"/>
|
||||
<polyline points="58.5,350.0 79.5,348.0 100.5,346.0 121.5,344.0 142.5,340.0 163.5,337.0 184.5,334.0 205.5,331.0 226.5,328.0 247.5,324.0" fill="none" stroke="#b06000" stroke-width="1.6" stroke-dasharray="3 2"/>
|
||||
<polygon points="298.0,327.0 301.7,336.9 312.3,337.4 304.0,343.9 306.8,354.1 298.0,348.3 289.2,354.1 292.0,343.9 283.7,337.4 294.3,336.9" fill="#e0a800" stroke="#8a6d00" stroke-width="1.2"/>
|
||||
<rect x="48.0" y="432.0" width="210.0" height="56.0" fill="#ffffff" stroke="#777777" stroke-width="0.8"/>
|
||||
<line x1="48.0" y1="460.0" x2="258.0" y2="460.0" stroke="#000000" stroke-width="1.0"/>
|
||||
<rect x="51.9" y="460.0" width="13.1" height="8.0" fill="#188a3e" fill-opacity="0.35"/>
|
||||
<rect x="72.9" y="460.0" width="13.1" height="4.0" fill="#188a3e" fill-opacity="0.35"/>
|
||||
<rect x="93.9" y="460.0" width="13.1" height="0.0" fill="#188a3e" fill-opacity="0.35"/>
|
||||
<rect x="114.9" y="456.0" width="13.1" height="4.0" fill="#188a3e" fill-opacity="0.35"/>
|
||||
<rect x="135.9" y="452.0" width="13.1" height="8.0" fill="#188a3e" fill-opacity="0.35"/>
|
||||
<rect x="156.9" y="452.0" width="13.1" height="8.0" fill="#188a3e" fill-opacity="0.35"/>
|
||||
<rect x="177.9" y="448.0" width="13.1" height="12.0" fill="#188a3e" fill-opacity="0.35"/>
|
||||
<rect x="198.9" y="444.0" width="13.1" height="16.0" fill="#188a3e" fill-opacity="0.35"/>
|
||||
<rect x="219.9" y="440.0" width="13.1" height="20.0" fill="#188a3e" fill-opacity="0.35"/>
|
||||
<rect x="240.9" y="436.0" width="13.1" height="24.0" fill="#188a3e" fill-opacity="1.0"/>
|
||||
<polyline points="58.5,468.0 79.5,466.0 100.5,464.0 121.5,462.0 142.5,458.0 163.5,455.0 184.5,452.0 205.5,449.0 226.5,446.0 247.5,442.0" fill="none" stroke="#b06000" stroke-width="1.6" stroke-dasharray="3 2"/>
|
||||
<polygon points="298.0,445.0 301.7,454.9 312.3,455.4 304.0,461.9 306.8,472.1 298.0,466.3 289.2,472.1 292.0,461.9 283.7,455.4 294.3,454.9" fill="#e0a800" stroke="#8a6d00" stroke-width="1.2"/>
|
||||
<rect x="368.0" y="110.0" width="300.0" height="476.0" fill="#fdeeee" stroke="#c00" stroke-width="1.8"/>
|
||||
<rect x="384.0" y="196.0" width="210.0" height="56.0" fill="#ffffff" stroke="#777777" stroke-width="0.8"/>
|
||||
<line x1="384.0" y1="224.0" x2="594.0" y2="224.0" stroke="#000000" stroke-width="1.0"/>
|
||||
<rect x="387.9" y="224.0" width="13.1" height="8.0" fill="#188a3e" fill-opacity="0.35"/>
|
||||
<rect x="408.9" y="224.0" width="13.1" height="4.0" fill="#188a3e" fill-opacity="0.35"/>
|
||||
<rect x="429.9" y="224.0" width="13.1" height="0.0" fill="#188a3e" fill-opacity="0.35"/>
|
||||
<rect x="450.9" y="220.0" width="13.1" height="4.0" fill="#188a3e" fill-opacity="0.35"/>
|
||||
<rect x="471.9" y="216.0" width="13.1" height="8.0" fill="#188a3e" fill-opacity="0.35"/>
|
||||
<rect x="492.9" y="216.0" width="13.1" height="8.0" fill="#188a3e" fill-opacity="0.35"/>
|
||||
<rect x="513.9" y="212.0" width="13.1" height="12.0" fill="#188a3e" fill-opacity="0.35"/>
|
||||
<rect x="534.9" y="208.0" width="13.1" height="16.0" fill="#188a3e" fill-opacity="0.35"/>
|
||||
<rect x="555.9" y="204.0" width="13.1" height="20.0" fill="#188a3e" fill-opacity="0.35"/>
|
||||
<rect x="576.9" y="200.0" width="13.1" height="24.0" fill="#188a3e" fill-opacity="1.0"/>
|
||||
<polyline points="394.5,232.0 415.5,230.0 436.5,228.0 457.5,226.0 478.5,222.0 499.5,219.0 520.5,216.0 541.5,213.0 562.5,210.0 583.5,206.0" fill="none" stroke="#b06000" stroke-width="1.6" stroke-dasharray="3 2"/>
|
||||
<polygon points="634.0,209.0 637.7,218.9 648.3,219.4 640.0,225.9 642.8,236.1 634.0,230.3 625.2,236.1 628.0,225.9 619.7,219.4 630.3,218.9" fill="#e0a800" stroke="#8a6d00" stroke-width="1.2"/>
|
||||
<rect x="384.0" y="314.0" width="210.0" height="56.0" fill="#ffffff" stroke="#777777" stroke-width="0.8"/>
|
||||
<line x1="384.0" y1="342.0" x2="594.0" y2="342.0" stroke="#000000" stroke-width="1.0"/>
|
||||
<rect x="387.9" y="318.0" width="13.1" height="24.0" fill="#c00" fill-opacity="0.35"/>
|
||||
<rect x="408.9" y="318.0" width="13.1" height="24.0" fill="#c00" fill-opacity="0.35"/>
|
||||
<rect x="429.9" y="322.0" width="13.1" height="20.0" fill="#c00" fill-opacity="0.35"/>
|
||||
<rect x="450.9" y="322.0" width="13.1" height="20.0" fill="#c00" fill-opacity="0.35"/>
|
||||
<rect x="471.9" y="326.0" width="13.1" height="16.0" fill="#c00" fill-opacity="0.35"/>
|
||||
<rect x="492.9" y="326.0" width="13.1" height="16.0" fill="#c00" fill-opacity="0.35"/>
|
||||
<rect x="513.9" y="330.0" width="13.1" height="12.0" fill="#c00" fill-opacity="0.35"/>
|
||||
<rect x="534.9" y="330.0" width="13.1" height="12.0" fill="#c00" fill-opacity="0.35"/>
|
||||
<rect x="555.9" y="334.0" width="13.1" height="8.0" fill="#c00" fill-opacity="0.35"/>
|
||||
<rect x="576.9" y="334.0" width="13.1" height="8.0" fill="#c00" fill-opacity="1.0"/>
|
||||
<polyline points="394.5,318.0 415.5,318.0 436.5,319.3 457.5,320.0 478.5,322.0 499.5,324.0 520.5,326.0 541.5,328.0 562.5,330.0 583.5,332.0" fill="none" stroke="#b06000" stroke-width="1.6" stroke-dasharray="3 2"/>
|
||||
<line x1="622.0" y1="330.0" x2="646.0" y2="354.0" stroke="#c00" stroke-width="2.4"/>
|
||||
<line x1="646.0" y1="330.0" x2="622.0" y2="354.0" stroke="#c00" stroke-width="2.4"/>
|
||||
<rect x="384.0" y="432.0" width="210.0" height="56.0" fill="#ffffff" stroke="#777777" stroke-width="0.8"/>
|
||||
<line x1="384.0" y1="460.0" x2="594.0" y2="460.0" stroke="#000000" stroke-width="1.0"/>
|
||||
<rect x="387.9" y="460.0" width="13.1" height="8.0" fill="#188a3e" fill-opacity="0.35"/>
|
||||
<rect x="408.9" y="460.0" width="13.1" height="4.0" fill="#188a3e" fill-opacity="0.35"/>
|
||||
<rect x="429.9" y="460.0" width="13.1" height="0.0" fill="#188a3e" fill-opacity="0.35"/>
|
||||
<rect x="450.9" y="456.0" width="13.1" height="4.0" fill="#188a3e" fill-opacity="0.35"/>
|
||||
<rect x="471.9" y="452.0" width="13.1" height="8.0" fill="#188a3e" fill-opacity="0.35"/>
|
||||
<rect x="492.9" y="452.0" width="13.1" height="8.0" fill="#188a3e" fill-opacity="0.35"/>
|
||||
<rect x="513.9" y="448.0" width="13.1" height="12.0" fill="#188a3e" fill-opacity="0.35"/>
|
||||
<rect x="534.9" y="444.0" width="13.1" height="16.0" fill="#188a3e" fill-opacity="0.35"/>
|
||||
<rect x="555.9" y="440.0" width="13.1" height="20.0" fill="#188a3e" fill-opacity="0.35"/>
|
||||
<rect x="576.9" y="436.0" width="13.1" height="24.0" fill="#188a3e" fill-opacity="1.0"/>
|
||||
<polyline points="394.5,468.0 415.5,466.0 436.5,464.0 457.5,462.0 478.5,458.0 499.5,455.0 520.5,452.0 541.5,449.0 562.5,446.0 583.5,442.0" fill="none" stroke="#b06000" stroke-width="1.6" stroke-dasharray="3 2"/>
|
||||
<polygon points="634.0,445.0 637.7,454.9 648.3,455.4 640.0,461.9 642.8,472.1 634.0,466.3 625.2,472.1 628.0,461.9 619.7,455.4 630.3,454.9" fill="#e0a800" stroke="#8a6d00" stroke-width="1.2"/>
|
||||
<rect x="32.0" y="608.0" width="636.0" height="98.0" fill="#f7f7f7" stroke="#777777" stroke-width="1.2"/>
|
||||
<rect x="32.0" y="722.0" width="636.0" height="92.0" fill="#fdf0e0" stroke="#b06000" stroke-width="1.4"/>
|
||||
<text x="350.0" y="32.0" font-size="17" font-weight="bold" fill="#000000" text-anchor="middle">Cele 3 stele (Trinity): RS, Power și volum, toate în cadranul 1</text>
|
||||
<text x="350.0" y="56.0" font-size="13" font-weight="normal" fill="#777777" text-anchor="middle">Sortare finală, când după cei șase pași ți-au rămas prea multe simboluri.</text>
|
||||
<text x="350.0" y="78.0" font-size="13" font-weight="normal" fill="#777777" text-anchor="middle">Cadranul 1 = ultima bară a indicatorului e peste 0 ȘI peste media lui mobilă (linia punctată).</text>
|
||||
<text x="182.0" y="136.0" font-size="16" font-weight="bold" fill="#188a3e" text-anchor="middle">Simbol A — 3 stele</text>
|
||||
<text x="182.0" y="156.0" font-size="13" font-weight="normal" fill="#000000" text-anchor="middle">toate trei arată în aceeași direcție</text>
|
||||
<text x="48.0" y="186.0" font-size="14" font-weight="bold" fill="#000000" text-anchor="start">Relative strength</text>
|
||||
<text x="48.0" y="270.0" font-size="13" font-weight="normal" fill="#188a3e" text-anchor="start">cadranul 1: peste 0 și peste MA</text>
|
||||
<text x="48.0" y="304.0" font-size="14" font-weight="bold" fill="#000000" text-anchor="start">Power</text>
|
||||
<text x="48.0" y="388.0" font-size="13" font-weight="normal" fill="#188a3e" text-anchor="start">cadranul 1: peste 0 și peste MA</text>
|
||||
<text x="48.0" y="422.0" font-size="14" font-weight="bold" fill="#000000" text-anchor="start">Volum</text>
|
||||
<text x="48.0" y="506.0" font-size="13" font-weight="normal" fill="#188a3e" text-anchor="start">cadranul 1: peste 0 și peste MA</text>
|
||||
<text x="518.0" y="136.0" font-size="16" font-weight="bold" fill="#c00" text-anchor="middle">Simbol B — 2 din 3</text>
|
||||
<text x="518.0" y="156.0" font-size="13" font-weight="normal" fill="#000000" text-anchor="middle">Power rămâne în urmă: nu e trinity</text>
|
||||
<text x="384.0" y="186.0" font-size="14" font-weight="bold" fill="#000000" text-anchor="start">Relative strength</text>
|
||||
<text x="384.0" y="270.0" font-size="13" font-weight="normal" fill="#188a3e" text-anchor="start">cadranul 1: peste 0 și peste MA</text>
|
||||
<text x="384.0" y="304.0" font-size="14" font-weight="bold" fill="#000000" text-anchor="start">Power</text>
|
||||
<text x="384.0" y="388.0" font-size="13" font-weight="normal" fill="#c00" text-anchor="start">cadranul 3: peste 0, dar sub MA</text>
|
||||
<text x="384.0" y="422.0" font-size="14" font-weight="bold" fill="#000000" text-anchor="start">Volum</text>
|
||||
<text x="384.0" y="506.0" font-size="13" font-weight="normal" fill="#188a3e" text-anchor="start">cadranul 1: peste 0 și peste MA</text>
|
||||
<text x="182.0" y="548.0" font-size="14" font-weight="bold" fill="#188a3e" text-anchor="middle">3 stele → îl iei primul la analiză</text>
|
||||
<text x="518.0" y="548.0" font-size="14" font-weight="bold" fill="#c00" text-anchor="middle">2 stele → nu e „3 stele”</text>
|
||||
<text x="50.0" y="634.0" font-size="14" font-weight="bold" fill="#000000" text-anchor="start">În capitolul ăsta „3 stele” / „trinity” înseamnă exact un lucru:</text>
|
||||
<text x="50.0" y="656.0" font-size="13" font-weight="normal" fill="#000000" text-anchor="start">relative strength, Power și volumul, toate trei în cadranul 1 pe același simbol.</text>
|
||||
<text x="50.0" y="682.0" font-size="13" font-weight="normal" fill="#777777" text-anchor="start">Cuvântul apare în material și cu alte sensuri (la MDSRT: trei indicatori în divergență</text>
|
||||
<text x="50.0" y="700.0" font-size="13" font-weight="normal" fill="#777777" text-anchor="start">simultană). Acelea sunt altceva și nu se aplică aici.</text>
|
||||
<text x="50.0" y="748.0" font-size="13" font-weight="bold" fill="#000000" text-anchor="start">Power e proprietar: măsoară tăria trendului, dar formula nu e publicată.</text>
|
||||
<text x="50.0" y="770.0" font-size="13" font-weight="normal" fill="#000000" text-anchor="start">Citești cadranul din indicator, nu îl poți reconstrui singur.</text>
|
||||
<text x="50.0" y="794.0" font-size="13" font-weight="normal" fill="#777777" text-anchor="start">De aceea sortarea după 3 stele e o rafinare, nu un pas obligatoriu.</text>
|
||||
</svg></p>
|
||||
<!-- /DIAGRAMA: trinity -->
|
||||
|
||||
<p>Power e proprietar și nu are formulă publicată în material: știi ce măsoară
|
||||
(tăria trendului), citești cadranul, dar nu îl poți reconstrui singur. De
|
||||
@@ -1341,6 +1526,6 @@ selecției).</p>
|
||||
<li>[ ] Dacă au rămas prea mulți: sortez după 3 stele (RS + Power + volum în cadranul 1).</li>
|
||||
<li>[ ] Între doi candidați: trend, apoi volum, apoi fundamental.</li>
|
||||
<li>[ ] Am notat simbolul pe listă <strong>fără să intru</strong>. Trigger-ul se caută separat, pe grafic.</li>
|
||||
</ul><nav class="pager"><a class="prev" href="03_m2d.html">← 03. 3. M2D — Mecanic, 2 Time Frame-uri (Strategia 1)</a><a class="up" href="../index.html#17_STRATEGII">↑ index</a><a class="next" href="05_atmi.html">05. 5. ATMI (Strategia 2 de investitii) →</a></nav>
|
||||
</ul><nav class="pager"><a class="prev" href="03_m2d.html">← 03. 3. M2D — Mecanic, 2 Time Frame-uri (Strategia 1)</a><a class="up" href="../index.html#17_STRATEGII">↑ index</a><a class="next" href="05_atmi.html">05. 5. ATMI (Strategia 2 de investiții) →</a></nav>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -919,6 +919,70 @@ implicite ale altei platforme, vei vedea alte cifre — nu e o greșeală de
|
||||
calcul.
|
||||
|
||||
<!-- DIAGRAMA: rvol -->
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 700 764" width="700" height="764" font-family="system-ui, sans-serif" role="img" aria-label="Relative volume: doua panouri de volum cu aceeasi medie pe 10 bare; in stanga ziua de azi e de doua ori media (RVOL 200 la suta, cazul HIG), in dreapta 0.61 din medie (cazul ULTA); sub 100 la suta e minus, nu veto">
|
||||
<rect x="0" y="0" width="700" height="764" fill="#ffffff"/>
|
||||
<rect x="40.0" y="128.0" width="284.0" height="310.0" fill="#ffffff" stroke="#777777" stroke-width="1.2"/>
|
||||
<rect x="44.9" y="361.1" width="16.0" height="68.9" fill="#9aa3ad" fill-opacity="0.55" stroke="#7a828a" stroke-width="1"/>
|
||||
<rect x="70.7" y="350.2" width="16.0" height="79.8" fill="#9aa3ad" fill-opacity="0.55" stroke="#7a828a" stroke-width="1"/>
|
||||
<rect x="96.5" y="356.1" width="16.0" height="73.9" fill="#9aa3ad" fill-opacity="0.55" stroke="#7a828a" stroke-width="1"/>
|
||||
<rect x="122.4" y="353.6" width="16.0" height="76.4" fill="#9aa3ad" fill-opacity="0.55" stroke="#7a828a" stroke-width="1"/>
|
||||
<rect x="148.2" y="348.5" width="16.0" height="81.5" fill="#9aa3ad" fill-opacity="0.55" stroke="#7a828a" stroke-width="1"/>
|
||||
<rect x="174.0" y="312.4" width="16.0" height="117.6" fill="#9aa3ad" fill-opacity="0.55" stroke="#7a828a" stroke-width="1"/>
|
||||
<rect x="199.8" y="343.5" width="16.0" height="86.5" fill="#9aa3ad" fill-opacity="0.55" stroke="#7a828a" stroke-width="1"/>
|
||||
<rect x="225.6" y="337.6" width="16.0" height="92.4" fill="#9aa3ad" fill-opacity="0.55" stroke="#7a828a" stroke-width="1"/>
|
||||
<rect x="251.5" y="329.2" width="16.0" height="100.8" fill="#9aa3ad" fill-opacity="0.55" stroke="#7a828a" stroke-width="1"/>
|
||||
<rect x="277.3" y="367.8" width="16.0" height="62.2" fill="#9aa3ad" fill-opacity="0.55" stroke="#7a828a" stroke-width="1"/>
|
||||
<rect x="303.1" y="262.0" width="16.0" height="168.0" fill="#188a3e" fill-opacity="1.0" stroke="#188a3e" stroke-width="1"/>
|
||||
<line x1="40.0" y1="430.0" x2="324.0" y2="430.0" stroke="#000000" stroke-width="1.2"/>
|
||||
<line x1="40.0" y1="346.0" x2="324.0" y2="346.0" stroke="#b06000" stroke-width="2.0" stroke-dasharray="5 3"/>
|
||||
<line x1="311.1" y1="182.0" x2="311.1" y2="251.0" stroke="#188a3e" stroke-width="1.8"/>
|
||||
<polygon points="311.1,258.0 306.1,250.0 316.1,250.0" fill="#188a3e"/>
|
||||
<rect x="376.0" y="128.0" width="284.0" height="310.0" fill="#ffffff" stroke="#777777" stroke-width="1.2"/>
|
||||
<rect x="380.9" y="361.1" width="16.0" height="68.9" fill="#9aa3ad" fill-opacity="0.55" stroke="#7a828a" stroke-width="1"/>
|
||||
<rect x="406.7" y="350.2" width="16.0" height="79.8" fill="#9aa3ad" fill-opacity="0.55" stroke="#7a828a" stroke-width="1"/>
|
||||
<rect x="432.5" y="356.1" width="16.0" height="73.9" fill="#9aa3ad" fill-opacity="0.55" stroke="#7a828a" stroke-width="1"/>
|
||||
<rect x="458.4" y="353.6" width="16.0" height="76.4" fill="#9aa3ad" fill-opacity="0.55" stroke="#7a828a" stroke-width="1"/>
|
||||
<rect x="484.2" y="348.5" width="16.0" height="81.5" fill="#9aa3ad" fill-opacity="0.55" stroke="#7a828a" stroke-width="1"/>
|
||||
<rect x="510.0" y="312.4" width="16.0" height="117.6" fill="#9aa3ad" fill-opacity="0.55" stroke="#7a828a" stroke-width="1"/>
|
||||
<rect x="535.8" y="343.5" width="16.0" height="86.5" fill="#9aa3ad" fill-opacity="0.55" stroke="#7a828a" stroke-width="1"/>
|
||||
<rect x="561.6" y="337.6" width="16.0" height="92.4" fill="#9aa3ad" fill-opacity="0.55" stroke="#7a828a" stroke-width="1"/>
|
||||
<rect x="587.5" y="329.2" width="16.0" height="100.8" fill="#9aa3ad" fill-opacity="0.55" stroke="#7a828a" stroke-width="1"/>
|
||||
<rect x="613.3" y="367.8" width="16.0" height="62.2" fill="#9aa3ad" fill-opacity="0.55" stroke="#7a828a" stroke-width="1"/>
|
||||
<rect x="639.1" y="378.8" width="16.0" height="51.2" fill="#c00" fill-opacity="1.0" stroke="#c00" stroke-width="1"/>
|
||||
<line x1="376.0" y1="430.0" x2="660.0" y2="430.0" stroke="#000000" stroke-width="1.2"/>
|
||||
<line x1="376.0" y1="346.0" x2="660.0" y2="346.0" stroke="#b06000" stroke-width="2.0" stroke-dasharray="5 3"/>
|
||||
<line x1="647.1" y1="182.0" x2="647.1" y2="367.8" stroke="#c00" stroke-width="1.8"/>
|
||||
<polygon points="647.1,374.8 642.1,366.8 652.1,366.8" fill="#c00"/>
|
||||
<rect x="40.0" y="526.0" width="620.0" height="112.0" fill="#f7f7f7" stroke="#777777" stroke-width="1.2"/>
|
||||
<rect x="40.0" y="654.0" width="620.0" height="90.0" fill="#fdf0e0" stroke="#b06000" stroke-width="1.4"/>
|
||||
<text x="350.0" y="34.0" font-size="17" font-weight="bold" fill="#000000" text-anchor="middle">Relative volume (RVOL): volumul zilei față de media pe 10 bare</text>
|
||||
<text x="350.0" y="58.0" font-size="14" font-weight="bold" fill="#777777" text-anchor="middle">RVOL = volumul de azi ÷ media ultimelor 10 bare de volum</text>
|
||||
<text x="350.0" y="80.0" font-size="13" font-weight="normal" fill="#777777" text-anchor="middle">Măsoară dacă azi chiar participă lumea, nu doar tu. Singurul prag din curs: peste 100 %.</text>
|
||||
<text x="182.0" y="110.0" font-size="15" font-weight="bold" fill="#188a3e" text-anchor="middle">Cazul HIG — peste prag</text>
|
||||
<text x="518.0" y="110.0" font-size="15" font-weight="bold" fill="#c00" text-anchor="middle">Cazul ULTA — sub prag</text>
|
||||
<text x="46.0" y="340.0" font-size="13" font-weight="bold" fill="#b06000" text-anchor="start">media = 100 %</text>
|
||||
<text x="182.0" y="152.0" font-size="15" font-weight="bold" fill="#188a3e" text-anchor="middle">azi = 2 × media → RVOL 200 %</text>
|
||||
<text x="182.0" y="172.0" font-size="13" font-weight="normal" fill="#000000" text-anchor="middle">cel mai mare din cele 16 rezultate</text>
|
||||
<text x="161.3" y="450.0" font-size="13" font-weight="normal" fill="#777777" text-anchor="middle">ultimele 10 bare de volum</text>
|
||||
<text x="311.1" y="450.0" font-size="13" font-weight="bold" fill="#188a3e" text-anchor="middle">azi</text>
|
||||
<text x="182.0" y="478.0" font-size="13" font-weight="bold" fill="#188a3e" text-anchor="middle">peste 100 % = confirmare</text>
|
||||
<text x="182.0" y="498.0" font-size="13" font-weight="normal" fill="#000000" text-anchor="middle">se tranzacționează dublu față de normal</text>
|
||||
<text x="382.0" y="340.0" font-size="13" font-weight="bold" fill="#b06000" text-anchor="start">media = 100 %</text>
|
||||
<text x="518.0" y="152.0" font-size="15" font-weight="bold" fill="#c00" text-anchor="middle">azi = 0,61 × media → RVOL 0.61</text>
|
||||
<text x="518.0" y="172.0" font-size="13" font-weight="normal" fill="#000000" text-anchor="middle">sub jumătate față de o zi normală</text>
|
||||
<text x="497.3" y="450.0" font-size="13" font-weight="normal" fill="#777777" text-anchor="middle">ultimele 10 bare de volum</text>
|
||||
<text x="647.1" y="450.0" font-size="13" font-weight="bold" fill="#c00" text-anchor="middle">azi</text>
|
||||
<text x="518.0" y="478.0" font-size="13" font-weight="bold" fill="#c00" text-anchor="middle">sub 100 % = minus, NU veto</text>
|
||||
<text x="518.0" y="498.0" font-size="13" font-weight="normal" fill="#000000" text-anchor="middle">îl notezi, dar analiza continuă</text>
|
||||
<text x="60.0" y="552.0" font-size="15" font-weight="bold" fill="#000000" text-anchor="start">Sub 100 % e un minus, nu un veto</text>
|
||||
<text x="60.0" y="576.0" font-size="13" font-weight="normal" fill="#000000" text-anchor="start">Pe scanerul real de Buy Doji, cele trei rezultate aveau RVOL 0.86, 1.03 și 0.61.</text>
|
||||
<text x="60.0" y="596.0" font-size="13" font-weight="normal" fill="#000000" text-anchor="start">Un prag dur de genul „RVOL ≥ 1.2” ar fi dat zero rezultate în ziua aia.</text>
|
||||
<text x="60.0" y="620.0" font-size="13" font-weight="bold" fill="#000000" text-anchor="start">De aceea RVOL e o coloană pe care o citești, nu un filtru care taie automat.</text>
|
||||
<text x="60.0" y="680.0" font-size="13" font-weight="bold" fill="#000000" text-anchor="start">Media e pe 10 bare, nu pe 50 (implicit în platforme).</text>
|
||||
<text x="60.0" y="702.0" font-size="13" font-weight="normal" fill="#777777" text-anchor="start">Cifra cursului e mai sensibilă la ziua curentă. Dacă vezi altă valoare în</text>
|
||||
<text x="60.0" y="722.0" font-size="13" font-weight="normal" fill="#777777" text-anchor="start">altă platformă, nu e greșeală de calcul, e altă lungime de medie.</text>
|
||||
</svg>
|
||||
<!-- /DIAGRAMA: rvol -->
|
||||
|
||||
**Sub 100 % e un minus, nu un veto.** În material analiza a continuat la
|
||||
0.99, 0.96, 0.94, 0.88 și 0.74. Iar pe scanerul real de Buy Doji, cele trei
|
||||
@@ -958,6 +1022,127 @@ selecție — și numai asta. Când toate trei arată în aceeași direcție,
|
||||
simbolul are și forță relativă, și trend susținut, și participare.
|
||||
|
||||
<!-- DIAGRAMA: trinity -->
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 700 868" width="700" height="868" font-family="system-ui, sans-serif" role="img" aria-label="Cele 3 stele: relative strength, Power si volum, toate in cadranul 1 pe acelasi simbol; in dreapta un simbol cu doar doua din trei, care nu e trinity">
|
||||
<rect x="0" y="0" width="700" height="868" fill="#ffffff"/>
|
||||
<rect x="32.0" y="110.0" width="300.0" height="476.0" fill="#eef7f0" stroke="#188a3e" stroke-width="1.8"/>
|
||||
<rect x="48.0" y="196.0" width="210.0" height="56.0" fill="#ffffff" stroke="#777777" stroke-width="0.8"/>
|
||||
<line x1="48.0" y1="224.0" x2="258.0" y2="224.0" stroke="#000000" stroke-width="1.0"/>
|
||||
<rect x="51.9" y="224.0" width="13.1" height="8.0" fill="#188a3e" fill-opacity="0.35"/>
|
||||
<rect x="72.9" y="224.0" width="13.1" height="4.0" fill="#188a3e" fill-opacity="0.35"/>
|
||||
<rect x="93.9" y="224.0" width="13.1" height="0.0" fill="#188a3e" fill-opacity="0.35"/>
|
||||
<rect x="114.9" y="220.0" width="13.1" height="4.0" fill="#188a3e" fill-opacity="0.35"/>
|
||||
<rect x="135.9" y="216.0" width="13.1" height="8.0" fill="#188a3e" fill-opacity="0.35"/>
|
||||
<rect x="156.9" y="216.0" width="13.1" height="8.0" fill="#188a3e" fill-opacity="0.35"/>
|
||||
<rect x="177.9" y="212.0" width="13.1" height="12.0" fill="#188a3e" fill-opacity="0.35"/>
|
||||
<rect x="198.9" y="208.0" width="13.1" height="16.0" fill="#188a3e" fill-opacity="0.35"/>
|
||||
<rect x="219.9" y="204.0" width="13.1" height="20.0" fill="#188a3e" fill-opacity="0.35"/>
|
||||
<rect x="240.9" y="200.0" width="13.1" height="24.0" fill="#188a3e" fill-opacity="1.0"/>
|
||||
<polyline points="58.5,232.0 79.5,230.0 100.5,228.0 121.5,226.0 142.5,222.0 163.5,219.0 184.5,216.0 205.5,213.0 226.5,210.0 247.5,206.0" fill="none" stroke="#b06000" stroke-width="1.6" stroke-dasharray="3 2"/>
|
||||
<polygon points="298.0,209.0 301.7,218.9 312.3,219.4 304.0,225.9 306.8,236.1 298.0,230.3 289.2,236.1 292.0,225.9 283.7,219.4 294.3,218.9" fill="#e0a800" stroke="#8a6d00" stroke-width="1.2"/>
|
||||
<rect x="48.0" y="314.0" width="210.0" height="56.0" fill="#ffffff" stroke="#777777" stroke-width="0.8"/>
|
||||
<line x1="48.0" y1="342.0" x2="258.0" y2="342.0" stroke="#000000" stroke-width="1.0"/>
|
||||
<rect x="51.9" y="342.0" width="13.1" height="8.0" fill="#188a3e" fill-opacity="0.35"/>
|
||||
<rect x="72.9" y="342.0" width="13.1" height="4.0" fill="#188a3e" fill-opacity="0.35"/>
|
||||
<rect x="93.9" y="342.0" width="13.1" height="0.0" fill="#188a3e" fill-opacity="0.35"/>
|
||||
<rect x="114.9" y="338.0" width="13.1" height="4.0" fill="#188a3e" fill-opacity="0.35"/>
|
||||
<rect x="135.9" y="334.0" width="13.1" height="8.0" fill="#188a3e" fill-opacity="0.35"/>
|
||||
<rect x="156.9" y="334.0" width="13.1" height="8.0" fill="#188a3e" fill-opacity="0.35"/>
|
||||
<rect x="177.9" y="330.0" width="13.1" height="12.0" fill="#188a3e" fill-opacity="0.35"/>
|
||||
<rect x="198.9" y="326.0" width="13.1" height="16.0" fill="#188a3e" fill-opacity="0.35"/>
|
||||
<rect x="219.9" y="322.0" width="13.1" height="20.0" fill="#188a3e" fill-opacity="0.35"/>
|
||||
<rect x="240.9" y="318.0" width="13.1" height="24.0" fill="#188a3e" fill-opacity="1.0"/>
|
||||
<polyline points="58.5,350.0 79.5,348.0 100.5,346.0 121.5,344.0 142.5,340.0 163.5,337.0 184.5,334.0 205.5,331.0 226.5,328.0 247.5,324.0" fill="none" stroke="#b06000" stroke-width="1.6" stroke-dasharray="3 2"/>
|
||||
<polygon points="298.0,327.0 301.7,336.9 312.3,337.4 304.0,343.9 306.8,354.1 298.0,348.3 289.2,354.1 292.0,343.9 283.7,337.4 294.3,336.9" fill="#e0a800" stroke="#8a6d00" stroke-width="1.2"/>
|
||||
<rect x="48.0" y="432.0" width="210.0" height="56.0" fill="#ffffff" stroke="#777777" stroke-width="0.8"/>
|
||||
<line x1="48.0" y1="460.0" x2="258.0" y2="460.0" stroke="#000000" stroke-width="1.0"/>
|
||||
<rect x="51.9" y="460.0" width="13.1" height="8.0" fill="#188a3e" fill-opacity="0.35"/>
|
||||
<rect x="72.9" y="460.0" width="13.1" height="4.0" fill="#188a3e" fill-opacity="0.35"/>
|
||||
<rect x="93.9" y="460.0" width="13.1" height="0.0" fill="#188a3e" fill-opacity="0.35"/>
|
||||
<rect x="114.9" y="456.0" width="13.1" height="4.0" fill="#188a3e" fill-opacity="0.35"/>
|
||||
<rect x="135.9" y="452.0" width="13.1" height="8.0" fill="#188a3e" fill-opacity="0.35"/>
|
||||
<rect x="156.9" y="452.0" width="13.1" height="8.0" fill="#188a3e" fill-opacity="0.35"/>
|
||||
<rect x="177.9" y="448.0" width="13.1" height="12.0" fill="#188a3e" fill-opacity="0.35"/>
|
||||
<rect x="198.9" y="444.0" width="13.1" height="16.0" fill="#188a3e" fill-opacity="0.35"/>
|
||||
<rect x="219.9" y="440.0" width="13.1" height="20.0" fill="#188a3e" fill-opacity="0.35"/>
|
||||
<rect x="240.9" y="436.0" width="13.1" height="24.0" fill="#188a3e" fill-opacity="1.0"/>
|
||||
<polyline points="58.5,468.0 79.5,466.0 100.5,464.0 121.5,462.0 142.5,458.0 163.5,455.0 184.5,452.0 205.5,449.0 226.5,446.0 247.5,442.0" fill="none" stroke="#b06000" stroke-width="1.6" stroke-dasharray="3 2"/>
|
||||
<polygon points="298.0,445.0 301.7,454.9 312.3,455.4 304.0,461.9 306.8,472.1 298.0,466.3 289.2,472.1 292.0,461.9 283.7,455.4 294.3,454.9" fill="#e0a800" stroke="#8a6d00" stroke-width="1.2"/>
|
||||
<rect x="368.0" y="110.0" width="300.0" height="476.0" fill="#fdeeee" stroke="#c00" stroke-width="1.8"/>
|
||||
<rect x="384.0" y="196.0" width="210.0" height="56.0" fill="#ffffff" stroke="#777777" stroke-width="0.8"/>
|
||||
<line x1="384.0" y1="224.0" x2="594.0" y2="224.0" stroke="#000000" stroke-width="1.0"/>
|
||||
<rect x="387.9" y="224.0" width="13.1" height="8.0" fill="#188a3e" fill-opacity="0.35"/>
|
||||
<rect x="408.9" y="224.0" width="13.1" height="4.0" fill="#188a3e" fill-opacity="0.35"/>
|
||||
<rect x="429.9" y="224.0" width="13.1" height="0.0" fill="#188a3e" fill-opacity="0.35"/>
|
||||
<rect x="450.9" y="220.0" width="13.1" height="4.0" fill="#188a3e" fill-opacity="0.35"/>
|
||||
<rect x="471.9" y="216.0" width="13.1" height="8.0" fill="#188a3e" fill-opacity="0.35"/>
|
||||
<rect x="492.9" y="216.0" width="13.1" height="8.0" fill="#188a3e" fill-opacity="0.35"/>
|
||||
<rect x="513.9" y="212.0" width="13.1" height="12.0" fill="#188a3e" fill-opacity="0.35"/>
|
||||
<rect x="534.9" y="208.0" width="13.1" height="16.0" fill="#188a3e" fill-opacity="0.35"/>
|
||||
<rect x="555.9" y="204.0" width="13.1" height="20.0" fill="#188a3e" fill-opacity="0.35"/>
|
||||
<rect x="576.9" y="200.0" width="13.1" height="24.0" fill="#188a3e" fill-opacity="1.0"/>
|
||||
<polyline points="394.5,232.0 415.5,230.0 436.5,228.0 457.5,226.0 478.5,222.0 499.5,219.0 520.5,216.0 541.5,213.0 562.5,210.0 583.5,206.0" fill="none" stroke="#b06000" stroke-width="1.6" stroke-dasharray="3 2"/>
|
||||
<polygon points="634.0,209.0 637.7,218.9 648.3,219.4 640.0,225.9 642.8,236.1 634.0,230.3 625.2,236.1 628.0,225.9 619.7,219.4 630.3,218.9" fill="#e0a800" stroke="#8a6d00" stroke-width="1.2"/>
|
||||
<rect x="384.0" y="314.0" width="210.0" height="56.0" fill="#ffffff" stroke="#777777" stroke-width="0.8"/>
|
||||
<line x1="384.0" y1="342.0" x2="594.0" y2="342.0" stroke="#000000" stroke-width="1.0"/>
|
||||
<rect x="387.9" y="318.0" width="13.1" height="24.0" fill="#c00" fill-opacity="0.35"/>
|
||||
<rect x="408.9" y="318.0" width="13.1" height="24.0" fill="#c00" fill-opacity="0.35"/>
|
||||
<rect x="429.9" y="322.0" width="13.1" height="20.0" fill="#c00" fill-opacity="0.35"/>
|
||||
<rect x="450.9" y="322.0" width="13.1" height="20.0" fill="#c00" fill-opacity="0.35"/>
|
||||
<rect x="471.9" y="326.0" width="13.1" height="16.0" fill="#c00" fill-opacity="0.35"/>
|
||||
<rect x="492.9" y="326.0" width="13.1" height="16.0" fill="#c00" fill-opacity="0.35"/>
|
||||
<rect x="513.9" y="330.0" width="13.1" height="12.0" fill="#c00" fill-opacity="0.35"/>
|
||||
<rect x="534.9" y="330.0" width="13.1" height="12.0" fill="#c00" fill-opacity="0.35"/>
|
||||
<rect x="555.9" y="334.0" width="13.1" height="8.0" fill="#c00" fill-opacity="0.35"/>
|
||||
<rect x="576.9" y="334.0" width="13.1" height="8.0" fill="#c00" fill-opacity="1.0"/>
|
||||
<polyline points="394.5,318.0 415.5,318.0 436.5,319.3 457.5,320.0 478.5,322.0 499.5,324.0 520.5,326.0 541.5,328.0 562.5,330.0 583.5,332.0" fill="none" stroke="#b06000" stroke-width="1.6" stroke-dasharray="3 2"/>
|
||||
<line x1="622.0" y1="330.0" x2="646.0" y2="354.0" stroke="#c00" stroke-width="2.4"/>
|
||||
<line x1="646.0" y1="330.0" x2="622.0" y2="354.0" stroke="#c00" stroke-width="2.4"/>
|
||||
<rect x="384.0" y="432.0" width="210.0" height="56.0" fill="#ffffff" stroke="#777777" stroke-width="0.8"/>
|
||||
<line x1="384.0" y1="460.0" x2="594.0" y2="460.0" stroke="#000000" stroke-width="1.0"/>
|
||||
<rect x="387.9" y="460.0" width="13.1" height="8.0" fill="#188a3e" fill-opacity="0.35"/>
|
||||
<rect x="408.9" y="460.0" width="13.1" height="4.0" fill="#188a3e" fill-opacity="0.35"/>
|
||||
<rect x="429.9" y="460.0" width="13.1" height="0.0" fill="#188a3e" fill-opacity="0.35"/>
|
||||
<rect x="450.9" y="456.0" width="13.1" height="4.0" fill="#188a3e" fill-opacity="0.35"/>
|
||||
<rect x="471.9" y="452.0" width="13.1" height="8.0" fill="#188a3e" fill-opacity="0.35"/>
|
||||
<rect x="492.9" y="452.0" width="13.1" height="8.0" fill="#188a3e" fill-opacity="0.35"/>
|
||||
<rect x="513.9" y="448.0" width="13.1" height="12.0" fill="#188a3e" fill-opacity="0.35"/>
|
||||
<rect x="534.9" y="444.0" width="13.1" height="16.0" fill="#188a3e" fill-opacity="0.35"/>
|
||||
<rect x="555.9" y="440.0" width="13.1" height="20.0" fill="#188a3e" fill-opacity="0.35"/>
|
||||
<rect x="576.9" y="436.0" width="13.1" height="24.0" fill="#188a3e" fill-opacity="1.0"/>
|
||||
<polyline points="394.5,468.0 415.5,466.0 436.5,464.0 457.5,462.0 478.5,458.0 499.5,455.0 520.5,452.0 541.5,449.0 562.5,446.0 583.5,442.0" fill="none" stroke="#b06000" stroke-width="1.6" stroke-dasharray="3 2"/>
|
||||
<polygon points="634.0,445.0 637.7,454.9 648.3,455.4 640.0,461.9 642.8,472.1 634.0,466.3 625.2,472.1 628.0,461.9 619.7,455.4 630.3,454.9" fill="#e0a800" stroke="#8a6d00" stroke-width="1.2"/>
|
||||
<rect x="32.0" y="608.0" width="636.0" height="98.0" fill="#f7f7f7" stroke="#777777" stroke-width="1.2"/>
|
||||
<rect x="32.0" y="722.0" width="636.0" height="92.0" fill="#fdf0e0" stroke="#b06000" stroke-width="1.4"/>
|
||||
<text x="350.0" y="32.0" font-size="17" font-weight="bold" fill="#000000" text-anchor="middle">Cele 3 stele (Trinity): RS, Power și volum, toate în cadranul 1</text>
|
||||
<text x="350.0" y="56.0" font-size="13" font-weight="normal" fill="#777777" text-anchor="middle">Sortare finală, când după cei șase pași ți-au rămas prea multe simboluri.</text>
|
||||
<text x="350.0" y="78.0" font-size="13" font-weight="normal" fill="#777777" text-anchor="middle">Cadranul 1 = ultima bară a indicatorului e peste 0 ȘI peste media lui mobilă (linia punctată).</text>
|
||||
<text x="182.0" y="136.0" font-size="16" font-weight="bold" fill="#188a3e" text-anchor="middle">Simbol A — 3 stele</text>
|
||||
<text x="182.0" y="156.0" font-size="13" font-weight="normal" fill="#000000" text-anchor="middle">toate trei arată în aceeași direcție</text>
|
||||
<text x="48.0" y="186.0" font-size="14" font-weight="bold" fill="#000000" text-anchor="start">Relative strength</text>
|
||||
<text x="48.0" y="270.0" font-size="13" font-weight="normal" fill="#188a3e" text-anchor="start">cadranul 1: peste 0 și peste MA</text>
|
||||
<text x="48.0" y="304.0" font-size="14" font-weight="bold" fill="#000000" text-anchor="start">Power</text>
|
||||
<text x="48.0" y="388.0" font-size="13" font-weight="normal" fill="#188a3e" text-anchor="start">cadranul 1: peste 0 și peste MA</text>
|
||||
<text x="48.0" y="422.0" font-size="14" font-weight="bold" fill="#000000" text-anchor="start">Volum</text>
|
||||
<text x="48.0" y="506.0" font-size="13" font-weight="normal" fill="#188a3e" text-anchor="start">cadranul 1: peste 0 și peste MA</text>
|
||||
<text x="518.0" y="136.0" font-size="16" font-weight="bold" fill="#c00" text-anchor="middle">Simbol B — 2 din 3</text>
|
||||
<text x="518.0" y="156.0" font-size="13" font-weight="normal" fill="#000000" text-anchor="middle">Power rămâne în urmă: nu e trinity</text>
|
||||
<text x="384.0" y="186.0" font-size="14" font-weight="bold" fill="#000000" text-anchor="start">Relative strength</text>
|
||||
<text x="384.0" y="270.0" font-size="13" font-weight="normal" fill="#188a3e" text-anchor="start">cadranul 1: peste 0 și peste MA</text>
|
||||
<text x="384.0" y="304.0" font-size="14" font-weight="bold" fill="#000000" text-anchor="start">Power</text>
|
||||
<text x="384.0" y="388.0" font-size="13" font-weight="normal" fill="#c00" text-anchor="start">cadranul 3: peste 0, dar sub MA</text>
|
||||
<text x="384.0" y="422.0" font-size="14" font-weight="bold" fill="#000000" text-anchor="start">Volum</text>
|
||||
<text x="384.0" y="506.0" font-size="13" font-weight="normal" fill="#188a3e" text-anchor="start">cadranul 1: peste 0 și peste MA</text>
|
||||
<text x="182.0" y="548.0" font-size="14" font-weight="bold" fill="#188a3e" text-anchor="middle">3 stele → îl iei primul la analiză</text>
|
||||
<text x="518.0" y="548.0" font-size="14" font-weight="bold" fill="#c00" text-anchor="middle">2 stele → nu e „3 stele”</text>
|
||||
<text x="50.0" y="634.0" font-size="14" font-weight="bold" fill="#000000" text-anchor="start">În capitolul ăsta „3 stele” / „trinity” înseamnă exact un lucru:</text>
|
||||
<text x="50.0" y="656.0" font-size="13" font-weight="normal" fill="#000000" text-anchor="start">relative strength, Power și volumul, toate trei în cadranul 1 pe același simbol.</text>
|
||||
<text x="50.0" y="682.0" font-size="13" font-weight="normal" fill="#777777" text-anchor="start">Cuvântul apare în material și cu alte sensuri (la MDSRT: trei indicatori în divergență</text>
|
||||
<text x="50.0" y="700.0" font-size="13" font-weight="normal" fill="#777777" text-anchor="start">simultană). Acelea sunt altceva și nu se aplică aici.</text>
|
||||
<text x="50.0" y="748.0" font-size="13" font-weight="bold" fill="#000000" text-anchor="start">Power e proprietar: măsoară tăria trendului, dar formula nu e publicată.</text>
|
||||
<text x="50.0" y="770.0" font-size="13" font-weight="normal" fill="#000000" text-anchor="start">Citești cadranul din indicator, nu îl poți reconstrui singur.</text>
|
||||
<text x="50.0" y="794.0" font-size="13" font-weight="normal" fill="#777777" text-anchor="start">De aceea sortarea după 3 stele e o rafinare, nu un pas obligatoriu.</text>
|
||||
</svg>
|
||||
<!-- /DIAGRAMA: trinity -->
|
||||
|
||||
Power e proprietar și nu are formulă publicată în material: știi ce măsoară
|
||||
(tăria trendului), citești cadranul, dar nu îl poți reconstrui singur. De
|
||||
|
||||
Reference in New Issue
Block a user