Estrategia de seguimiento de supertendencias

El autor:¿ Qué pasa?, Fecha: 2023-12-26 15:58:55
Las etiquetas:

img

Resumen general

Esta es una estrategia de supertrend de seguimiento que combina principalmente los indicadores de supertrend con diferentes configuraciones de parámetros para lograr un efecto de seguimiento y utiliza un indicador de filtro para el control de riesgos.

Principio de la estrategia

Esta estrategia consiste principalmente en tres grupos de indicadores de supertrend con diferentes configuraciones de parámetros. El primer grupo es el indicador de supertrend principal que utiliza los parámetros predeterminados para el juicio básico de las tendencias del mercado. El segundo grupo es el indicador de supertrend adjunto que logra un seguimiento más sensible de los cambios de precios al reducir el período ATR y aumentar el multiplicador ATR. El tercer grupo es el indicador de supertrend de filtro que aumenta apropiadamente el período ATR y el multiplicador ATR para filtrar las roturas falsas.

Cuando la supertendencia principal emite una señal de compra, si la supertendencia adjunta también emite una señal sincronizada y la dirección de la supertendencia del filtro es al alza, la estrategia tomará la compra de seguimiento. Cuando la supertendencia principal emite una señal de venta, si la supertendencia adjunta también emite una señal sincronizada y la dirección de la supertendencia del filtro es a la baja, la estrategia tomará la venta de seguimiento. Esto puede capturar la tendencia principal mientras se utiliza el indicador de supertendencia adjunta flexible para rastrear ajustes menores y lograr una entrada y un stop loss oportunos.

Ventajas

  1. La idea de la estrategia es simple y clara, fácil de entender, adecuada para que los principiantes aprendan
  2. La configuración del parámetro de estrategia es razonable para realizar un seguimiento eficaz del mercado y controlar los riesgos
  3. La señal de estrategia es más precisa y confiable con mayor tasa de ganancia
  4. Combinar diferentes combinaciones de parámetros para lograr un efecto de seguimiento
  5. La adición de un mecanismo de filtro puede filtrar eficazmente las señales falsas y controlar los riesgos

Los riesgos

  1. Riesgos sistemáticos inherentes a la propia población
  2. El indicador de supertendencia puede retrasarse en algunos mercados
  3. La configuración incorrecta de los parámetros ATR puede causar desviaciones de señal.
  4. El volumen de operaciones insuficiente puede dificultar la reducción total de las pérdidas

Principales medidas de prevención de riesgos:

  1. Elegir acciones con buena liquidez y grandes fluctuaciones
  2. Optimizar razonablemente los parámetros para reducir la posibilidad de retraso
  3. Pruebas y optimización de parámetros para mejorar la precisión de la señal
  4. Aumentar adecuadamente el volumen de transacciones para garantizar un espacio de reducción de pérdidas

Direcciones de optimización

  1. Prueba de diferentes combinaciones de períodos ATR para optimizar el efecto de seguimiento
  2. Prueba otros indicadores de volatilidad para reemplazar el ATR
  3. Aumentar o disminuir el número de combinaciones de súper tendencias para probar el efecto
  4. Trate de combinar con otros indicadores para la optimización del filtro de señal
  5. Prueba diferentes métodos de stop loss para encontrar la solución óptima

Resumen de las actividades

La idea general de esta estrategia es clara y simple. Al coordinar múltiples grupos de indicadores de supertrend con diferentes configuraciones de parámetros, se realiza el seguimiento de la entrada y el control de riesgos. La señal de estrategia es más precisa con un buen rendimiento en vivo. Es adecuada para que los principiantes aprendan, y también se puede usar como plantilla para probar y optimizar varios indicadores y parámetros. Esta es una estrategia de supertrend que vale la pena recomendar.


/*backtest
start: 2023-11-25 00:00:00
end: 2023-12-25 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

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

Periods = input(title="ATR Period", type=input.integer, defval=4)
src = input(hl2, 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

sPeriods=input(title="ATR Period", type=input.integer, defval=8)
sMultiplier=input(title="dop ATR Multiplier", type=input.float, step=0.1, defval=1.5)
satr2 = sma(tr, sPeriods)
satr= changeATR ? atr(sPeriods) : satr2
ssup=ohlc4-(sMultiplier*satr)
ssup1 = nz(ssup[1],ssup)
ssup := close[1] > ssup1 ? max(ssup,ssup1) : ssup
sdn=ohlc4+(sMultiplier*satr)
sdn1 = nz(sdn[1], sdn)
sdn := close[1] < sdn1 ? min(sdn, sdn1) : sdn
strend = 1
strend := nz(strend[1], strend)
strend := strend == -1 and close > sdn1 ? 1 : strend == 1 and close < ssup1 ? -1 : strend
sbuySignal = strend == 1 and strend[1] == -1
ssellSignal = strend == -1 and strend[1] == 1

fPeriods=input(title="ATR Period", type=input.integer, defval=10)
fMultiplier=input(title="filter ATR Multiplier", type=input.float, step=0.1, defval=5)
fatr2 = sma(tr, fPeriods)
fatr= changeATR ? atr(fPeriods) : fatr2
fup=ohlc4-(fMultiplier*fatr)
fup1 = nz(fup[1],fup)
fup := close[1] > fup1 ? max(fup,fup1) : fup
fdn=ohlc4+(fMultiplier*fatr)
fdn1 = nz(fdn[1], fdn)
fdn := close[1] < fdn1 ? min(fdn, fdn1) : fdn
ftrend = 1
ftrend := nz(ftrend[1], ftrend)
ftrend := ftrend == -1 and close > fdn1 ? 1 : ftrend == 1 and close < fup1 ? -1 : ftrend
fbuySignal = ftrend == 1 and ftrend[1] == -1
fsellSignal = ftrend == -1 and ftrend[1] == 1
tcolor=color.new(color.gray,50)
fdnPlot = plot(ftrend == 1 ? na : fdn, title="Down Trend", style=plot.style_linebr, linewidth=2, color=tcolor)
fupPlot = plot(ftrend == 1 ? fup : na, title="Up Trend", style=plot.style_linebr, linewidth=2, color=tcolor)



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 and  ftrend==1) or (sbuySignal and trend==1 and  ftrend==1)) 
	tp:=close+(close-up)*0.382
    strategy.entry("Long", strategy.long,  limit=tp, comment=tostring(round(tp)))
if ((sellSignal and ftrend==-1) or (ssellSignal and trend==-1 and  ftrend==-1)) 
	tp:=close-(dn-close)*0.382
    strategy.entry("Short", strategy.short, limit=tp, comment=tostring(round(tp)))


Más.