Estrategia de trading de ruptura basada en el canal de supertendencia


Fecha de creación: 2024-02-18 14:19:58 Última modificación: 2024-02-18 14:19:58
Copiar: 2 Número de Visitas: 683
1
Seguir
1617
Seguidores

Estrategia de trading de ruptura basada en el canal de supertendencia

Descripción general

La estrategia se basa en el desarrollo de indicadores de canales de supertrend. Combina la movilidad de los precios con la dirección de los canales de supertrend para juzgar la tendencia de los mercados y emitir señales de negociación cuando se vuelve hacia la dirección de los canales.

Cuando el precio supera el canal de la supertrend, compra más; cuando el precio cae por debajo del canal de la supertrend, vende a la baja. Al mismo tiempo, tiene un mecanismo de seguimiento de la tendencia para detener la pérdida.

Principio de estrategia

Un canal de tendencia súper se compone de una vía ascendente y una vía descendente. El interior del canal es la zona de equilibrio y el exterior del canal es la zona de tendencia. Utiliza el rango de fluctuación real promedio multiplicado por un múltiplo para determinar el ancho del canal.

Cuando el precio rompe la vía desde abajo, es una señal de compra. Esto significa que se inicia una nueva tendencia alcista. Cuando el precio rompe la vía desde arriba, es una señal de venta. Esto significa que comienza una nueva tendencia bajista.

La estrategia utiliza el indicador de canal de supertrend para determinar la dirección de la tendencia principal. Se emite una señal de negociación cuando se produce una reversión en la dirección del canal, es decir, cuando el precio rompe la órbita del canal; y luego se utiliza el método de seguimiento de la tendencia para detener la pérdida y bloquear la ganancia.

Análisis de las ventajas

Es una estrategia de ruptura sencilla e intuitiva que tiene las siguientes ventajas:

  1. Utilice el canal de tendencias súper para determinar la dirección de las tendencias principales y evitar que el ruido iB gane dinero.

  2. Por lo tanto, se puede hacer más tiempo libre según la relación entre el precio y el canal.

  3. Dispone de un claro mecanismo de suspensión de pérdidas que permite un control efectivo del riesgo.

  4. El Stop Loss es un método de seguimiento de tendencias que permite bloquear los beneficios al máximo.

Riesgo y mejora

La estrategia también tiene algunos riesgos, como:

  1. Los parámetros del canal de la tendencia súper están mal configurados y pueden dar lugar a señales falsas.

  2. La señal de ruptura puede ser una señal de reversión a corto plazo, lo que genera pérdidas.

  3. El método de parada de pérdidas es solo para seguir la tendencia de la parada de pérdidas, que puede terminar prematuramente.

Las medidas de mejora correspondientes incluyen:

  1. Prueba de datos en diferentes mercados, optimización de parámetros.

  2. En combinación con otros indicadores, las señales de filtración.

  3. Combinado con la estructura de precios, para determinar la fiabilidad de la señal de ruptura.

  4. Aumentar la pérdida de fondo para controlar aún más el riesgo.

Resumir

La estrategia en su conjunto es una estrategia de seguimiento de tendencias más simple e intuitiva. Utiliza el canal de tendencias súper para determinar claramente la dirección de la tendencia, generando una señal cuando se produce un cambio en el canal; y luego utiliza el método de seguimiento de tendencias para detener los beneficios.

En comparación con otros indicadores, el canal de tendencia súper es más tolerante a las fluctuaciones de los precios. Sin embargo, la estrategia también tiene cierto margen de ganancia, que se puede optimizar en aspectos como la filtración de señales y el método de parada de pérdidas para mejorar aún más la estabilidad.

Código Fuente de la Estrategia
/*backtest
start: 2023-02-11 00:00:00
end: 2024-02-17 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("Supertrend TEST Strategy", overlay = true, format=format.price, precision=2)

Periods = input(title="ATR Period", type=input.integer, defval=4)
src = input(hlc3, title="Source")
Multiplier = input(title="ATR Multiplier", type=input.float, step=0.1, defval=4.7)
changeATR= input(title="Change ATR Calculation Method ?", type=input.bool, defval=true)
showsignals = input(title="Show Buy/Sell Signals ?", type=input.bool, defval=true)
highlighting = input(title="Highlighter On/Off ?", type=input.bool, defval=true)
tp=close
sl=close

atr2 = sma(tr, Periods)
atr= changeATR ? atr(Periods) : atr2
up=src-(Multiplier*atr)
up1 = nz(up[1],up)
up := close[1] > up1 ? max(up,up1) : up
dn=src+(Multiplier*atr)
dn1 = nz(dn[1], dn)
dn := close[1] < dn1 ? min(dn, dn1) : dn
trend = 1
trend := nz(trend[1], trend)
trend := trend == -1 and close > dn1 ? 1 : trend == 1 and close < up1 ? -1 : trend
upPlot = plot(trend == 1 ? up : na, title="Up Trend", style=plot.style_linebr, linewidth=2, color=color.green)
buySignal = trend == 1 and trend[1] == -1
plotshape(buySignal ? up : na, title="UpTrend Begins", location=location.absolute, style=shape.circle, size=size.tiny, color=color.green )
plotshape(buySignal and showsignals ? up : na, title="Лонг", text="Лонг", location=location.absolute, style=shape.labelup, size=size.tiny, color=color.green, textcolor=color.white )
dnPlot = plot(trend == 1 ? na : dn, title="Down Trend", style=plot.style_linebr, linewidth=2, color=color.red)
sellSignal = trend == -1 and trend[1] == 1
plotshape(sellSignal ? dn : na, title="DownTrend Begins", location=location.absolute, style=shape.circle, size=size.tiny, color=color.red )
plotshape(sellSignal and showsignals ? dn : na, title="Шорт", text="Шорт", location=location.absolute, style=shape.labeldown, size=size.tiny, color=color.red, textcolor=color.white )
mPlot = plot(ohlc4, title="", style=plot.style_circles, linewidth=0)
longFillColor = highlighting ? (trend == 1 ? color.green : color.white) : color.white
shortFillColor = highlighting ? (trend == -1 ? color.red : color.white) : color.white



if (strategy.position_size > 0)
	tp:=tp[1]
	sl:=up
	strategy.exit("Long_TP/SL","Long",limit=tp, stop=sl)
	
if (strategy.position_size < 0)
	tp:=tp[1]
	sl:=dn
	strategy.exit("Short_TP/SL","Short",limit=tp, stop=sl)



if buySignal 
	tp:=close+(close-up)*0.382
    strategy.entry("Long", strategy.long,  limit=tp, comment=tostring(round(tp)))
if sellSignal
	tp:=close-(dn-close)*0.382
    strategy.entry("Short", strategy.short, limit=tp, comment=tostring(round(tp)))