estrategia · código abierto
Estrategia de cruce de medias de Hull (HMA 9 / 21)
Cruce de medias de Hull (HMA 9 / HMA 21): compra el cruce alcista y sal en el bajista, bracket 2%/6%. Reglas claras, código y backtest con costes reales. 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. - HMA(n) = WMA(2·WMA(close, n/2) − WMA(close, n), round(√n)). Rápida = HMA 9, lenta = HMA 21.
- Entrada: sin posición y cuando la HMA rápida cruza por encima de la lenta, compra en la apertura siguiente.
- Señal de salida: la HMA rápida cruza por debajo de la lenta → cierre.
- 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. |
|---|---|---|---|
Fast HMA Length | 9 | 5 | 50 |
Slow HMA Length | 21 | 20 | 200 |
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("Hull MA Crossover", overlay=true, initial_capital=10000, default_qty_type=strategy.percent_of_equity, default_qty_value=10, commission_type=strategy.commission.percent, commission_value=0.05)
fastLen = input.int(9, "Fast HMA Length", minval=5, maxval=50, step=1)
slowLen = input.int(21, "Slow HMA Length", minval=20, maxval=200, step=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)
colorBg = input.color("color.purple", "Color Bg")
colorDim = input.color("color.maroon", "Color Dim")
colorUp = input.color("color.green", "Color Up")
colorDown = input.color("color.red", "Color Down")
hmaFast = ta.wma(2 * ta.wma(close, fastLen / 2) - ta.wma(close, fastLen), math.round(math.sqrt(fastLen)))
hmaSlow = ta.wma(2 * ta.wma(close, slowLen / 2) - ta.wma(close, slowLen), math.round(math.sqrt(slowLen)))
longSignal = strategy.position_size == 0 and ta.crossover(hmaFast, hmaSlow)
exitSignal = strategy.position_size > 0 and ta.crossunder(hmaFast, hmaSlow)
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="HMA cross down")
p_Fast_HMA = plot(hmaFast, "Fast HMA", color=colorBg, linewidth=2)
p_Slow_HMA = plot(hmaSlow, "Slow HMA", color=colorDim, linewidth=2)
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, "HMA long entry", "Fast HMA crossed above slow HMA")
alertcondition(exitSignal, "HMA exit", "Fast HMA crossed below slow HMA")
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
¿Por qué usar la media de Hull en un cruce?
La HMA está diseñada para reducir el retraso, así que cruza antes que una SMA o EMA de la misma longitud. Antes también significa más cruces falsos: compara número de operaciones y costes.
¿Cruce de HMAs o pendiente de una sola HMA?
Mucha gente opera el cambio de pendiente de la HMA. Este script usa dos HMAs; la versión por pendiente probaría hma > hma[1].