Esta estrategia es una estrategia de ruptura de tendencia basada en el indicador ATR. Su idea principal es tomar operaciones de ruptura de tendencia cuando el precio excede un cierto múltiplo de ATR. La estrategia también incluye la confirmación de tendencia y limitar las operaciones dentro de rangos de fechas.
La estrategia utiliza el indicador ATR para medir la volatilidad de los precios. ATR significa Rango Verdadero Medio y mide la volatilidad promedio durante un período. El parámetro de longitud en la estrategia calcula el período ATR y numATRs representa el multiplicador ATR para la ruptura.
Cuando el precio se rompe por encima del múltiplo superior de numATRs de ATR, se toma una posición larga.
Además, la estrategia incluye variables de bool needlong y needshort para controlar solo operaciones largas o sólo cortas.
La estrategia utiliza una variable de tamaño para determinar el tamaño de la posición y calcula el tamaño de la orden en función del porcentaje del capital de la cuenta.
Utiliza el ATR para adaptarse automáticamente a la volatilidad del mercado sin ajustes manuales de pérdidas y ganancias.
Flexible para elegir largo, corto o sólo largo/corto.
Puede establecer rangos de fecha para evitar el comercio en eventos importantes.
Posicionamiento flexible basado en el porcentaje de capital de la cuenta.
El ATR solo considera la volatilidad de los precios. Puede tener una parada de pérdida insuficiente durante grandes oscilaciones del mercado. Otros indicadores pueden combinarse.
Los límites de rango de fechas pueden perder oportunidades si no hay buenas configuraciones antes/después.
El tamaño de porcentaje de capital corre el riesgo de grandes pérdidas en operaciones individuales.
Añadir promedios móviles para el filtro de tendencia para reducir el ruido falso de las operaciones de ruptura.
Prueba los períodos de ATR para encontrar los parámetros óptimos.
Combinar con otras estrategias para utilizar las fortalezas y mejorar la estabilidad.
Esta es una tendencia comprensible después de la estrategia que utiliza ATR para adaptarse a la volatilidad. La optimización de parámetros y la combinación con otras estrategias pueden mejorar aún más el rendimiento y la estabilidad.
/*backtest start: 2023-09-30 00:00:00 end: 2023-10-30 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //Noro //2018 //@version=3 strategy(title = "Noro's Volty Strategy v1.0", shorttitle = "Volty 1.0", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 100) //Settings needlong = input(true, defval = true, title = "Long") needshort = input(false, defval = false, title = "Short") capital = input(100, defval = 100, minval = 1, maxval = 10000, title = "Lot, %") length = input(5) numATRs = input(0.75) fromyear = input(1900, defval = 1900, minval = 1900, maxval = 2100, title = "From Year") toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year") frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month") tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month") fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From day") today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day") //Indicator atrs = sma(tr, length) * numATRs //Trading size = strategy.position_size lot = 0.0 lot := size == 0 ? strategy.equity / close * capital / 100 : lot[1] if (not na(close[length])) and needlong strategy.entry("L", strategy.long, lot, stop = close + atrs, when = (time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59))) if (not na(close[length])) and needlong == false strategy.entry("L", strategy.long, 0, stop = close + atrs, when = (time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59))) if (not na(close[length])) and needshort strategy.entry("S", strategy.short, lot, stop = close - atrs, when = (time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59))) if (not na(close[length])) and needshort == false strategy.entry("S", strategy.short, 0, stop = close - atrs, when = (time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))