estrategia · código abierto
Estrategia de ruptura del TTM Squeeze
Ruptura TTM Squeeze: compra cuando el squeeze (Bollinger dentro de Keltner) se libera con momentum positivo y sal cuando se vuelve negativo. Reglas y backtest. Deepwick Script ejecuta un subconjunto de Pine Script.
Reglas de entrada y salida
- Solo largos y una posición a la vez (
strategy.position_size == 0antes de entrar). Las señales se evalúan al cierre de la vela; Deepwick ejecuta las órdenes de mercado en la apertura de la vela siguiente. - Squeeze = Bandas de Bollinger (20, 2) dentro del canal de Keltner (20, 1,5). Momentum =
ta.linreg(close − mid, 20, 0), con mid = media entre el punto medio máximo/mínimo de 20 velas y la SMA 20. - Entrada: sin posición, el squeeze estaba activo en la vela anterior y se libera en esta, cierre sobre la media de Bollinger y momentum > 0 → compra en la apertura siguiente.
- Señal de salida: momentum < 0 → cierre (comentario
Momentum faded). - Bracket de protección desde el precio medio de entrada: stop-loss un 2% por debajo y take-profit un 6% por encima (inputs
Stop Loss %yTake Profit %; Take Profit % = 0 desactiva el objetivo). Stops y objetivos se comprueban siguiendo el recorrido de la vela (apertura → extremo más cercano → extremo más lejano → cierre). - Tamaño y costes en
strategy(): capital inicial 10.000, 10% del capital por operación, comisión del 0,05% por ejecución, slippage no definido (0 por defecto). Los backtests guardados pagan además medio spread real en cada ejecución de mercado y de stop.
Referencia del lenguaje: Deepwick Script.
Ajustes por defecto
| Ajuste | Valor | Mín. | Máx. |
|---|---|---|---|
Length | 20 | 5 | 50 |
BB Mult | 2 | 1 | 3 |
KC Mult | 1.5 | 1 | 3 |
Stop Loss % | 2 | 0.5 | 10 |
Take Profit % | 6 | 0 | 20 |
Cómo ejecuta Deepwick esta estrategia
- Las órdenes de mercado se ejecutan en la apertura de la vela siguiente.
- Stops y límites siguen el recorrido de la vela: apertura → extremo más cercano → extremo más lejano → cierre.
- Los gaps se ejecutan en la apertura.
- La comisión se cobra en cada ejecución, y el slippage se aplica a las órdenes de mercado y de stop, según lo definido en
strategy().
Código fuente
Deepwick Script (un subconjunto de Pine Script)
//@version=5
strategy("TTM Squeeze Breakout", overlay=false, initial_capital=10000, default_qty_type=strategy.percent_of_equity, default_qty_value=10, commission_type=strategy.commission.percent, commission_value=0.05)
len = input.int(20, "Length", minval=5, maxval=50, step=1)
bbMult = input.float(2, "BB Mult", minval=1, maxval=3, step=0.1)
kcMult = input.float(1.5, "KC Mult", minval=1, maxval=3, step=0.1)
stopPct = input.float(2, "Stop Loss %", minval=0.5, maxval=10, step=0.1)
tpPct = input.float(6, "Take Profit %", minval=0, maxval=20, step=0.1)
colorUp = input.color("color.green", "Color Up")
colorDown = input.color("color.red", "Color Down")
colorNeutral = input.color("color.gray", "Color Neutral")
[bm, bu, bl] = ta.bb(close, len, bbMult)
[km, ku, kl] = ta.kc(close, len, kcMult)
sqz = bl > kl and bu < ku
mid = math.avg(math.avg(ta.highest(high, len), ta.lowest(low, len)), ta.sma(close, len))
mom = ta.linreg(close - mid, len, 0)
longSignal = strategy.position_size == 0 and sqz[1] and not sqz and close > bm and mom > 0
exitSignal = strategy.position_size > 0 and mom < 0
if longSignal
strategy.entry("Long", strategy.long)
if strategy.position_size > 0
strategy.exit("Risk", stop=stopPct > 0 ? strategy.position_avg_price * (1 - stopPct / 100) : na, limit=tpPct > 0 ? strategy.position_avg_price * (1 + tpPct / 100) : na)
if exitSignal
strategy.close("Long", comment="Momentum faded")
hline(0, "Zero", color=colorNeutral, linestyle=hline.style_dotted)
p_Momentum = plot(mom, "Momentum", color=mom >= 0 ? colorUp : colorDown, style=plot.style_columns)
plotshape(longSignal, "Long", style=shape.triangleup, location=location.belowbar, color=colorUp, text="L")
plotshape(exitSignal, "Exit", style=shape.triangledown, location=location.abovebar, color=colorDown, text="X")
alertcondition(longSignal, "TTM squeeze long entry", "Squeeze released with bullish momentum")
alertcondition(exitSignal, "TTM exit", "Momentum turned negative")
Pruébala en Deepwick
- Abre un gráfico de cualquier cripto o CFD.
- Pulsa «Scripts» y añade esta estrategia.
- Pulsa «Run» y revisa las operaciones en el Strategy Tester.
Preguntas frecuentes
¿Cómo funciona el TTM Squeeze?
Cuando las Bandas de Bollinger se contraen dentro del canal de Keltner, la volatilidad está comprimida. La liberación es la vela en que vuelven a salir; el histograma de momentum da la dirección.
¿Por qué hay tan pocas operaciones?
Necesita en la misma vela la liberación del squeeze, cierre sobre la media y momentum positivo. En temporalidades altas es raro: mira el número de operaciones antes de leer las estadísticas.