Tendencia tras la estrategia de ruptura del impulso

El autor:¿ Qué pasa?, Fecha: 2024-01-05 13:38:18
Las etiquetas:

img

Resumen general

La estrategia se llama Trend Following Momentum Breakout Strategy. Utiliza el indicador de Super Trend para determinar la dirección de la tendencia actual y lo combina con la dirección de los cuerpos de velas para la tendencia después de la negociación para lograr breakouts de impulso.

Estrategia lógica

El núcleo de esta estrategia se basa en el indicador de Super Tendencia para juzgar la dirección de la tendencia actual. El indicador de Super Tendencia calcula las bandas superior e inferior basándose en el Rango Verdadero Medio (ATR). Cuando los precios rompen la banda superior, es una señal alcista, y cuando los precios rompen la banda inferior, es una señal bajista.

Cuando el indicador de Super Tendencia determina una tendencia alcista, si el candelero es un cuerpo rojo (cerrar por debajo de abierto), ir largo. Cuando el indicador de Super Tendencia determina una tendencia bajista, si el candelero es un cuerpo verde (cerrar por encima de abierto), ir corto. Esto logra la tendencia después de la operación de ruptura de impulso.

Análisis de ventajas

Esta estrategia combina el juicio de tendencia y las características de impulso para filtrar efectivamente las fallas falsas y mejorar la validez de las señales de negociación.

Las principales ventajas se resumen de la siguiente manera:

  1. Filtrar las falsas rupturas combinando el juicio de tendencia y las características de impulso
  2. Siga la dirección de los cuerpos de velas para evitar el comercio contra tendencia
  3. Mayor rentabilidad

Análisis de riesgos

Los principales riesgos de esta estrategia son:

  1. La cuestión de cómo establecer los parámetros del indicador de Super Tendencia.
  2. Sólo siguiendo la dirección del cuerpo del candelabro no se puede determinar la fuerza del cuerpo, y puede haber riesgos de pérdida.
  3. La relación riesgo-rendimiento fija no puede ajustarse dinámicamente y no se puede controlar una sola pérdida.

Las contramedidas son:

  1. Optimizar los parámetros del indicador de Super Tendencia para que el juicio sea más preciso.
  2. Juzga la fuerza del cuerpo de la vela combinando indicadores como el volumen de operaciones y el flujo de dinero.
  3. Añadir pérdida de parada dinámica para controlar pérdidas individuales.

Direcciones de optimización

Esta estrategia puede optimizarse en los siguientes aspectos:

  1. Combinar más indicadores técnicos para el filtrado de señales, como las bandas de Bollinger y KDJ, para mejorar el rendimiento de la estrategia.
  2. Añadir algoritmos de aprendizaje automático para optimizar dinámicamente los parámetros y hacer que el indicador de Super Tendencia sea más estable.
  3. Añadir mecanismos de stop loss para detener las pérdidas antes de que las pérdidas se expandan.
  4. Utilice productos con capacidades de negociación bidireccional, como futuros, para aprovechar al máximo las oportunidades largas y cortas.

Resumen de las actividades

En general, esta estrategia es muy adecuada para posiciones a mediano y corto plazo. Al combinar el juicio de tendencia y el impulso de ruptura, puede filtrar eficazmente el ruido y mejorar la tasa de ganancia. Al mismo tiempo, todavía hay espacio para la optimización de parámetros para obtener un mejor rendimiento de la estrategia.


/*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
//2018

//@version=2
strategy("Noro's SuperTrend Strategy v1.0", shorttitle = "ST 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(true, defval = true, title = "Short")
capital = input(100, defval = 100, minval = 1, maxval = 10000, title = "Lot, %")
cloud = input(25, defval = 25, minval = 5, maxval = 50, title = "cloud, % of ATR")
Factor = input(title = "Super Trend", defval = 3, minval = 1, maxval = 100)
ATR = input(title = "ATR", defval = 7, minval = 1,maxval = 100)
centr = input(true, defval = true, title = "need center of ATR?")
border = input(false, defval = false, title = "need border?")
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")

//Super Trend ATR 1
src = close
Up=hl2-(Factor*atr(ATR))
Dn=hl2+(Factor*atr(ATR))
TUp=close[1]>TUp[1]? max(Up,TUp[1]) : Up
TDown=close[1]<TDown[1]? min(Dn,TDown[1]) : Dn
Trend = close > TDown[1] ? 1: close< TUp[1]? -1: nz(Trend[1],1)
Tsl1 = Trend==1? TUp: TDown
Tsl2 = Trend==1? TDown: TUp
limit = (Tsl1 - Tsl2) / 100 * cloud
upcloud = Tsl1 - limit
dncloud = Tsl2 + limit

//Cloud
linecolor = Trend == 1 ? green : red
centercolor = centr == true ? blue : na
cloudcolor = Trend == 1 ? green : red
cline = (Tsl1 + Tsl2) / 2
P1 = plot(Tsl1, color = border == false ? na : linecolor , style = line , linewidth = 1,title = "SuperTrend ATR-1")
P2 = plot(Tsl2, color = border == false ? na : linecolor , style = line , linewidth = 1,title = "SuperTrend ATR-2")
P3 = plot(cline, color = centercolor , style = line , linewidth = 1,title = "SuperTrend Center")
P4 = plot(upcloud, color = border == false ? na : linecolor , style = line , linewidth = 1,title = "SuperTrend Center+1")
P5 = plot(dncloud, color = border == false ? na : linecolor , style = line , linewidth = 1,title = "SuperTrend Center-1")
fill(P1, P4, color = linecolor == red ? red : lime, transp = 50)
fill(P2, P5, color = linecolor == red ? red : lime, transp = 50)

//Signals
up = Trend == 1 and close < open //and low < cline 
dn = Trend == -1 and close > open //and high > cline

//Trading
size = strategy.position_size
lot = 0.0
lot := size == 0 ? strategy.equity / close * capital / 100 : lot[1]
if up
    strategy.entry("Long", strategy.long, needlong ? lot : 0)

if dn
    strategy.entry("Short", strategy.short, needshort ? lot : 0)


Más.