Supertrend estrategia para el comercio de Ethereum

El autor:¿ Qué pasa?, Fecha: 2024-01-08 14:35:37
Las etiquetas:

img

Resumen general

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.

Estrategia lógica

La estrategia utiliza un indicador clásico de seguimiento de tendencias - el indicador SuperTrend para determinar la dirección de la tendencia.

  1. Línea de stop loss de tendencia alcista para mantener posiciones largas en tendencias alcistas;
  2. Línea de stop loss de tendencia bajista para mantener posiciones cortas en tendencias bajistas.

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.

Ventajas

Se trata de una tendencia relativamente madura que sigue una estrategia con las siguientes ventajas:

  1. utilizar el indicador SuperTrend para determinar con fiabilidad la dirección de la tendencia;
  2. Aplicar un sistema de detención de pérdidas ATR adaptativo para controlar eficazmente los riesgos;
  3. La lógica de la estrategia es simple y clara, fácil de entender y modificar.
  4. Rentable en el mercado de criptomonedas de alta volatilidad.

Los riesgos

También hay algunos riesgos con esta estrategia:

  1. La probabilidad de que el indicador SuperTrend juzgue erróneamente existe, puede causar pérdidas innecesarias;
  2. El ATR puede ser demasiado agresivo, detenido por inversiones de precios;
  3. La alta volatilidad en los criptomercados aumenta la probabilidad de que se produzca un stop loss;
  4. Las tarifas de transacción más altas en algunas bolsas afectan a la rentabilidad final.

Para mitigar los riesgos anteriores, el coeficiente ATR puede ajustarse o añadir filtros con otros indicadores.

Direcciones de mejora

Hay margen de mejora:

  1. Introducir más indicadores para mejorar la precisión de la señal;
  2. Investigar los valores óptimos para la longitud y el coeficiente de ATR;
  3. Implementar un dimensionamiento dinámico de las posiciones basado en la relación riesgo-beneficio;
  4. Prueba la efectividad de la estrategia en más pares de criptomonedas.

Conclusión

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")
    

Más.