Estrategia dinámica de stop-profit y stop-loss de ATR


Fecha de creación: 2023-09-14 16:22:53 Última modificación: 2023-09-14 16:22:53
Copiar: 0 Número de Visitas: 904
1
Seguir
1617
Seguidores

Principio de estrategia

La estrategia utiliza un punto de parada y pérdida dinámico para operar. El punto de parada y pérdida se ajusta en tiempo real según el precio y la volatilidad actuales.

La lógica específica de la transacción:

  1. Calcula el ATR de la amplitud media real de fluctuación de un período determinado (por ejemplo, 20 días)

  2. Cuando está en la posición de venta, el punto de parada de venta es el precio máximo menos el ATR multiplicado por

  3. El punto de parada y pérdida se agrega al precio mínimo multiplicado por el ATR cuando se encuentra en una posición bajista.

  4. Se invierte cuando el precio supera el punto de parada

  5. Cambiar el estado de la tendencia cuando el precio rompe el punto de parada

  6. Ajuste el punto de parada al nuevo estado

La estrategia aprovecha ATR para establecer automáticamente los puestos de stop loss y el seguimiento dinámico. Puede bloquear los beneficios a tiempo y evitar que las pérdidas se expandan.

Ventajas estratégicas

  • El ATR calcula automáticamente el punto de parada

  • Ajuste dinámico, seguimiento de precios en tiempo real

  • Detener el paro a tiempo y controlar el riesgo

Riesgo estratégico

  • Los parámetros de ATR necesitan ser optimizados para pruebas repetitivas

  • El deterioro es demasiado cercano y fácil de detener.

  • Los cambios en el ATR en tiempo real

Resumir

La estrategia utiliza ATR para configurar de forma dinámica el nivel de stop loss y lograr un seguimiento automático. Optimizar los parámetros ATR puede obtener un mejor efecto de stop loss. Pero el uso de stop loss demasiado cercano requiere precaución.

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

//@version=2
strategy("Dhananjay Volatility stop strategy v1.0", overlay=true)


length = input(20)
mult = input(1)
atr_ = atr(length)
max1 = max(nz(max_[1]), close)
min1 = min(nz(min_[1]), close)
is_uptrend_prev = nz(is_uptrend[1], true)
stop = is_uptrend_prev ? max1 - mult * atr_ : min1 + mult * atr_
vstop_prev = nz(vstop[1])
vstop1 = is_uptrend_prev ? max(vstop_prev, stop) : min(vstop_prev, stop)
is_uptrend = close - vstop1 >= 0
is_trend_changed = is_uptrend != is_uptrend_prev
max_ = is_trend_changed ? close : max1
min_ = is_trend_changed ? close : min1
vstop = is_trend_changed ? is_uptrend ? max_ - mult * atr_ : min_ + mult * atr_ : vstop1
plot(vstop, color = is_uptrend ? green : red, style=line, linewidth=2)

bearish = close < vstop 
bullish = close > vstop 


if (bullish)
    strategy.entry("Buy", strategy.long, 1)
    
    

if (bearish)
    strategy.entry("Sell", strategy.short, 1)