diff --git a/.claude/agents/m2d-extractor.md b/.claude/agents/m2d-extractor.md index b9806c5..9694cbd 100644 --- a/.claude/agents/m2d-extractor.md +++ b/.claude/agents/m2d-extractor.md @@ -52,7 +52,7 @@ Schema este în `scripts/vision_schema.py`. Are `extra="forbid"` — orice câmp | `data` | timestamp axa X la candle-ul trigger, normalizat `YYYY-MM-DD`. TradeStation folosește MM/DD/YY american; convertești. Nu poate fi în viitor față de UTC azi. | | `ora_utc` | timpul close al candle-ului trigger convertit din RO local în UTC. Format `HH:MM` (24h). EEST = UTC+3 (vară), EET = UTC+2 (iarnă). Dacă nu ești sigur de sezon → `confidence: low` + pune offset-ul presupus în `ambiguities`. | | `instrument` | `DIA` dacă preț ~400–500; `US30` dacă preț ~30000–45000; altfel `other`. | -| `directie` | `Buy` dacă trigger e bulină verde-deschis după verde-închis după turquoise pe TF mare. `Sell` dacă roșu-deschis după roșu-închis după galben pe TF mare. | +| `directie` | **CRITICAL**: vezi secțiunea "Citirea bulinelor — dot band" mai jos. Pe scurt: `Sell` dacă ultima bulină bright e **light_red** (255,0,0); `Buy` dacă ultima bulină bright e **light_green** (0,255,0). | | `tf_mare` | exact `5min` sau `15min` — citești din label/overlay TF mare. | | `tf_mic` | exact `1min` sau `3min` — citești din label chart vizibil. | | `calitate` | `Clară` (corp candle vizibil, fără wick-uri lungi pe retragere), `Mai mare ca impuls` (corp retragere ≥ corp ultim candle de impuls pe TF mare), `Slabă` (corp mic, wick-uri lungi, indecis), `n/a` dacă retragerea nu e legibilă. | @@ -67,6 +67,42 @@ Schema este în `scripts/vision_schema.py`. Are `extra="forbid"` — orice câmp | `ambiguities` | listă scurtă cu ce a fost incert (ex: `["ora_utc DST boundary", "tp1 obscured by overlay"]`). Empty list dacă nimic. | | `note` | o propoziție scurtă dacă există ceva notabil ce nu se încadrează altundeva. String gol altfel. | +### Pas 2.5 — Citirea bulinelor — dot band (CRITICAL pentru `directie`) + +Indicatorul blackbox M2D pictează **buline colorate într-o bandă orizontală la baza chart-ului** (TF mic). Aceasta e singura sursă fiabilă pentru direcție și trigger. **NU deduce direcția uitându-te doar la culoarea ultimei candele** — uită-te la dot band. + +**Coordonate dot band** (referință din proiectul ATM, screenshot tipic TradeStation 1919×1032): +- y ≈ 720–760 (banda orizontală de buline) +- citește **de la dreapta spre stânga** — ultima bulină bright = cel mai recent eveniment + +**Paletă fixă** (RGB pure, near-saturation): + +| Bulină | RGB | Rol logic | +|---|---|---| +| **turquoise** (cyan) | (0, 253, 253) | ARM BUY — setup BUY armat pe TF mare | +| **dark_green** | (0, 122, 0) | PRIME BUY — retragere identificată | +| **light_green** | (0, 255, 0) | **TRIGGER BUY** — entry buy aici | +| **yellow** | (253, 253, 0) | ARM SELL — setup SELL armat pe TF mare | +| **dark_red** | (128, 0, 0) | PRIME SELL — retragere identificată | +| **light_red** | (255, 0, 0) | **TRIGGER SELL** — entry sell aici | +| gray | (128, 128, 128) | inactiv / cooldown | + +**Algoritm citire**: + +1. Scanezi dot band-ul **de la dreapta spre stânga** (cele mai recente buline). +2. Identifici **ultima bulină bright** (light_red SAU light_green). Aceasta determină `directie`: + - **light_red** = `Sell` + - **light_green** = `Buy` +3. Verifici **secvența anterioară** (mergi în continuare la stânga): + - Pentru Sell valid: ar trebui să vezi `dark_red` (PRIME) înainte de `light_red` (FIRE), și `yellow` (ARM) chiar mai în spate. + - Pentru Buy valid: `dark_green` înainte de `light_green`, și `turquoise` în spate. +4. Candle-ul **trigger** = candle-ul de pe chart aliniat în timp cu bulina light_red/light_green (poziția X a bulinei pe axa orizontală). + +**Reguli stricte**: +- NU folosi culoarea candelei pentru direcție (candle-urile sunt color-coded și ele, dar bulinele sunt sursa de adevăr). +- Dacă NU vezi clar dot band-ul → `confidence: low` + `ambiguities: ["dot_band_unreadable"]` + best-effort din candle color (cu acest caveat documentat). +- Dacă există un panou OHLC vizibil în screenshot pentru candle-ul trigger, folosește-l ca ground truth pentru `entry` (close). + ### Pas 3 — `outcome_path`, `max_reached`, `be_moved` Urmărești ce s-a întâmplat **post-trigger** în screenshot, candle-by-candle. diff --git a/data/jurnal.csv b/data/jurnal.csv new file mode 100644 index 0000000..3d5f630 --- /dev/null +++ b/data/jurnal.csv @@ -0,0 +1,2 @@ +id,screenshot_file,source,data,zi,ora_ro,ora_utc,instrument,directie,tf_mare,tf_mic,calitate,entry,sl,tp0,tp1,tp2,risc_pct,outcome_path,max_reached,be_moved,pl_marius,pl_theoretical,set,indicator_version,pl_overlay_version,csv_schema_version,extracted_at,note +1,dia-1min-example2.png,vision_calibration,2026-05-13,Mi,17:33,14:33,DIA,Sell,5min,1min,n/a,492.47,492.77,492.35,492.29,492.17,0.06,pending,TP0,True,,0.1330,A2,v-2026-05,marius-v1,1,2026-05-13T10:05:22Z,User hint confirmed Sell direction via light_red dot in band. Entry anchored to OHLC panel reading ~492.47 at 17:33 RO. diff --git a/data/jurnal.md b/data/jurnal.md new file mode 100644 index 0000000..13bf0c6 --- /dev/null +++ b/data/jurnal.md @@ -0,0 +1,10 @@ +# Jurnal M2D (auto-generated from data/jurnal.csv) + +Generated: 2026-05-13T10:05:36Z +Rows: 1 + +| # | Data | Zi | Ora RO | Set | Instrument | Direcție | Calitate | Entry | SL | TP0 | TP1 | TP2 | outcome_path | P/L (Marius) | P/L (theoretic) | Source | Note | +|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---| +| 1 | 2026-05-13 | Mi | 17:33 | A2 | DIA | Sell | n/a | 492.47 | 492.77 | 492.35 | 492.29 | 492.17 | pending | pending | +0.13 | vision_calibration | User hint confirmed Sell direction via light_red dot in band. Entry anchored to OHLC panel reading ~492.47 at 17:33 RO. | + +*Vezi `data/jurnal.csv` pentru toate cele 29 coloane (id, ora_utc, tf_*, risc_pct, be_moved, max_reached, versions, extracted_at).* diff --git a/dia-1min-example.png b/dia-1min-example.png index 9a0358f..c6dc99b 100644 Binary files a/dia-1min-example.png and b/dia-1min-example.png differ diff --git a/dia-1min-example2.png b/dia-1min-example2.png new file mode 100644 index 0000000..f7fa6ad Binary files /dev/null and b/dia-1min-example2.png differ