//@version=6 // Setup Windows — alleen de vensters die in de meting overeind bleven. // Geen cyclusraster, geen derden, geen ruis. Eén setup per venster per dag. // // Structuur per venster (40 minuten): // eerste 13m20s -> zet de range // daarna -> 3-minuut BODY close buiten die range = bevestiging // stop -> achter het tegenoverliggende extreem // doel -> 1:1 van de range // // Richting bepaal JIJ met je narratief. Dit tekent alleen waar en wat. // Anker 18:00 NY. Verschuif-toets ingebouwd voor de controletest. indicator("Setup Windows", "Setups", overlay = true, max_lines_count = 500, max_labels_count = 500, max_boxes_count = 500) gW = "Vensters (New York)" w1000 = input.bool(true, "10:00 · 5★ · 90,5% (n=2.713)", group = gW) w1200 = input.bool(true, "12:00 · 5★ · niet in de meting", group = gW) w0920 = input.bool(false, "09:20 · 82,0% (n=2.881)", group = gW) w0400 = input.bool(false, "04:00 · 88,3% (n=2.520)", group = gW) w0320 = input.bool(false, "03:20 · 78,2% (n=2.752)", group = gW) gT = "Toets" offsetMin = input.int(0, "Alle vensters verschuiven (minuten)", minval = -120, maxval = 120, step = 10, group = gT, tooltip = "Voor de controletest. Zet op 20 en draai dezelfde regels.\n" + "Presteert het verschoven venster net zo goed, dan handel je de sessie en niet de cyclus.") gS = "Structuur" vensterMin = input.int(40, "Vensterlengte (min)", minval = 5, maxval = 240, group = gS) rangeSec = input.int(800, "Range-deel (sec)", minval = 60, maxval = 7200, step = 20, group = gS, tooltip = "800 = 13m20s, het eerste derde van 40 minuten.") confTF = input.string("3", "Bevestigingscandle", options = ["1","3","5","15"], group = gS) toonDoel = input.bool(true, "1:1 doel tonen", group = gS) gK = "Kleuren" kNeutraal = input.color(#5f7080, "Venster / range", group = gK) kBull = input.color(#1f7a4d, "Bullish", group = gK) kBear = input.color(#a33a3a, "Bearish", group = gK) kStop = input.color(#a33a3a, "Stop", group = gK) kDoel = input.color(#1f7a4d, "Doel", group = gK) vulOp = input.int(93, "Venster doorzichtigheid", minval = 80, maxval = 99, group = gK) bewaar = input.int(20, "Setups bewaren", minval = 3, maxval = 100, group = gK) string tz = "America/New_York" int tfSec = timeframe.in_seconds() int confSec = timeframe.in_seconds(confTF) bool confKan = confSec >= tfSec bool confDicht = ta.change(time(confTF)) != 0 int sod = hour(time, tz) * 3600 + minute(time, tz) * 60 + second(time, tz) int venSec = vensterMin * 60 // ── welk venster is nu actief? (ze overlappen niet) actiefStart(int s0) => int s = s0 + offsetMin * 60 s := s < 0 ? s + 86400 : s % 86400 sod >= s and sod < s + venSec ? s : -1 int vStart = -1 string vNaam = "" if w1000 and actiefStart(36000) >= 0 vStart := actiefStart(36000) vNaam := "10:00" if w1200 and actiefStart(43200) >= 0 vStart := actiefStart(43200) vNaam := "12:00" if w0920 and actiefStart(33600) >= 0 vStart := actiefStart(33600) vNaam := "09:20" if w0400 and actiefStart(14400) >= 0 vStart := actiefStart(14400) vNaam := "04:00" if w0320 and actiefStart(12000) >= 0 vStart := actiefStart(12000) vNaam := "03:20" bool inVenster = vStart >= 0 bool inRange = inVenster and sod < vStart + rangeSec // ── staat var array lns = array.new() var array