Suită SMC + Divergențe · TradingView (Pine v6)
SMC + Divergence Suite este o colecție de indicatori și screenere în Pine Script v6 pentru TradingView, construite pe Smart Money Concepts (un fork al SMC LuxAlgo). Suita detectează Order Blocks, Break of Structure (BOS), Change of Character (CHOCH), Fair Value Gaps și impune un filtru de bias HTF/MTF, cu alerte pe mai multe perechi grupate în loturi de câte 17 simboluri. Pe lângă partea SMC, suita include o linie separată de divergențe TD 9+13 combinată cu mai mulți indicatori, portată din lucrările LonesomeTheBlue.
Diferența esențială față de un indicator obișnuit este validarea: logica de detecție și execuție a fost reimplementată într-un backtester scris în Python, rulat pe BTCUSDT 15M între 2017 și 2026 (aproximativ 299.000 de bare), cu scopul de a obține paritate cu Strategy Tester din TradingView. Stiva folosită: Pine Script v6, Python, pandas, numba și Git pentru versionare.
Citește studiul de caz complet →
Problema și motivația
Indicatorii de tip Smart Money Concepts sunt populari, dar suferă de o problemă fundamentală: arată frumos pe grafic, însă nimeni nu știe cu adevărat dacă semnalele lor sunt profitabile sau doar zgomot ajustat retroactiv. Pe TradingView, codul Pine este legat de motorul platformei, iar testarea unei singure configurații cere repaint manual, comparații vizuale și răbdare. Nu poți rula zece mii de combinații de parametri și nu poți audita de ce un anumit ordin a intrat la un anumit preț.
Suita a pornit de la un fork al codului SMC LuxAlgo, adus în Pine Script v6, și a crescut într-un proiect cu două componente strâns legate: pe de o parte familia de indicatori și strategii SMC pe TradingView, pe de altă parte un backtester independent în Python care reproduce aceeași logică pentru a putea fi validată riguros. Obiectivul declarat în cod a fost paritatea cu Strategy Tester din TradingView: dacă modelul Python și indicatorul Pine produc aceleași tranzacții, atunci rezultatele backtestului devin credibile.
Arhitectura și cum funcționează
Partea Pine cuprinde mai multe entități: un indicator single pair, o variantă de strategie (strat) cu intrări și ieșiri, și un screener multi-pereche. Detectorul de bază identifică Order Blocks (swing, internal și last), BOS și CHOCH, Fair Value Gaps, plus un filtru de bias pe timeframe superior. Peste acestea există un sistem de confluență care punctează un semnal după mai multe surse, un filtru de sesiune și un control de repaint explicit.
Screenerul rezolvă o constrângere reală a TradingView: o singură instanță poate apela un număr limitat de simboluri externe. Soluția a fost împărțirea universului de perechi în loturi (chunks): fiecare instanță scanează un lot de perechi, iar utilizatorul rulează mai multe instanțe pentru a acoperi zeci de simboluri. Versiunea de screener a fost rearhitecturată de la cinci la zece loturi, tocmai pentru a respecta bugetul de apeluri al planului Premium. Fiecare pereche întoarce doar tupluri de tipuri primitive, pentru a evita capcanele cunoscute ale Pine la întoarcerea de tupluri din request.security.
Linia de divergențe este o componentă separată: TD 9+13 (numărătoarea DeMark, cu logica de perfecțiune pe barele 8 sau 9) combinată cu detecția de divergențe pe mai mulți oscilatori, portată din lucrarea LonesomeTheBlue. Versiunile au evoluat de la o singură familie de oscilatori la setul complet de surse de confluență, inclusiv divergențe pe mai multe timeframe-uri și, unde planul TradingView o permite, date de footprint reale (delta, POC, absorbție).
Backtesterul Python și paritatea
Inima validării este backtesterul scris în Python. Acesta reimplementează detecția de Order Blocks, mașina de stări pentru BOS și CHOCH și logica de respingere a OB, apoi le rulează pe seria completă BTCUSDT 15M, din 17.08.2017 până în 09.03.2026, adică aproximativ 299.000 de bare. Configurația din cod este aliniată exact la valorile de input ale entității de pe TradingView: lungimea de swing, întârzierea maximă de respingere, vârsta maximă a OB, comisionul de 0,04% pe parte și restul parametrilor sunt setați să oglindească exact ce vede utilizatorul în Pine.
Cea mai importantă decizie tehnică a fost mutarea modelului de execuție de la o evaluare pe bara de 15 minute la o evaluare per minut. Versiunea de strategie V16.0 a înlocuit citirile scalare prin request.security cu apeluri request.security_lower_tf care întorc întreaga serie de bare de un minut din interiorul fiecărei bare de grafic. Astfel, respingerea de Order Block, intrarea și verificarea stop loss / take profit se evaluează minut cu minut, exact ca în bucla Python. În plus, strategia activează bar magnifier, ca emulatorul de broker să folosească date de un minut pentru ordinea reală a execuției stop loss versus take profit în interiorul aceleiași bare.
Decizii de inginerie și anti-fragilitate
Câteva probleme subtile au fost rezolvate explicit în cod, ceea ce spune mult despre maturitatea proiectului. Una a fost mirajul geometriei stopului: când o intrare se umple la deschiderea unei bare cu gap, pierderea reală putea depăși mult riscul nominal. Soluția, introdusă în V16.2-Strat, a fost recalcularea stop loss-ului și take profit-ului din prețul real de umplere, nu din prețul de semnal, oglindind comportamentul din motorul Python.
O altă problemă a fost furtuna de intrări intrabar: cu bar magnifier și recalcul după umplere, o alertă se putea redeclanșa pe mai multe sub-bare de un minut și putea reintra de mai multe ori într-o singură bară de o oră. Într-un caz concret, bara de criză din 13.04.2024 ora 23:00 producea șapte tranzacții complete. Soluția a fost o protecție de o singură intrare pe bară folosind o variabilă varip, care persistă în interiorul barei acolo unde o variabilă obișnuită s-ar fi resetat la recalcul. Tot aici a fost reparat și un bug de randare în care Order Block-urile mitigate lăsau o cutie fantomă pe grafic, fără să afecteze logica de tranzacționare.
Pe partea de performanță, detecția de Order Block a fost identificată ca fiind adevăratul gât de sticlă: bucla pură Python costa între 18 și 66 de secunde per lungime de swing pe seria de 299.000 de bare, iar construcția paralelă era blocată de cel mai lent caz. Soluția a fost o reimplementare fidelă cu numba, cu o listă activă compactă de tipul folosit de biblioteca de referință, evitând o scanare pătratică care ar fi fost mai lentă decât pandas. Contractul de paritate este strict: dtype float32 păstrat identic, ordine de procesare secvențială bull înainte de bear, iar tablourile de Order Block, top și bottom trebuie să fie identice bit cu bit cu implementarea de referință.
Testare, sweep și date
Backtesterul nu se rezumă la o singură configurație. Există un motor de sweep paralel care rulează cel puțin zece mii de variații de parametri per combinație pereche-timeframe, folosind multiprocessing pe mai multe nuclee și cache de detecție OB cheiat pe lungimea de swing. Grila implicită produce 24.000 de configurații per pereche, baleind procentul de stop loss, procentul de take profit, lungimea de swing, maturitatea OB și tipul de intrare. Benchmarking-ul a arătat că 16 workeri băteau 32 pe acest tip de sarcină numerică cu OB din cache, hyperthreading-ul dăunând în acest caz specific.
Datele au fost colectate atât din surse crypto, cât și din Dukascopy pentru forex, metale, acțiuni și indici, cu scripturi dedicate de fetch și cu un format de cache .npz pe lângă CSV. Verificarea de paritate compară explicit ledgerul de tranzacții al motorului Python cu exportul din Strategy Tester de pe TradingView. Anumite tipuri de semnal, precum divergențele de delta care depind de footprint-ul TradingView, sunt marcate clar în cod ca ne-backtestabile, ceea ce reflectă onestitatea privind limitele validării.
Rezultatul și statusul curent
Proiectul a ajuns la un nivel ridicat de paritate între model și platformă: în iterații intermediare s-a raportat o paritate de profit factor de ordinul a 98,5% pe detecția de Order Block, iar munca ulterioară a vizat închiderea diferenței rămase, care era de sincronizare a momentului de execuție, nu de detecție. Familia de versiuni a evoluat continuu, de la seria V14 și V15 până la V16.4, fiecare pas fiind documentat în antetul fișierelor cu motivația, schimbarea și impactul asupra tranzacțiilor.
În forma actuală, suita oferă un set practic pentru cineva care tranzacționează pe baza Smart Money Concepts: detectori SMC pe TradingView, alerte pe mai multe perechi, o linie complementară de divergențe TD 9+13 și, dincolo de grafic, un backtester care permite verificarea riguroasă a oricărei configurații înainte de a o folosi pe bani reali. Valoarea proiectului nu stă într-un singur indicator spectaculos, ci în disciplina de a alinia ce se vede pe grafic cu ce se poate dovedi numeric.
Cronologie
- 17/05/2026 Screener multi-pereche rearhitecturat la 10 loturi (V2.0), respectând bugetul de apeluri al planului Premium.
- 19/05/2026 V16.0-Strat: model de execuție per-minut prin request.security_lower_tf plus bar magnifier, pentru paritate cu motorul Python.
- 20/05/2026 Extinderea grilei motorului de sweep la 24.000 de configurații per pereche.
- 03/06/2026 V16.2-Strat: stop loss / take profit recalculate din prețul real de umplere, eliminând mirajul geometriei stopului.
- 04/06/2026 V16.3-Strat: dimensionare notională deterministă a pierderii și protecție de o singură intrare pe bară prin varip.
- 12/06/2026 Colectare de date suplimentare (tail) pentru crypto și seriile Dukascopy multi-activ.