La estrategia de seguimiento de la reversión extrema realiza un seguimiento de los puntos extremos del rango de fluctuación de precios y realiza posiciones largas/cortas de reversión en los puntos extremos para realizar un seguimiento de las tendencias.
La estrategia se basa principalmente en los siguientes principios:
Utilizar la función de seguridad para obtener precios altos y bajos de diferentes líneas K del ciclo para detectar si son iguales a las anteriores, a fin de juzgar si se alcanzan nuevos puntos extremos.
Cuando se detecten nuevos puntos extremos, haga una posición corta si actualmente es un mercado alcista y haga una posición larga si actualmente es un mercado bajista.
Establezca el punto de stop loss como el nuevo punto extremo formado después de que se realice una posición larga/corta para rastrear las tendencias con stop loss.
Establezca el intervalo de tiempo efectivo de la estrategia configurando el año de inicio, el mes y la fecha para realizar ajustes para diferentes períodos de tiempo.
Las principales ventajas de esta estrategia son las siguientes:
Captura eficazmente los puntos extremos de los cambios de precios y realiza posiciones de reversión para seguir las tendencias.
Configurar la gestión del tiempo y del riesgo para controlar el tiempo de uso y el capital de la estrategia para reducir los riesgos.
Utilice nuevos puntos extremos como puntos de stop loss para ajustar dinámicamente las posiciones de stop loss en función del nuevo rango de fluctuación de precios.
Lógica de estrategia simple y clara para una fácil comprensión, depuración y optimización.
También existen algunos riesgos para esta estrategia:
Puede haber un error de juicio en la determinación de los puntos extremos, causando errores en las posiciones largo / corto.
La posición de stop loss está cerca del punto de entrada, lo que aumenta la probabilidad de que se active la stop loss.
No hay consideración sobre las posiciones de pirámide a lo largo de tendencias y posiciones invertidas, menos rentables en mercados de tendencias.
La configuración de divisas y intervalos de tiempo es bastante rígida, no puede hacer ajustes dinámicos.
La estrategia se puede optimizar en los siguientes aspectos:
Optimice la lógica del punto extremo con más filtros para evitar errores de juicio.
Añadir un mecanismo de stop loss flotante basado en los cambios de precio y volatilidad para ajustar la distancia de stop loss.
Introducir módulos de pirámide y posición inversa basados en tendencias y volatilidad para mejorar la rentabilidad.
Establecer un mecanismo de optimización de parámetros para pruebas automáticas y ajuste de parámetros.
Incorporar modelos de aprendizaje automático para ayudar a la toma de decisiones estratégicas.
La estrategia de seguimiento de reversión de extremos funciona capturando extremos de precios y tendencias de seguimiento, adaptables y rentables.
/*backtest start: 2024-01-01 00:00:00 end: 2024-01-31 23:59:59 period: 6h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //Noro //2018 //@version=2 strategy(title = "Noro's Extremum Strategy v1.0", shorttitle = "Extremum str 1.0", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 0) //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 = "Capital, %") tf = input('W', title = 'Timeframe for extremums') 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") //Levels highm = request.security(syminfo.tickerid, tf, high[1]) lowm = request.security(syminfo.tickerid, tf, low[1]) upcolorm = highm == highm[1] ? lime : na dncolorm = lowm == lowm[1] ? red : na plot(highm, color = upcolorm, linewidth = 3) plot(lowm, color = dncolorm, linewidth = 3) //Signals size = strategy.position_size up = size > 0 ? highm * 1000000 : highm != highm[1] ? highm : up[1] dn = size < 0 ? 0 : lowm != lowm[1] ? lowm : dn[1] exit = true //Trading lot = strategy.position_size != strategy.position_size[1] ? strategy.equity / close * capital / 100 : lot[1] if highm > 0 and high[1] < highm and highm == highm[1] strategy.entry("Long", strategy.long, needlong == false ? 0 : lot, stop = up) if lowm > 0 and low[1] > lowm and lowm == lowm[1] strategy.entry("Short", strategy.short, needshort == false ? 0 : lot, stop = dn) if exit strategy.close_all()