Kit de herramientas de acción de precios

Viewing 2 posts - 1 through 2 (of 2 total)
  • Author
    Posts
  • #261476 quote
    NicoGB67
    Participant
    Senior

    Buenos días, me gustaría tener un screener del indicador que subió ayer Iván “Kit de herramientas de acción de precios”; cuando describiendo el indicador en la parte de “aplicaciones prácticas” en el punto 4 dice:

    4.Verificación de coherencia de múltiples módulos. Ejecute los cuatro módulos simultáneamente y busque coincidencias . Si el precio rompe una línea bajista CHoCH, arrastra liquidez alcista por debajo, se sitúa por debajo de una línea de tendencia bajista y genera un bloque de órdenes bajista, todo a la vez, la lectura estructural es unánime. Si solo se activa un módulo, considérelo como evidencia débil.

    Me gustaría que me avisara cuando se produce un CHoCH (alcista o bajista), y a la vez se da un múltiple módulo, y que se den como mínimo dos, indicando el screener cuales de ellos se ha producido; entiendo que si se produce un CHoCH lo más lógico es que en esa vela no tiene porque darse otro de los requisitos pedidos, por lo que el screener (pienso yo) cuando debería avisar es cuando por ejemplo, se rompe una línea de tendencia y mirando unas velas atrás sí se dió un CHoCH, gracias por todo.

    Maricarmen thanked this post
    #261478 quote
    Iván González
    Moderator
    Legend

    En el indicador original, los OB se crean en la misma vela que el CHoCH/BoS (la lógica es “cuando rompe estructura, busca la vela extrema del tramo y márcala como OB”). Por eso no se puede usar el OB como confirmador temporalmente independiente del CHoCH, son el mismo evento. Sí tiene sentido como módulo “el precio está reaccionando dentro de una zona OB”, pero eso convierte el screener en otra cosa. Lo dejo fuera para no añadir ruido y trabajo solo con los tres módulos que sí son señales separables en el tiempo: CHoCH base + sweep de liquidez + ruptura de trendline.

    El screener funciona así:

    • Registra el último CHoCH (alcista o bajista) y mantiene su dirección.
    • Registra el último sweep de liquidez con su dirección (sweep de liquidez arriba = bajista; sweep de liquidez abajo = alcista).
    • Registra la última ruptura de trendline con su dirección (close cruza TL bajista por arriba = alcista; cruza TL alcista por abajo = bajista).
    • Dispara cuando hay un confirmador (sweep o ruptura de TL) dentro de las 2 últimas velas Y existe un CHoCH previo en las 10 velas anteriores que apunta en la misma dirección.

    El screener avisa en la vela del segundo módulo, no antes. Si las 3 señales coinciden (CHoCH + sweep + TL break, todas coherentes) verás Hits = 2. Puedes subir minHits a 2 si solo te interesan los casos con triple confluencia.

    *Aviso para usuarios de Complete (no Premium): con solo 255 barras el screener puede no tener histórico suficiente para que los pivotes centrados (2·liqLen+1 = 61 y 2·tlSens+1 = 41 velas) converjan bien.

    //--------------------------------------------
    // PRC_Price-Action-Toolkit Screener
    // Confluencia: CHoCH reciente + sweep / ruptura TL en la misma direccion
    // Iván González @ www.prorealcode.com
    //--------------------------------------------
    
    // PARAMETROS
    zzLen = 9
    liqLen = 30
    tlSens = 20
    lookback = 10
    signalFreshness = 2
    minHits = 1
    
    // ESTADO - zigzag y CHoCH
    once trendDir = 1
    once drewUp = 0
    once drewDown = 0
    once stateDir = 0
    once lastSHPrice = -1
    once lastSLPrice = -1
    once lastChochBar = -1
    once lastChochDir = 0
    
    // ESTADO - sweep y TL break
    once lastSweepBar = -1
    once lastSweepDir = 0
    once lastTLBreakBar = -1
    once lastTLBreakDir = 0
    once activeBLVal = 0
    once activeULVal = 0
    once tlBearEnd = -1
    once tlBearEndVal = 0
    once tlBearStart = -1
    once tlBearStartVal = 0
    once tlBullEnd = -1
    once tlBullEndVal = 0
    once tlBullStart = -1
    once tlBullStartVal = 0
    
    // ZIGZAG (deteccion unilateral, igual que el indicador)
    toUp = 0
    toDown = 0
    if barindex >= 2 * zzLen then
       if high[zzLen] >= highest[zzLen](high) then
          toUp = 1
       endif
       if low[zzLen] <= lowest[zzLen](low) then
          toDown = 1
       endif
    endif
    
    if trendDir = 1 and toDown = 1 then
       trendDir = -1
    elsif trendDir = -1 and toUp = 1 then
       trendDir = 1
    endif
    
    if barindex > zzLen then
       trendChanged = (trendDir <> trendDir[1])
    else
       trendChanged = 0
    endif
    
    if trendChanged and trendDir = 1 then
       lastSHPrice = high[zzLen]
       drewUp = 0
    endif
    
    if trendChanged and trendDir = -1 then
       lastSLPrice = low[zzLen]
       drewDown = 0
    endif
    
    // CHoCH bajista
    if lastSLPrice > 0 and drewDown = 0 then
       if close < lastSLPrice then
          if stateDir = 0 or stateDir = 1 then
             lastChochBar = barindex
             lastChochDir = -1
          endif
          stateDir = -1
          drewDown = 1
       endif
    endif
    
    // CHoCH alcista
    if lastSHPrice > 0 and drewUp = 0 then
       if close > lastSHPrice then
          if stateDir = 0 or stateDir = -1 then
             lastChochBar = barindex
             lastChochDir = 1
          endif
          stateDir = 1
          drewUp = 1
       endif
    endif
    
    // PIVOTES DE LIQUIDEZ (centrados)
    if barindex >= 2 * liqLen then
       if high[liqLen] = highest[2 * liqLen + 1](high) then
          activeBLVal = high[liqLen]
       endif
       if low[liqLen] = lowest[2 * liqLen + 1](low) then
          activeULVal = low[liqLen]
       endif
    endif
    
    // SWEEP: high barre pero close vuelve dentro
    if activeBLVal > 0 then
       if high > activeBLVal then
          if close < activeBLVal then
             lastSweepBar = barindex
             lastSweepDir = -1
          endif
          activeBLVal = 0
       endif
    endif
    
    if activeULVal > 0 then
       if low < activeULVal then
          if close > activeULVal then
             lastSweepBar = barindex
             lastSweepDir = 1
          endif
          activeULVal = 0
       endif
    endif
    
    // TRENDLINES (valuewhen pattern, igual que el indicador)
    if barindex >= 2 * tlSens then
       if high[tlSens] = highest[2 * tlSens + 1](high) then
          tlBearStart = tlBearEnd
          tlBearStartVal = tlBearEndVal
          tlBearEnd = barindex - tlSens
          tlBearEndVal = high[tlSens]
       endif
       if low[tlSens] = lowest[2 * tlSens + 1](low) then
          tlBullStart = tlBullEnd
          tlBullStartVal = tlBullEndVal
          tlBullEnd = barindex - tlSens
          tlBullEndVal = low[tlSens]
       endif
    endif
    
    // RUPTURA TL bajista por arriba (alcista)
    if tlBearStart > 0 and tlBearEnd > tlBearStart then
       tlBearSlope = (tlBearEndVal - tlBearStartVal) / (tlBearEnd - tlBearStart)
       if tlBearSlope < 0 then
          tlBearExtVal = tlBearEndVal + tlBearSlope * (barindex - tlBearEnd)
          tlBearExtPrev = tlBearEndVal + tlBearSlope * (barindex - 1 - tlBearEnd)
          if close > tlBearExtVal and close[1] <= tlBearExtPrev then
             lastTLBreakBar = barindex
             lastTLBreakDir = 1
          endif
       endif
    endif
    
    // RUPTURA TL alcista por abajo (bajista)
    if tlBullStart > 0 and tlBullEnd > tlBullStart then
       tlBullSlope = (tlBullEndVal - tlBullStartVal) / (tlBullEnd - tlBullStart)
       if tlBullSlope > 0 then
          tlBullExtVal = tlBullEndVal + tlBullSlope * (barindex - tlBullEnd)
          tlBullExtPrev = tlBullEndVal + tlBullSlope * (barindex - 1 - tlBullEnd)
          if close < tlBullExtVal and close[1] >= tlBullExtPrev then
             lastTLBreakBar = barindex
             lastTLBreakDir = -1
          endif
       endif
    endif
    
    // EVALUACION FINAL
    chochEnLookback = 0
    if lastChochBar >= 0 then
       if (barindex - lastChochBar) <= lookback then
          chochEnLookback = 1
       endif
    endif
    
    sweepFresco = 0
    if lastSweepBar >= 0 then
       if (barindex - lastSweepBar) <= signalFreshness then
          sweepFresco = 1
       endif
    endif
    
    tlBreakFresco = 0
    if lastTLBreakBar >= 0 then
       if (barindex - lastTLBreakBar) <= signalFreshness then
          tlBreakFresco = 1
       endif
    endif
    
    sweepConfirma = 0
    if chochEnLookback = 1 and sweepFresco = 1 then
       if lastSweepDir = lastChochDir then
          if lastChochBar <= lastSweepBar then
             sweepConfirma = 1
          endif
       endif
    endif
    
    tlConfirma = 0
    if chochEnLookback = 1 and tlBreakFresco = 1 then
       if lastTLBreakDir = lastChochDir then
          if lastChochBar <= lastTLBreakBar then
             tlConfirma = 1
          endif
       endif
    endif
    
    hits = sweepConfirma + tlConfirma
    chochAge = barindex - lastChochBar
    disparo = hits >= minHits
    
    SCREENER[disparo](lastChochDir AS "CHoCH", chochAge AS "Bars", sweepConfirma AS "Sweep", tlConfirma AS "TL", hits AS "Hits")
    



    NicoGB67, robertogozzi and Maricarmen thanked this post
Viewing 2 posts - 1 through 2 (of 2 total)
  • You must be logged in to reply to this topic.

Kit de herramientas de acción de precios


ProScreener: Buscadores de Mercado y Rastreo

New Reply
Author
author-avatar
NicoGB67 @nicogb67 Participant
Summary

This topic contains 1 reply,
has 2 voices, and was last updated by Iván González
1 week ago.

Topic Details
Forum: ProScreener: Buscadores de Mercado y Rastreo
Language: Spanish
Started: 05/22/2026
Status: Active
Attachments: No files
Logo Logo
Loading...