v35 ZECUSDT · 30m Pine v6
TreeSys · Sistema algorítmico de trading

Layers v35 — Documentación técnica y tesis de inversión

Seguidor de tendencia por ruptura de consolidación sobre futuros de criptomonedas. v35: detección de rangos adaptativa por ATR y ratio de eficiencia, con la zona macro convertida en fuente de señal además de filtro.

Perfil: BINANCE:ZECUSDT · 30m Motor: Layers_v35.pinescript (Pine v6) Auditoría: pendiente de portar Autor: José Ernesto Morales Ventura

Sistema algorítmico de trading para futuros de criptomonedas · Perfil actual: BINANCE:ZECUSDT · 30 minutos

Autor: José Ernesto Morales Ventura · TreeSys (treesys.shop) Motor: Layers_v35.pinescript (indicator "LayersV35", Pine Script v6) · Auditoría: Layers_v34_strategy_check.pinescript (strategy — pendiente de portar a v35) Ejecución: TradingView → webhook TreeSys → Binance USDT-M Futures Documento para público técnico e inversionistas. No constituye asesoría financiera.


1Resumen ejecutivo

Layers v34 es un sistema seguidor de tendencia por ruptura de consolidación: detecta zonas donde el precio se comprime (rangos), entra cuando el precio rompe la zona con el momento a favor, y gobierna la posición con una jerarquía de seis mecanismos de salida diseñados para cortar rápido las operaciones malas y dejar correr las buenas.

Instantánea del perfil en producción (ZECUSDT, 30m, ventana de 12 meses, simulación con apalancamiento 20× y comisiones de Binance):

Métrica Valor Lectura
Órdenes simuladas ~501 ≈ 1.4 operaciones/día — muestra estadísticamente significativa
Win Rate 50.3% La mitad de las entradas pierde por diseño (ver §2)
Drawdown máximo 19.1% Dentro de la banda aceptable (≤25%) para estrategias retail apalancadas
Resultado simulado +$8,500 – $10,100 / 12 meses Con margen fijo de $80/orden (sin interés compuesto), capital de referencia $1,000
Promedio por orden ≈ +$17 ≈ +21% del margen por orden, netas de comisiones
Score del optimizador 31.2 (base) → 43.9 alcanzable score = WinRate% − MaxDD% (ver §8)

El sistema es 100% mecánico: cada regla de este documento es una condición booleana en el código, verificable línea por línea, y toda la contabilidad (win rate, drawdown, Kelly, Sharpe, Sortino) se calcula sobre las mismas órdenes que dispararía el webhook.


2Filosofía: las pérdidas son parte del sistema

Layers no intenta ganar todas las entradas. Su ventaja no está en la tasa de acierto sino en la asimetría del resultado: las operaciones ganadoras generan, en promedio, mucho más de lo que cuestan las perdedoras. Las pérdidas no son fallos del sistema — son el costo operativo presupuestado de estar presente cuando la tendencia sí despega.

La matemática que lo sostiene es la esperanza por operación:

EV = WR × GananciaMedia − (1 − WR) × PérdidaMedia

Con un Win Rate de ~50%, el sistema es rentable siempre que el payoff ratio R (ganancia media ÷ pérdida media) supere 1.0 — y toda la arquitectura de Layers empuja R hacia arriba:

Consecuencias que el inversionista debe internalizar:

  1. Rachas perdedoras de 5–8 operaciones son estadísticamente normales con WR ~50% y ocurren varias veces al año. La tabla del sistema las contabiliza (racha perdedora máxima) y el tamaño de posición (§6) está calibrado para absorberlas.
  2. El drawdown no es una anomalía, es el precio de la asimetría. El perfil actual convive con un DD máximo de 19.1%; el criterio de salud del sistema lo clasifica: 💖 ≤10% excelente · ✅ ≤25% aceptable · ❌ >25% excesivo.
  3. La métrica correcta no es "cuántas gana" sino cuánto gana cuando gana. Por eso el tablero prioriza Profit Factor, esperanza matemática, Recovery Factor y Sortino (que castiga solo la volatilidad de los días perdedores) por encima del Win Rate.

3Arquitectura de la señal

3.1 Modo Heikin-Ashi obligatorio

Toda la lógica se evalúa sobre velas Heikin-Ashi del propio símbolo/temporalidad (request.security(ticker.heikinashi(...))), sin importar el tipo de vela del gráfico. Las HA promedian el ruido intra-vela y hacen las pendientes y rupturas más estables. realClose conserva el precio real para las integraciones; los fills de SL/TP se contabilizan al nivel exacto tocado.

3.2 Los cuatro bloques del motor

Bloque Qué aporta Parámetros clave
Detector de rango (motor de entradas) Encuentra consolidaciones. v35: ancho en ATR + ausencia de progreso (ratio de eficiencia) + longitud variable, medido con mechas HA. La ruptura de la caja ES la señal. rangeAdaptive=on, rangeAtrMult=1.8, rangeMaxER=0.55, rangeMinLen/MaxLen=3/12
Ichimoku modificado (SMA Senkou) Senkou A/B suavizadas por SMA definen el sesgo estructural; sus cruces y pendientes gobiernan las salidas ICL/ICS y OUT. Tenkan 3, Kijun 15, Senkou 40
Squeeze Momentum (LazyBear) Oscilador de momento (regresión lineal sobre BB 20/2.0 + KC 40/1.5 True Range). Filtra entradas y confirma salidas. umbrales entrada ±100 (abierto), salida en cruce de 0
Zona macro de turbulencia Un segundo rango más ancho que contiene a los rangos internos: mientras viva, las rupturas internas se ignoran como ruido. v35: mismo criterio adaptativo con parámetros propios, y su ruptura genera entrada además de dejar de bloquear. useMacroRange=on, macroAdaptive=on, macroAtrMult=4.0, macroBreakEntry=on

3.3 Cadena de entrada

Una entrada BUY/SELL exige que todas estas condiciones sean verdaderas en la misma vela HA confirmada:

señalAlcista = breakoutUp  O  (macroBreakEntry Y macroBreakUp)     ← [v35] dos fuentes

entryBuy  = señalAlcista Y ventanaActiva Y posiciónLibre
            Y momento≥umbral Y direcciónPermitida
            Y pendienteSenkouOK Y fueraDeZonaMacro
entrySell = espejo con breakoutDown / macroBreakDown

[v35] Dos fuentes de señal. Hasta v34 solo la ruptura de un rango normal generaba entrada; macroBreakUp/macroBreakDown se calculaban y se descartaban. Ahora la ruptura de la zona macro es una señal de pleno derecho, gobernada por macroBreakEntry.

No hay conflicto con el gate fueraDeZonaMacro: en la misma vela en que la zona se rompe, inConsoM pasa a false, así que el filtro deja pasar la entrada que él mismo acaba de habilitar.

Nunca hay dos posiciones abiertas a la vez, y una salida y una entrada no coinciden en la misma vela (el flip se difiere a la siguiente).


3.4 [v35] Metodología de detección de rangos

Por qué se cambió el criterio

El criterio de v34 declaraba consolidación cuando N velas consecutivas tenían sus cierres HA dentro de un % del precio. Tres problemas estructurales:

Defecto Consecuencia observada
Mide solo cierres, ignora las mechas Una zona de cierres pegados con mechas largas se marcaba como consolidación. Eso no es compresión, es indecisión violenta.
Umbral en % del precio Un 1% de ZEC a 480 USD son 4,80 USD, cifra ajena a la volatilidad del momento. Tras un impulso fuerte una pausa legítima excede el umbral; en calma cualquier tramo lo cumple.
N fija Los rangos reales duran lo que duran. Con N=10, una pausa de 6 velas arrastra 4 velas del impulso y el rango de cierres nunca cabe en el umbral: no se detecta nada.

Había además un cuarto defecto, de implementación: la comprobación de no solapar el rango anterior se evaluaba después de elegir la ventana. Si la ventana elegida pisaba la caja previa, se descartaba la detección entera — aunque una ventana más corta hubiera encajado. En una escalera de impulso-pausa-impulso eso se come sistemáticamente las pausas consecutivas.

Las tres condiciones de v35

Una ventana de w velas forma rango si cumple las tres a la vez:

1. ANCHO      (max(haHigh, w) − min(haLow, w))  ≤  rangeAtrMult × ATR(rangeAtrLen)
2. EFICIENCIA |haClose − haClose[w−1]|  /  Σ|haClose[i] − haClose[i−1]|  ≤  rangeMaxER
3. SIN SOLAPE (bar_index − w + 1)  >  rangeLastRight + rangeMinGap

La condición 2 es la clave. Es el ratio de eficiencia de Kaufman: recorrido neto dividido entre recorrido total. En una tendencia el precio avanza casi todo lo que se mueve y el ratio se acerca a 1; en un rango va y viene sin llegar a ningún sitio y cae cerca de 0. Es lo que distingue una pausa de un tramo direccional del mismo ancho, y es lo que le faltaba al criterio clásico.

TENDENCIA                          RANGO

      ┌─┐                          ┌─┐   ┌─┐
    ┌─┘ └─┐                      ┌─┘ └─┬─┘ └─┐
  ┌─┘     └─┐                    │     │     │
┌─┘         └─┐                  └─┬─┘ └─┬─┘

neto ≈ total  →  ER ≈ 0.9        neto ≈ 0  →  ER ≈ 0.1
RECHAZADO                        ACEPTADO

Búsqueda de la ventana

Se recorre una sola vez hacia atrás acumulando máximo, mínimo y recorrido total. Cada iteración evalúa la ventana de tamaño i+1; como el resultado se sobrescribe al avanzar, al terminar queda la ventana más larga que cumple las tres condiciones. Coste O(rangeMaxLen) por vela.

                          ventanas evaluadas (de menor a mayor)
   ┌───┐                  w=3  ✗ (ER alto)
   ┌───────┐              w=5  ✓  ← candidata
   ┌───────────┐          w=8  ✓  ← candidata, más larga: GANA
   ┌───────────────┐      w=11 ✗ (ancho > 1.8 ATR)
   └─────────────────────────────────────────► bar_index

Ciclo de vida: idéntico a v34

Solo cambió la formación. Una vez creada la caja, todo lo demás es el código de v34 sin tocar:

Ciclo de vida de un rango

Solo cambió la formación (izquierda). Todo lo demás es el código de v34 sin tocar.

Sin rango esperando 3 condiciones Rango vivo caja dibujada breakoutUp haClose > rangeTop · rangeOs = 1 breakoutDown haClose < rangeBot · rangeOs = −1 Rango vencido rangeMaxAhead superado forma
Formación [v35]: ancho ≤ atrMult × ATR, ratio de eficiencia ≤ maxER y sin solapar la caja anterior. Resto: idéntico a v34 — la ruptura se evalúa con el cierre Heikin-Ashi contra los límites de la caja.

Es decir: la ruptura se sigue evaluando con el cierre HA contra los límites de la caja, la vigencia rangeMaxAhead sigue funcionando igual, y rangeTop / rangeBot / rangeOs / breakoutUp / breakoutDown / rangeFormedNow conservan su semántica. Por eso las entradas, las salidas y la contabilidad no cambian de significado.

Zona macro: mismo motor, distinta escala

La zona macro usa el mismo algoritmo con parámetros propios. La diferencia conceptual importa:

Rango normal Zona macro
Qué busca Una pausa breve dentro de una tendencia Una zona ancha de vaivén sin dirección
Ancho típico ≤ 1.8 ATR ≤ 4.0 ATR
Longitud 3 a 12 velas 12 a 48 velas
Papel Genera entradas al romperse Bloquea entradas mientras vive; genera entrada al romperse [v35]

Una turbulencia es ancha por definición: lo que la caracteriza no es ser estrecha, sino que el precio no progresa dentro de ella. De ahí que su atrMult sea alto y el filtro que de verdad la define sea el ratio de eficiencia.

Doble papel de la zona macro [v35]

Bloquea mientras vive; genera señal al romperse.

Zona macro viva turbulencia detectada Rupturas internas bloqueadas macroEntryOk = false haClose rompe la zona inConsoM = false Entrada por ruptura macro macroBreakEntry Entradas internas desbloqueadas
La misma vela que mata la zona habilita las dos vías de entrada: la propia ruptura macro y las rupturas internas que estaban filtradas.

4Ciclo de vida de una orden y jerarquía de salidas

Prioridad de salida (de mayor a menor): SL / TP → BE-OUT → ICL/ICS → OUT por pendiente. Cada mecanismo lleva guardas que impiden duplicar cierres en la misma vela.

# Salida Dispara cuando Papel en la asimetría
1 SL (3%) High/Low HA toca entrada × (1∓3%). Se contabiliza en la vela siguiente al nivel exacto. Techo duro de la pérdida: −3% de precio ≈ −60% del margen a 20×
2 TP (100%) High/Low HA toca entrada × (1±100%). Inoperante a propósito: el lado ganador no se tapa
3 BE-OUT Pasadas ≥ beOutMinBars (100) velas desde la entrada, si el cierre HA está EN CONTRA de la posición, cierra al HA actual buscando resultado ≈ 0. Recicla capital atrapado en posiciones estancadas sin regalarle la pérdida al mercado
4 ICL / ICS Pasadas ≥ ichiOutMinBars (1) velas: (a) SMA Senkou alineadas en contra tras el margen ichiExitN (2); o (b) Momento cruza su umbral de salida con pendiente en contra; o (c) un rango formado tras la entrada rompe en contra. Corta operaciones malas ANTES de que lleguen al SL
5 OUT por pendiente Pasadas ≥ slopeOutMinBars (4) velas: la pendiente de la SMA Senkou A (SenkouA − SenkouA[24]) va en contra y su valor absoluto supera 0.25. Detecta el agotamiento de la tendencia y protege la ganancia acumulada
6 Rango contrario Un rango formado después de la entrada rompe en contra, con confirmación Ichimoku + Momento. Señal estructural de reversión

Re-entradas (mantienen al sistema montado en la tendencia):


5Diccionario de parámetros (valores del perfil ZECUSDT)

Los valores marcados [configurado] son los activos en producción; el resto son defaults del script disponibles para calibración.

5.1 Simulación de trading

Parámetro Valor Definición técnica y efecto
apalancamiento 20× [configurado] Multiplicador del nocional. Sube el ROE por operación Y el riesgo de liquidación por igual. Con SL 3%, 20× deja ~1 punto de colchón antes de la liquidación (~4% adverso en margen aislado). No subir sin acercar el SL.
montoApostado $80 [configurado] Margen destinado a cada orden. Nocional = 80 × 20 = $1,600 por operación.
capitalInicial $1,000 [configurado] Base del equity para drawdown, Kelly y retornos diarios.
takeProfit 100% [configurado] % de movimiento de PRECIO (no de ROE). A 100% actúa desactivado: las salidas las gobierna la lógica técnica. Bajarlo tapa el lado ganador y destruye la asimetría (§2).
stopLoss 3% [configurado] Invalidación dura de la señal, como % de precio. A 20× equivale a −60% del margen. Es el peor caso por orden; las salidas técnicas suelen actuar antes.
signalDelay 0 Velas de espera para confirmar un evento. 1–2 filtra mechas que cruzan y se devuelven, al costo de entrar más tarde.
evalMode / evalMonths Últimos 12 meses [configurado] Ventana de evaluación: qué velas generan señales y cuentan en la tabla.

5.2 Detector de rango (motor de entradas)

Modo adaptativo [v35] — activo en producción

Parámetro Valor Definición y efecto
rangeAdaptive on [configurado] Interruptor del criterio. off devuelve el comportamiento de v34 bit a bit.
rangeUseWicks on [configurado] Mide y dibuja con haHigh/haLow en vez de haClose. Cajas fieles a lo que se ve, pero más anchas: la ruptura exige un movimiento algo mayor.
rangeMinLen / rangeMaxLen 3 / 12 [configurado] Rango de longitudes a probar. Se elige la ventana más larga que cumpla. Subir MaxLen permite cajas más extensas; subir MinLen descarta pausas de 2-3 velas.
rangeAtrMult 1.8 [configurado] Ancho máximo en múltiplos de ATR. Sustituye al % del precio: se adapta solo a la volatilidad y al nivel de precio. Primer tornillo si sobran o faltan cajas.
rangeAtrLen 14 Periodo del ATR de referencia.
rangeMaxER 0.55 [configurado] Ratio de eficiencia máximo (0–1). Es el filtro que más detecciones descarta: si te faltan rangos, súbelo antes de tocar el ancho. 0.35 = solo rangos muy planos; 0.65 = admite pausas con deriva.
rangeMinGap 1 [configurado] Velas de separación exigidas entre el fin de una caja y el inicio de la siguiente. 0 permite cajas consecutivas pegadas.

Modo clásico (legado v34)

Parámetro Valor Definición y efecto
rangeN 6 Velas consecutivas para declarar consolidación. Solo se usa con rangeAdaptive=off.
rangeMaxPct 2.1% Amplitud máxima como % del precio. Solo con rangeAdaptive=off.
rangeMaxAhead 0 (sin límite) Vigencia de la caja. Aplica en ambos modos. 0 = la caja vive hasta que un cierre la rompe.

Orden de calibración recomendado: rangeMaxER → rangeMinGap → rangeAtrMult → longitudes. El diagnóstico del indicador auxiliar RANGE_DETECT_v2.pinescript muestra en la última vela el ancho actual en ATR y el ER frente a sus umbrales: es la forma rápida de saber cuál de los dos está rechazando.

5.3 Zona macro de turbulencia

Parámetro Valor Definición y efecto
useMacroRange on [configurado] Activa la zona. Mientras viva, las rupturas de los rangos internos NO generan entradas (ruido de turbulencia). No afecta salidas ni re-entradas.
macroAdaptive on [v35, configurado] Mismo criterio adaptativo que el rango normal, con parámetros propios. off = criterio clásico de v34.
macroUseWicks on [v35] Mide con haHigh/haLow.
macroMinLen / macroMaxLen 12 / 48 [v35] Longitudes a probar. Deben ser claramente mayores que las del rango normal para que la zona contenga varios rangos internos.
macroAtrMult 4.0 [v35] Ancho máximo en ATR — más del doble que el rango normal. Una turbulencia es ancha por definición; lo que la caracteriza es la falta de progreso, no la estrechez.
macroAtrLen 14 Periodo del ATR de la zona macro.
macroMaxER 0.45 [v35] Ratio de eficiencia máximo. Es el filtro que separa una turbulencia de un tramo de tendencia del mismo ancho.
macroMinGap 0 [v35] Separación entre zonas macro consecutivas.
macroBreakEntry on [v35, configurado] La ruptura de la zona macro genera entrada, igual que la de un rango normal. En v34 macroBreakUp/macroBreakDown se calculaban y se descartaban: la zona solo servía para bloquear.
macroRangeN / macroRangeMaxPct 24 / 5.0% Legado: solo se usan con macroAdaptive=off. Siguen alimentando la rejilla macro del optimizador (§8).

Efecto medido al pasar de macro clásica a adaptativa (ZECUSDT 30m): caída pronunciada del número de entradas manteniendo el beneficio casi intacto. El efecto dominante no son las señales nuevas de macroBreakEntry, sino el bloqueo: la macro adaptativa detecta muchas más zonas de turbulencia y filtra rupturas internas que, en conjunto, eran neutras. Beneficio similar con menos operaciones implica menos comisiones (a 20× cada operación cuesta ~2% del margen en fees de ida y vuelta) y menor exposición.

Cómo separar los dos efectos. Anotar órdenes y beneficio en tres pasadas: (1) macroAdaptive=off + macroBreakEntry=off — línea base v34; (2) macroAdaptive=on + macroBreakEntry=off — mide solo el filtro; (3) ambos on — configuración actual. Si el paso 2 ya captura casi toda la mejora, las entradas por ruptura macro no aportan y pueden dejarse apagadas.

5.4 Salidas técnicas

Parámetro Valor Definición y efecto
ichiExitN 2 [configurado] Margen de gracia desde la entrada: velas que se le dan a las SMA Senkou para alinearse a favor (permite entrar con las líneas aún en contra). Cumplido el margen, si siguen en contra, ICL/ICS cierra.
ichiOutMinBars 1 [configurado] Velas mínimas desde la entrada para CUALQUIER salida ICL/ICS (Ichimoku, Momento o rango contrario). Anti-cierre-inmediato.
useSlopeOut on [configurado] Activa la salida OUT por pendiente de la SMA Senkou A.
slopeOutN 24 [configurado] Ventana de la pendiente: SenkouA − SenkouA[24]. N bajo = salidas nerviosas; N alto = tolera giros cortos y sale solo ante deterioro sostenido.
slopeOutMinBars 4 [configurado] Velas mínimas desde la entrada para un OUT. Evita que una pendiente heredada cierre la posición recién abierta.
slopeOutMinAbs 0.25 [configurado] Umbral mínimo del valor absoluto de la pendiente (en unidades de precio). Filtra giros suaves: 0 = solo el signo decide.
useBeOut / beOutMinBars on / 100 [configurado] BE-OUT: pasadas ≥100 velas (≈ 50 horas en 30m), si el cierre HA quedó en contra, cierra al HA actual con resultado ≈ 0. Es el seguro contra posiciones zombis.
useSlopeReentry off Re-entrada opuesta tras un OUT (a favor de la nueva pendiente).

5.5 Confirmación de pendiente en la ENTRADA (opcional, off)

useSlopeEntryConfirm + useSenkouAEntry / useSenkouBEntry (OR entre las activas): exige pendiente Senkou a favor para tomar la ruptura. Solo evalúa el signo (el umbral 0.25 pertenece a la salida). No aplica a re-entradas. En producción está desactivada: la calidad de entrada la aporta el rango + Momento.

5.6 Squeeze Momentum (filtro y confirmador)

Parámetro Valor Papel
useMomFilter on [configurado] Gate general del oscilador.
BB 20 / 2.0 · KC 40 / 1.5 · True Range defaults Geometría del squeeze; el oscilador es la regresión lineal del precio HA contra su media de referencia.
Entrada: LONG si Mom ≥ −100 · SHORT si Mom ≤ +100 abierto [configurado] Con ±100 el gate no bloquea entradas: el Momento actúa sobre todo en las SALIDAS.
Salida: LONG si Mom ≤ 0 · SHORT si Mom ≥ 0 (con pendiente en contra, momSlopeLen=2) [configurado] El cruce de cero con pendiente adversa es la sub-condición (b) de ICL/ICS.

5.7 Ichimoku base

Tenkan 3 · Kijun 15 · Senkou 40, offsets A/B = 1. Las líneas que gobiernan el sistema son las SMA de las Senkou (aShifted/bShifted) — más lentas y estables que el Ichimoku clásico, apropiadas para sostener tendencia en 30m.

5.8 Optimizador integrado [OPT-7]

Parámetro Valor Papel
optDdWeight 1.0 [configurado] Peso del drawdown en el score: score = WinRate% − peso × MaxDD%. Peso 0 = optimizar solo WR.
optMinTr 10 [configurado] Mínimo de órdenes por combinación: una configuración que deja menos de 10 operaciones se descarta (ganaría por suerte estadística).

6Gestión de capital


7Métricas del tablero y cómo leerlas

Métrica Definición Umbral de salud
Win Rate % de órdenes con PnL real ≥ 0 (con leverage y fees) Informativo — no es el objetivo (§2)
Profit Factor Σ ganancias ÷ Σ pérdidas ✅ ≥ 2 · ⚠️ ≥ 1
Esperanza matemática (EV) PnL promedio por orden Debe ser positiva y estable
Drawdown máx. Peor caída del equity realizado desde su pico 💖 ≤10% · ✅ ≤25% · ❌ >25%
Recovery Factor Ganancia total ÷ DD máx. ✅ ≥ 3
Sharpe (anual) Media ÷ desviación de los retornos DIARIOS del equity × √365 (días sin operar cuentan 0) ✅ ≥ 2 · ⚠️ ≥ 1
Sortino (anual) Igual que Sharpe pero la desviación usa SOLO los días negativos (downside deviation, MAR=0) ✅ ≥ 2 · ⚠️ ≥ 1. Si Sortino ≫ Sharpe, la volatilidad del sistema es mayormente "buena" (rachas ganadoras)
Rachas W/L Máx. consecutivas ganadoras/perdedoras Calibran expectativas y tamaño
Kelly / ½K / ¼K Fracción óptima de capital por orden Operar entre ¼K y ½K

La serie de retornos usada por Sharpe/Sortino es honesta: retornos diarios del equity realizado, con los días sin operaciones rindiendo 0 — no se anualiza por frecuencia de trades (que inflaría el ratio en alta frecuencia).


8Optimizador integrado [OPT-7]

El bloque "🔬 OPTIMIZADOR (7 campos)" de la tabla re-simula todas las órdenes virtuales de la ventana variando únicamente los 7 campos de control del sistema, y los evalúa con score = WinRate% − 1.0 × MaxDD% (mínimo 10 órdenes por combinación):

Sección Campos que barre Resultado actual (ZECUSDT 30m)
ACTUAL (base) — WR 50.3% · DD 19.1% · score 31.2
📦 RANGO rangeN × rangeMaxPct Óptimo N=5 · 0.3%: score 31.6 (Δ+0.4) — la configuración actual ya es casi óptima
🌐 MACRO macroRangeN × macroRangeMaxPct Óptimo N=30 · 5%: WR 48.7 · DD 7.6% · score 41.1 (Δ+9.9) con 267 ops — máxima reducción de riesgo
📐 SALIDA OUT slopeOutN × slopeOutMinBars × slopeOutMinAbs Óptimo 16 · 1 · 0.0: WR 55.3 · DD 11.4% · score 43.9 (Δ+12.7) con 501 ops — mayor mejora integral

⚠️ [v35] El optimizador mide el criterio CLÁSICO

Las secciones 📦 RANGO y 🌐 MACRO barren rangeN × rangeMaxPct y macroRangeN × macroRangeMaxPct, que son los parámetros del modo clásico. Con rangeAdaptive o macroAdaptive activados, esas filas siguen midiendo el criterio de v34 y no describen lo que está dibujando el detector.

Mientras el optimizador no se porte a la rejilla adaptativa (atrMult × maxER × longitudes), la calibración del modo adaptativo se hace a mano, comparando la tabla de resumen entre configuraciones. La sección 📐 SALIDA OUT no se ve afectada: es independiente del detector.

Método de uso: aplicar primero la sección de mayor Δ, dejar que la tabla recalcule (ACTUAL pasa a ser la nueva base) y releer las demás secciones — cada una optimiza por separado y el óptimo conjunto no es la suma de los parciales. Advertencia anti-sobreajuste: estos óptimos describen el pasado de ESTE símbolo y temporalidad; validar siempre en la versión strategy (§9) y, de ser posible, fuera de muestra antes de tocar producción.


9Verificación y auditoría

[v35] Estado de la auditoría: Layers_v34_strategy_check.pinescript todavía no incorpora el detector adaptativo. Mientras no se porte, sus resultados corresponden al criterio clásico y no validan la configuración v35 en producción. Es la deuda técnica más relevante de esta versión.

Layers_v34_strategy_check.pinescript replica la lógica exacta del indicator sobre el motor strategy() de TradingView — Heikin-Ashi, filtro macro, gates ichiOutMinBars/slopeOutMinBars, confirmación de pendiente — para contrastar Win Rate, Profit Factor, Drawdown, Sharpe y Sortino contra la contabilidad manual, y exportar el CSV de operaciones con cada cierre etiquetado (TP, SL, BE-OUT, ICL, ICS, OUT, TPC-L/S, SRE-L/S).

Diferencias conocidas y aceptadas: el tester dimensiona en % del equity (compone) mientras el indicator usa margen fijo × leverage; el tester ejecuta stop/limit intrabar a precio real mientras el indicator detecta el toque sobre velas HA y contabiliza en la vela siguiente al nivel exacto. Las señales son idénticas; los fills pueden diferir levemente.


10Cadena de ejecución

TradingView (Layers v35, vela HA confirmada)
   → alerta JSON por webhook (máx. 1 por vela; el cierre tiene prioridad)
      → plataforma TreeSys (validación + registro en /signals)
         → Binance USDT-M Futures (orden de mercado + brackets)

Tipos en el JSON: BUY, SELL, SL, TP y OUT con subtipo en direccion (ICL, ICS, BE-OUT, OUT). Las entradas y los OUT viajan con el cierre HA; SL/TP con el nivel exacto. Al editar el script se debe borrar y recrear la alerta en TradingView.


11Riesgos y descargos


12Registro de cambios v34 → v35

Área v34 v35
Criterio del rango N velas, cierres HA en % del precio Ancho en ATR + ratio de eficiencia + longitud variable, con mechas HA
Anti-solape del rango Evaluado después de elegir la ventana → descartaba la detección entera Evaluado dentro de la búsqueda → prueba ventanas más cortas
Separación entre cajas Implícita (1 vela) Configurable (rangeMinGap, macroMinGap)
Criterio de la zona macro Clásico, N=24 / 5% Adaptativo con parámetros propios (12–48 velas, 4 ATR)
Ruptura de la zona macro Calculada y descartada Genera entrada (macroBreakEntry)
rangeOs en entradas macro No se actualizaba Se refleja el sentido (1 / −1) para las estadísticas por orden
Ciclo de vida del rango — Sin cambios: ruptura por cierre HA, rangeMaxAhead, rangeTop/Bot/Os, rangeFormedNow
Salidas, re-entradas, contabilidad — Sin cambios
Optimizador Rejilla N × % Sin cambios — mide el criterio clásico (ver aviso en §8)

Compatibilidad: poniendo rangeAdaptive=off y macroAdaptive=off y macroBreakEntry=off, v35 reproduce el comportamiento de v34. Los siete parámetros clásicos siguen presentes y operativos.

Archivos de esta versión

Archivo Rol
Layers_v35.pinescript Motor de producción (indicator LayersV35)
Layers_v34.pinescript Versión anterior, congelada como referencia
RANGE_DETECT_v2.pinescript Banco de pruebas del detector adaptativo, con diagnóstico en pantalla
Layers_v34_strategy_check.pinescript Auditoría — pendiente de portar a v35
Layers_v35_Documentation.md Este documento

Layers v35 · José Ernesto Morales Ventura / TreeSys (treesys.shop) · Detección de rangos adaptativa. Perfil documentado: BINANCE:ZECUSDT · 30m · ventana 12 meses.