Estrategia de salida de la lámpara

El autor:¿ Qué pasa?, Fecha: 2024-01-05 15:57:51
Las etiquetas:

img

Resumen general

Esta estrategia utiliza el indicador Chandelier Exit para determinar la dirección y el impulso de las rupturas de precios y generar señales de compra y venta.

Estrategia lógica

Esta estrategia se basa en el indicador Chandelier Exit, que establece líneas de stop-loss basadas en el máximo máximo, el mínimo mínimo y el rango verdadero promedio. Específicamente, calcula un ATR de 22 días y lo multiplica por un coeficiente (por defecto 3) para derivar valores para líneas de stop largas y cortas. La estrategia genera una señal de venta cuando el precio se rompe por debajo de la parada larga cuando es larga, y una señal de compra cuando el precio se rompe por encima de la parada corta cuando es corta.

La estrategia solo realiza operaciones de compra, desencadena una entrada larga cuando el precio se rompe por encima de la línea de parada larga anterior y crea una señal de salida cuando el precio cae por debajo de la línea de parada corta, cerrando la posición larga.

Análisis de ventajas

  • Utiliza líneas de stop loss dinámicas desde la salida de Chandelier para controlar eficazmente los riesgos
  • Combina las rupturas de precios para capturar los movimientos de tendencia
  • Implementa una estrategia que evita inversiones al alza/abajo comprando únicamente
  • Condiciones de alerta que activan las notificaciones para controlar el estado de la estrategia

Análisis de riesgos

  • La salida de Chandelier es sensible a la expansión de la volatilidad que puede causar señales falsas.
  • No se aplican medidas de stop loss después de la compra para limitar la pérdida
  • No hay mecanismo de obtención de beneficios para bloquear las ganancias

Mitigación de riesgos:

  1. Añadir filtro con otros indicadores para evitar señales falsas
  2. Implementar el stop loss para limitar la pérdida máxima
  3. Incorporar paradas de ganancias posteriores, como el ajuste dinámico de la línea de venta o las salidas parciales

Oportunidades de mejora

  1. Prueba diferentes conjuntos de parámetros para optimizar las entradas y salidas
  2. Añadir filtros de indicadores para confirmar señales y evitar señales falsas
  3. Considere permitir tanto las operaciones de compra como las de venta
  4. Introducción de mecanismos de stop loss y take profit

Conclusión

Esta estrategia identifica oportunidades de reversión utilizando las líneas de stop dinámicas del indicador de salida de la candela. Compra en las rupturas al alza de la línea de stop larga y vende cuando los precios caen por debajo de la línea de stop corta, implementando una estrategia unilateral simple que evita inversiones al alza / a la baja. Controla eficazmente el riesgo pero carece de disposiciones de stop loss y take profit. Las oportunidades de optimización incluyen la adición de filtros y mecanismos de stop loss / take profit para hacer que la estrategia sea más robusta.


/*backtest
start: 2023-12-28 00:00:00
end: 2024-01-04 00:00:00
period: 10m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Chandelier Exit Strategy", overlay=true)

length = input(title='ATR Period', defval=22)
mult = input.float(title='ATR Multiplier', step=0.1, defval=3.0)
showLabels = input(title='Show Buy/Sell Labels ?', defval=true)
useClose = input(title='Use Close Price for Extremums ?', defval=true)
highlightState = input(title='Highlight State ?', defval=true)

atr = mult * ta.atr(length)

longStop = (useClose ? ta.highest(close, length) : ta.highest(length)) - atr
longStopPrev = nz(longStop[1], longStop)
longStop := close[1] > longStopPrev ? math.max(longStop, longStopPrev) : longStop

shortStop = (useClose ? ta.lowest(close, length) : ta.lowest(length)) + atr
shortStopPrev = nz(shortStop[1], shortStop)
shortStop := close[1] < shortStopPrev ? math.min(shortStop, shortStopPrev) : shortStop

var int dir = 1
dir := close > shortStopPrev ? 1 : close < longStopPrev ? -1 : dir

var color longColor = color.green
var color shortColor = color.red

longStopPlot = plot(dir == 1 ? longStop : na, title='Long Stop', style=plot.style_linebr, linewidth=2, color=color.new(longColor, 0))
buySignal = dir == 1 and dir[1] == -1
plotshape(buySignal ? longStop : na, title='Long Stop Start', location=location.absolute, style=shape.circle, size=size.tiny, color=color.new(longColor, 0))
plotshape(buySignal and showLabels ? longStop : na, title='Buy Label', text='Buy', location=location.absolute, style=shape.labelup, size=size.tiny, color=color.new(longColor, 0), textcolor=color.new(color.white, 0))

shortStopPlot = plot(dir == 1 ? na : shortStop, title='Short Stop', style=plot.style_linebr, linewidth=2, color=color.new(shortColor, 0))
sellSignal = dir == -1 and dir[1] == 1
plotshape(sellSignal ? shortStop : na, title='Short Stop Start', location=location.absolute, style=shape.circle, size=size.tiny, color=color.new(shortColor, 0))
plotshape(sellSignal and showLabels ? shortStop : na, title='Sell Label', text='Sell', location=location.absolute, style=shape.labeldown, size=size.tiny, color=color.new(shortColor, 0), textcolor=color.new(color.white, 0))

changeCond = dir != dir[1]
alertcondition(changeCond, title='Alert: CE Direction Change', message='Chandelier Exit has changed direction!')
alertcondition(buySignal, title='Alert: CE Buy', message='Chandelier Exit Buy!')
alertcondition(sellSignal, title='Alert: CE Sell', message='Chandelier Exit Sell!')

// Define initial capital
initial_capital =25

// Trigger buy order and close buy order on sell signal
if buySignal
    strategy.entry("Buy", strategy.long, qty = initial_capital / close)

if sellSignal
    strategy.close("Buy")


Más.