Estrategia de ruptura diaria interna de Williams

INSIDE DAY BREAKOUT STOP LOSS FPO
Fecha de creación: 2025-10-11 16:55:28 Última modificación: 2025-10-11 16:55:28
Copiar: 0 Número de Visitas: 212
2
Seguir
319
Seguidores

Estrategia de ruptura diaria interna de Williams Estrategia de ruptura diaria interna de Williams

¿A qué está jugando esta estrategia?

La estrategia es como jugar al juego del gato y el gato escondido en la bolsa de valores, cuando el mercado tiene un “día de envasado” (es decir, las fluctuaciones de hoy están completamente cubiertas por las de ayer), es como si el mercado estuviera haciendo un gran truco y se estuviera preparando para un gran estallido.

Esta estrategia se ha diseñado para capturar los momentos de ruptura que “no se pueden contener”, especialmente los lunes, jueves y viernes, que son los “días de oro”.

La lógica central de la política de 🔍 es muy simple

Imagínese que el mercado es como un resorte comprimido:

  • Ayer fue un “día envuelto” (completamente envuelto en el día anterior).
  • El otro día fue un gran día (muchos están emocionados)
  • El precio de apertura hoy está por debajo de la resistencia crítica

Cuando el precio ha tocado los máximos de los últimos 3 ciclos, la estrategia es entrar de inmediato y hacer más, como si se liberara un resorte.

Control de riesgos de la levadura: dos cerraduras de seguridad

La primera cerradura: Detención fija En el caso de que el cliente no tenga una cuenta bancaria, puede optar por un límite de pérdidas de puntos o un porcentaje de pérdidas, como si se fijara un “límite de pérdidas” y no sea codicioso.

El segundo bloqueo: la salida de la FPO de la ley ¡Es el lugar más inteligente! ¡Cuando se abre un día, se gana y se cierra de inmediato! ¡Es como la sabiduría de decir adiós y cobrar, sin esperar a que el mercado se arrepienta!

¿Por qué elegir un día de transacción específico?

La estrategia es que el comercio sólo se realice los lunes, jueves y viernes, y no es una elección al azar!

  • Lunes: Establecer el rumbo de la nueva semana
  • Jueves: Días de datos importantes
  • El viernes: el día de la transferencia de fondos

¡Evite los “días tranquilos” de los martes y los miércoles, elige los días con historias!

¿Para quién es esta estrategia?

Si usted es de los que prefieren entrar y salir rápidamente y no desean perder el día, esta estrategia está hecha para usted: con una señal de entrada clara, reglas de stop loss claras y un mecanismo de salida inteligente para ganar.

Recuerde: el mercado es como un resorte: cuanto más apretado, más alto se dispara!

Código Fuente de la Estrategia
/*backtest
start: 2025-01-01 00:00:00
end: 2025-10-09 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BNB_USDT","balance":500000}]
*/

//@version=5
strategy("Larry Williams Bonus Track Pattern", overlay=true)

//──────────────────────────────────
// Inputs
//──────────────────────────────────
useDayFilter = input.bool(true, "Trade only Mon/Thu/Fri")
sl_type      = input.string("Points", "Stop Loss Type", options=["Points","Percent"])
sl_value     = input.float(1.0, "Stop Loss Value (points or %)", step=0.1, minval=0.0)
debugPlot    = input.bool(false, "Show Levels")

//──────────────────────────────────
// DAILY SERIES for SIGNAL
//──────────────────────────────────
hD = request.security(syminfo.tickerid, "D", high,  lookahead=barmerge.lookahead_off)
lD = request.security(syminfo.tickerid, "D", low,   lookahead=barmerge.lookahead_off)
oD = request.security(syminfo.tickerid, "D", open,  lookahead=barmerge.lookahead_off)
cD = request.security(syminfo.tickerid, "D", close, lookahead=barmerge.lookahead_off)

// Inside bar (yesterday) and prior bar (two days ago) is bullish
inside_prev         = hD[1] < hD[2] and lD[1] > lD[2]
prev_of_inside_bull = cD[2] > oD[2]

// Relevant highs: inside (t-1) + two prior bars (t-2, t-3)
inside_high        = hD[1]
max_pre_inside_two = math.max(hD[2], hD[3])
entry_stop_price   = math.max(inside_high, max_pre_inside_two)   // highest of the last 3 bars

//──────────────────────────────────
// DAILY LOGIC (first bar of the day)
//──────────────────────────────────
isNewDay = ta.change(time("D"))     // true on the FIRST bar of each day
dayOpen  = open                      // real daily open
dow      = dayofweek                 // day of week (works intraday)

passDay  = not useDayFilter or (dow == dayofweek.monday or dow == dayofweek.thursday or dow == dayofweek.friday)
open_ok  = dayOpen < inside_high and dayOpen < max_pre_inside_two

// Valid setup ONLY for the day immediately after the inside bar
longSetupToday = isNewDay and passDay and inside_prev and prev_of_inside_bull and open_ok

//──────────────────────────────────
// Helper function to create a “day identifier” as a numeric value
//──────────────────────────────────
getDayId() =>
    year(time) * 10000 + month(time) * 100 + dayofmonth(time)

//──────────────────────────────────
// Pending order management / exact entry the day after inside bar
//──────────────────────────────────
var float entryPrice = na
var int entryDayId = na

if isNewDay
    // Cancel any pending stop from the previous day (TIF: 1 day)
    strategy.cancel("LE")

    // If today is the next day after inside and open is valid:
    if longSetupToday and strategy.position_size == 0
        if dayOpen >= entry_stop_price
            // Gap above stop → enter at MARKET on today’s open
            strategy.entry("LE", strategy.long)
        else
            // No gap → place a STOP valid only for today
            strategy.entry("LE", strategy.long, stop=entry_stop_price)

// Record the entry day when position opens
enteredNow = strategy.position_size > 0 and strategy.position_size[1] == 0
if enteredNow
    entryPrice := strategy.position_avg_price
    entryDayId := getDayId()

//──────────────────────────────────
// Fixed Stop Loss
//──────────────────────────────────
if strategy.position_size > 0
    avg = strategy.position_avg_price
    sl_price = sl_type == "Points" ? (avg - sl_value) : (avg * (1.0 - sl_value/100.0))
    strategy.exit(id="SL", from_entry="LE", stop=sl_price)
else
    strategy.cancel("SL")

//──────────────────────────────────
// FPO: Close on the FIRST profitable open AFTER entry day
// (never on the same day)
//──────────────────────────────────
if isNewDay and strategy.position_size > 0 and not na(entryDayId)
    if getDayId() > entryDayId and dayOpen > strategy.position_avg_price
        strategy.close("LE", comment="FPO")

//──────────────────────────────────
// Optional Plots
//──────────────────────────────────
plot(debugPlot ? inside_high        : na, "Inside High (D-1)")
plot(debugPlot ? max_pre_inside_two : na, "High (D-2/D-3)")
plot(debugPlot ? entry_stop_price   : na, "Entry (max of last 3 highs)", linewidth=2)