Estrategia de inversión de tendencia de seguimiento

El autor:¿ Qué pasa?, Fecha: 2024-01-03 16:34:28
Las etiquetas:

img

Resumen general

La estrategia de inversión de tendencia es una estrategia de negociación de tendencia basada en promedios móviles y extremos de precios. La estrategia utiliza dos promedios móviles para rastrear las tendencias de precios y abre posiciones inversas cuando las tendencias se invierten. Al mismo tiempo, también calcula un canal de precios basado en los precios más altos y más bajos de las líneas K recientes para detener la pérdida cuando los precios se acercan a los límites del canal, controlando aún más los riesgos.

Estrategia lógica

La estrategia utiliza promedios móviles de puntos altos y bajos de 3 períodos hma y lma para rastrear las tendencias de los precios.

La estrategia también calcula los rieles superiores e inferiores (uplevel y dnlevel) del canal de precios en función de los precios más altos y más bajos dentro de las barras recientes K-líneas. uplevel es el precio más alto en las barras recientes K-líneas más un coeficiente de retroceso hacia arriba; dnlevel es el precio más bajo en las barras recientes K-líneas menos un coeficiente de retroceso hacia abajo. Esto constituye el rango del canal de precios.

Cuando se abren posiciones largas, el precio de stop loss se establece en el carril superior del canal; cuando se abren posiciones cortas, el precio de stop loss se establece en el carril inferior del canal.

Cuando aparece una señal de reversión, la estrategia invertirá inmediatamente las posiciones abiertas para seguir la nueva tendencia del precio.

Ventajas

  • La estrategia aprovecha al máximo las medias móviles para rastrear las tendencias y capturar los movimientos de precios rápidamente.
  • Aplica los canales de precios y las posiciones de apertura inversa para controlar los riesgos y obtener ganancias de manera efectiva.
  • La lógica de la estrategia es simple y clara, fácil de entender e implementar.
  • Los parámetros personalizables, como la longitud del juicio de tendencia, los coeficientes de retroceso, etc., se adaptan a los diferentes productos.
  • Apoyar la pirámide de la misma dirección, capturar plenamente las oportunidades de tendencia.

Los riesgos

  • Es propenso a señales falsas durante la consolidación de precios.
  • Las inversiones de tendencia no siempre pueden desencadenar un stop loss, no se puede controlar la pérdida máxima.
  • La configuración incorrecta de los parámetros puede causar reacciones demasiado sensibles o lentas.
  • Para obtener los mejores resultados, es necesario seleccionar los productos y los plazos adecuados.

Mejoras:

  1. Filtrar las señales no válidas con otros indicadores;
  2. Añadir el stop loss móvil para bloquear las ganancias y limitar el desembolso máximo;
  3. Prueba y optimización de parámetros para diferentes productos y ciclos.

Direcciones de optimización

Hay espacio para una mayor optimización:

  1. Se pueden introducir otros indicadores para filtrar algunas señales no válidas, como el MACD, el KD, etc.

  2. Se puede añadir una lógica de stop loss adaptativa, como movimiento de stop loss, balance stop loss, etc., para controlar aún más los riesgos.

  3. Prueba el impacto de diferentes parámetros en el rendimiento de la estrategia y optimiza las combinaciones de parámetros, como las longitudes de los ciclos de MA, los tamaños de los coeficientes de retroceso, etc.

  4. La estrategia se negocia actualmente en sesiones cronometradas. También se puede ajustar a la negociación durante todo el día. Esto puede requerir reglas de filtrado adicionales.

Conclusión

En resumen, esta es una estrategia de inversión de tendencia que combina canales de precios y promedios móviles. Al rastrear las tendencias y las posiciones de apertura inversa oportunas, puede seguir efectivamente los movimientos de precios. Al mismo tiempo, las medidas de control de riesgos de los canales de precios y la apertura inversa también le permiten controlar eficazmente las pérdidas individuales. La idea de la estrategia es simple y clara, y vale la pena probar y optimizar más en el comercio en vivo.


/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//Noro
//2019

//@version=3
strategy(title = "Noro's 3Bars Strategy by Larry Williams", shorttitle = "3Bars", 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(true, defval = true, title = "Short")
capital = input(100, defval = 100, minval = 1, maxval = 10000, title = "Capital, %")
corr = input(0.0, title = "Correction, %")
bars = input(1, minval = 1)
revers = input(false, defval = false, title = "revers")
showll = input(true, defval = true, title = "Show Levels")
showos = input(true, defval = true, title = "Show Levels one side")
showcl = input(false, defval = false, title = "Show Levels continuous line")
showbg = input(false, defval = false, title = "Show Background")
showar = input(false, defval = false, title = "Show Arrows")
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")

len = input(3)

hma = sma(high, len)
lma = sma(low, len)
plot(hma)
plot(lma)

//Levels
hbar = 0
hbar := high > high[1] ? 1 : high < high[1] ? -1 : 0
lbar = 0
lbar := low > low[1] ? 1 : low < low[1] ? -1 : 0
uplevel = 0.0
dnlevel = 0.0
hh = highest(high, bars + 1)
ll = lowest(low, bars + 1)
uplevel := hbar == -1 and sma(hbar, bars)[1] == 1 ? hh + ((hh / 100) * corr) : uplevel[1]
dnlevel := lbar == 1 and sma(lbar, bars)[1] == -1 ? ll - ((ll / 100) * corr) : dnlevel[1]

//Background
size = strategy.position_size
trend = 0
trend := size > 0 ? 1 : size < 0 ? -1 : high >= uplevel ? 1 : low <= dnlevel ? -1 : trend[1]
col = showbg == false ? na : trend == 1 ? lime : trend == -1 ? red : na
bgcolor(col)

//Lines
upcol = na
upcol := showll == false ? na : uplevel != uplevel[1] and showcl == false ? na : showos and trend[1] == 1 ? na : lime
plot(uplevel, color = upcol, linewidth = 2)
dncol = na
dncol := showll == false ? na : dnlevel != dnlevel[1] and showcl == false ? na : showos and trend[1] == -1 ? na : red
plot(dnlevel, color = dncol, linewidth = 2)

//Arrows
longsignal = false
shortsignal = false
longsignal := size > size[1]
shortsignal := size < size[1]
plotarrow(longsignal and showar and needlong ? 1 : na, colorup = blue, colordown = blue, transp = 0)
plotarrow(shortsignal and showar and needshort ? -1 : na, colorup = blue, colordown = blue, transp = 0)

//Trading
lot = 0.0
lot := size != size[1] ? strategy.equity / close * capital / 100 : lot[1]
if uplevel > 0 and dnlevel > 0 and revers == false
    strategy.entry("Long", strategy.long, needlong == false ? 0 : lot, stop = uplevel)
    strategy.entry("Long stop", strategy.short, 0, stop = lma)
    strategy.entry("Short", strategy.short, needshort == false ? 0 : lot, stop = dnlevel)
    strategy.entry("Short stop", strategy.long, 0, stop = hma)
    
// if time > timestamp(toyear, tomonth, today, 23, 59)
//     strategy.close_all()

Más.