Esta estrategia se basa en el indicador SuperTrend y utiliza ATR para establecer dinámicamente líneas de stop loss para beneficiarse de las fuertes tendencias en Ethereum.
La estrategia utiliza un indicador clásico de seguimiento de tendencias - el indicador SuperTrend para determinar la dirección de la tendencia.
Cuando el precio pasa de tendencia alcista a tendencia bajista, abre una posición corta.
Además, la estrategia utiliza el indicador ATR para ajustar dinámicamente la línea de stop loss. Específicamente, la posición de la línea de stop loss de tendencia al alza es el promedio del más alto y más bajo menos ATR multiplicado por un coeficiente; la posición de la línea de stop loss de tendencia bajista es el promedio del más alto y más bajo más ATR multiplicado por un coeficiente. Esto permite ajustar la stop loss basada en la volatilidad del mercado.
Después de que se activen las señales de entrada, si el precio se rompe por encima de la línea de stop loss, deténgase con la pérdida.
Se trata de una tendencia relativamente madura que sigue una estrategia con las siguientes ventajas:
También hay algunos riesgos con esta estrategia:
Para mitigar los riesgos anteriores, el coeficiente ATR puede ajustarse o añadir filtros con otros indicadores.
Hay margen de mejora:
En general, esta es una estrategia de seguimiento de tendencias madura y confiable. Utiliza el indicador SuperTrend para determinar la dirección de la tendencia y adapta el stop loss con ATR para controlar los riesgos mientras se obtiene ganancias. La estrategia funciona bien para criptomonedas de alta volatilidad como Ethereum.
/*backtest start: 2023-01-01 00:00:00 end: 2024-01-07 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy("SuperTrend Strategy", overlay=true, initial_capital=2e3, process_orders_on_close=true, commission_type=strategy.commission.percent, commission_value=0.1 ) length = input(title="ATR Period", type=input.integer, defval=21) mult = input(title="ATR Multiplier", type=input.float, step=.25, defval=6.2) wicks = input(title="Take Wicks into Account ?", type=input.bool, defval=false) useDate = input(title="Start from Specific Date ?", defval=false) yearStart = input(title="Start Year", defval=2019) monthStart = input(title="Start Month", minval=1, maxval=12, defval=1) dayStart = input(title="Start Day", minval=1, maxval=31, defval=1) startTime = timestamp(yearStart, monthStart, dayStart, 0, 0) startFrom = useDate ? time(timeframe.period) >= startTime : true atr = mult * ta.atr(length) longStop = hl2 - atr longStopPrev = nz(longStop[1], longStop) longStop := (wicks ? low[1] : close[1]) > longStopPrev ? math.max(longStop, longStopPrev) : longStop shortStop = hl2 + atr shortStopPrev = nz(shortStop[1], shortStop) shortStop := (wicks ? high[1] : close[1]) < shortStopPrev ? math.min(shortStop, shortStopPrev) : shortStop dir = 1 dir := nz(dir[1], dir) dir := dir == -1 and (wicks ? high : close) > shortStopPrev ? 1 : dir == 1 and (wicks ? low : close) < longStopPrev ? -1 : dir longColor = color.green shortColor = color.red plot(dir == 1 ? longStop : na, title="Long Stop", style=plot.style_linebr, linewidth=2, color=longColor) plotshape(dir == 1 and dir[1] == -1 ? longStop : na, title="Long Start", location=location.absolute, style=shape.circle, size=size.tiny, color=longColor, transp=0) plot(dir == 1 ? na : shortStop, title="Short Stop", style=plot.style_linebr, linewidth=2, color=shortColor) plotshape(dir == -1 and dir[1] == 1 ? shortStop : na, title="Short Start", location=location.absolute, style=shape.circle, size=size.tiny, color=shortColor, transp=0) longCondition = dir[1] == -1 and dir == 1 if longCondition and startFrom strategy.entry("Long", strategy.long, stop=longStop) else strategy.cancel("Long") shortCondition = dir[1] == 1 and dir == -1 if shortCondition and startFrom strategy.entry("Short", strategy.short, stop=shortStop) else strategy.cancel("Short")