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:
Calcula el ATR de la amplitud media real de fluctuación de un período determinado (por ejemplo, 20 días)
Cuando está en la posición de venta, el punto de parada de venta es el precio máximo menos el ATR multiplicado por
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.
Se invierte cuando el precio supera el punto de parada
Cambiar el estado de la tendencia cuando el precio rompe el punto de parada
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.
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
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
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.
/*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)