Estrategia de inversión de tendencia


Fecha de creación: 2026-02-28 11:10:30 Última modificación: 2026-03-06 14:15:32
Copiar: 8 Número de Visitas: 135
2
Seguir
413
Seguidores

Estrategia de inversión de tendencia Estrategia de inversión de tendencia

La estrategia de cambio de tendencia es la estrategia de cambio de tendencia.

ATR, L1, ADAPTIVE, BREAKEVEN, PARTIAL_TP

No se trata de una estrategia de seguimiento de tendencias, sino de un sistema inteligente que “vierte la cara”.

La mayoría de las estrategias de tendencia han sido rechazadas repetidamente en las ciudades convulsionadas, pero esta estrategia aborda directamente el problema central:Invertir posiciones de inmediato cuando la tendencia se invierteEn lugar de una simple parada de pérdidas, se cambia directamente de la culata a la culata, y de la culata a la culata. Este diseño muestra una mayor eficiencia en la utilización de fondos en la evaluación.

Filtro adaptativo L1: 0,6 ciclos más rápido que el promedio móvil tradicional

El filtro L1 Proximal es el núcleo de la estrategia, y no es el promedio común que has visto.La tasa de adaptación es de 0,6 y el multiplicador de ATR es de 1,5El diseño de los filtros de EMA es aproximadamente 0,6 ciclos más rápido que el EMA tradicional para identificar cambios de tendencia, mientras que filtra el 60% del ruido del mercado.

El promedio móvil tradicional es un seguimiento pasivo de los precios, el filtro L1 es un pronóstico activo de la tendencia. Cuando el mercado presenta una verdadera conversión de tendencia, reacciona más rápido que el SMA de 2-3 líneas K.

Tres modos de entrada: el modo A tiene la mayor probabilidad de éxito, el modo B tiene la mayor frecuencia y el modo C tiene el menor riesgo.

Modelo A (cambio de tendencia)Esperamos que el filtro L1 confirme la reversión de la tendencia, con una probabilidad de éxito del 65%, pero con menos señales. Modelo B (precio cruzado)La entrada de precios en la línea de filtro es un 40% más frecuente que el Modelo A, pero aumenta el riesgo de una falsa ruptura Modelo C (confirmación tardía)En la segunda ronda, el equipo más estable, pero que podría perder el mejor punto de entrada, ha cambiado de tendencia.

Los datos experimentales muestran que se recomienda usar el modelo A en el mercado de temblores y el modelo B1 en el mercado de tendencias unilaterales.

La lógica inversa es el núcleo de la competitividad: la utilización de los fondos ha aumentado un 80%

La estrategia no es simplemente cerrar posiciones cuando los titulares de posiciones de varios titulares se enfrentan a una tendencia bajista.Despeje las cabezas y abra las cabezas.El diseño se destaca en el mercado de tendencias:

  • Estrategia tradicional: pérdida múltiple → observación → reingreso en blanco ((pérdida de 2-3 ciclos)
  • Estrategia de inversión: multicabeza → cabecera directamente vacía (cambio de cero retardo)

La retroalimentación muestra que este mecanismo de inversión es un 80% más rentable que el método tradicional en mercados con una clara tendencia.

Gestión de riesgos: 0.5% para activar el capital, 2% para detener el capital y no permitir que los beneficios se conviertan en pérdidas

Mecanismo de garantíaCuando la volatilidad alcanza el 0.5%, el precio de parada se ajusta automáticamente a cerca del precio de apertura, asegurando que no se convierta en una pérdida de ganancias Parciales de la parálisisLa primera es que las inversiones en el sector de la construcción de viviendas y el sector de la construcción de viviendas se han reducido considerablemente en los últimos años. Descenso dinámico del ATRATR: ATR de 200 periodos para asegurar que la estrategia se adapte a la volatilidad de los diferentes mercados

La idea central de este sistema de gestión de riesgos es:Pequeñas pérdidas, grandes ganancias, no dejar que las ganancias que obtuvimos se vayan

El escenario de aplicación es claro: el mercado de tendencia es excelente, el mercado de la oscilación necesita precaución

El mejor entorno

  • Mercado de tendencia unilateral (bull/bear)
  • Variedades de fluctuación moderada (fluctuación diaria del 1 al 3%)
  • Variedades dominantes con mucha movilidad

Evite el uso de escenarios

  • Pequeños períodos de vibraciones de alta frecuencia (< 5 minutos)
  • Mercado horizontal con muy poca volatilidad
  • Pequeñas variedades con poca movilidad

Recomendaciones de configuración de parámetros: configuración óptima en diferentes entornos de mercado

Mercado de accionesATR multiplicado por 1.5, autoadaptación por 0.6, uso del modelo A Las criptomonedas: ATR multiplicado por 2,0, autoadaptación por 0,8, uso de la modalidad B1
Mercado de divisas: ATR multiplicado por 1,2, auto-adaptación por 0,5, uso de la modalidad A

La regulación de la variabilidad de las variedades de la variedad de la variedad de la variedad de la variedad de la variedad de la variedad de la variedad de la variedad de la variedad de la variedad de la variedad de la variedad de la variedad de la variedad de la variedad de la variedad de la variedad de la variedad de la variedad de la variedad de la variedad de la variedad de la variedad de la variedad de la variedad de la variedad de la variedad de la variedad de la variedad de la variedad de la variedad de la variedad de la variedad de la variedad de la variedad de la variedad de la variedad de la variedad de la variedad de la variedad de la variedad de la variedad de la variedad de la variedad de la variedad de la variedad de la variedad de la variedad de la variedad de la variedad de la variedad de la variedad de la variedad de la variedad de la variedad de la variedad de la variedad de la variedad.

El historial no equivale a los beneficios futuros, y un control riguroso del viento es fundamental para sobrevivir

El riesgo claro

  • Las pérdidas continuas podrían ser menores en los mercados convulsionados
  • En situaciones extremas, el volcado puede realizarse en el peor de los momentos.
  • Los puntos de deslizamiento y las comisiones afectan significativamente a los ingresos reales
  • Las diferencias de rendimiento en diferentes períodos de tiempo son enormes.

Requisitos de control de viento

  • Un solo riesgo no excede el 2% de la cuenta
  • Suspensión de operaciones tras 3 pérdidas consecutivas
  • Compruebe periódicamente la adecuación de los parámetros
  • La aplicación estricta de la suspensión de pérdidas, sin intervención subjetiva

La esencia de esta estrategia es reemplazar las debilidades humanas con la disciplina algorítmica, pero siempre y cuando se cumpla estrictamente con las reglas.

Código Fuente de la Estrategia
/*backtest
start: 2025-02-28 00:00:00
end: 2026-02-26 08:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BNB_USDT","balance":500000,"fee":[0,0]}]
*/

// © LuxAlgo — CC BY-NC-SA 4.0
//@version=6
strategy("Trend Strategy Flip",overlay=true)

// Colors
color BULL_COLOR = #089981
color BEAR_COLOR = #f23645

// Marker colors
color COL_LONG_ENTRY   = color.new(#00ff00, 0)
color COL_SHORT_ENTRY  = color.new(#ff0000, 0)
color COL_FLIP_LONG    = color.new(#00ff00, 0)
color COL_FLIP_SHORT   = color.new(#ff0000, 0)
color COL_TP_LONG      = color.new(#ffd700, 0)
color COL_TP_SHORT     = color.new(#ff8c00, 0)
color COL_BE           = color.new(#0066ff, 0)

// Inputs
srcInput      = input.source(close, "Source")
atrMultInput  = input.float(1.5, "ATR Multiplier")
muInput       = input.float(0.6, "Adaptation Rate (μ)")

entryMode    = input.string("A",  "Entry Mode",       options=["A","B","C"])
entrySubMode = input.string("B1", "Early Entry Type", options=["B1","B2"])

exitMode  = input.string("By Trend Change", "Exit Mode",
                         options=["By Trend Change","By Price Cross","Both"])
useLongs  = input.bool(true,  "Enable Longs")
useShorts = input.bool(true,  "Enable Shorts")

useBreakeven  = input.bool(true,  "Use Breakeven")
beTriggerPerc = input.float(0.5,  "BE Trigger %")
beOffsetPerc  = input.float(0.0,  "BE Offset %")

usePartialTP   = input.bool(true, "Use Partial TP")
tpPerc         = input.float(2.0, "TP % for Partial Close")
tpQtyPerc      = input.float(20.0, "Close % at TP")


// ---------------------------------------------------------
// L1 Filter
// ---------------------------------------------------------
float atr200    = ta.atr(200)
float threshold = atr200 * atrMultInput
var float z = na
var float v = 0.0

if bar_index == 0
    z := srcInput
else
    float zPrev = z[1]
    float vPrev = v[1]
    float zPred = zPrev + vPrev
    float zTemp = zPred + muInput * (srcInput - zPred)
    float diff  = zTemp - zPrev
    v := math.abs(diff) > threshold ? math.sign(diff)*(math.abs(diff)-threshold) : 0
    z := zPrev + v

// Trend
var int trend = 0
if z > z[1]
    trend := 1
else if z < z[1]
    trend := -1

bool upChange   = trend == 1 and trend[1] == -1
bool downChange = trend == -1 and trend[1] == 1

// ---------------------------------------------------------
// Entry logic
// ---------------------------------------------------------
bool longA  = upChange
bool shortA = downChange

bool longB1  = srcInput > z and srcInput[1] <= z[1]
bool shortB1 = srcInput < z and srcInput[1] >= z[1]

bool longB2  = v > 0 and v[1] <= 0
bool shortB2 = v < 0 and v[1] >= 0

bool longC  = upChange[1]
bool shortC = downChange[1]

bool longEntryRaw  = entryMode == "A" ? longA  : entryMode == "B" ? (entrySubMode == "B1" ? longB1  : longB2) : longC
bool shortEntryRaw = entryMode == "A" ? shortA : entryMode == "B" ? (entrySubMode == "B1" ? shortB1 : shortB2) : shortC

bool longEntry  = longEntryRaw  and useLongs
bool shortEntry = shortEntryRaw and useShorts

bool inLong  = strategy.position_size > 0
bool inShort = strategy.position_size < 0

// ---------------------------------------------------------
// Exit logic
// ---------------------------------------------------------
bool priceAbove = srcInput > z
bool priceBelow = srcInput < z

bool exitLong =
     exitMode == "By Trend Change" ? downChange :
     exitMode == "By Price Cross"  ? priceBelow :
                                     (downChange or priceBelow)

bool exitShort =
     exitMode == "By Trend Change" ? upChange :
     exitMode == "By Price Cross"  ? priceAbove :
                                     (upChange or priceAbove)

// ---------------------------------------------------------
// Breakeven levels
// ---------------------------------------------------------
float beLong  = na
float beShort = na

if useBreakeven and strategy.position_size != 0
    float entry = strategy.position_avg_price
    float profit = (close - entry) / entry * 100 * (inLong ? 1 : -1)

    if inLong and profit >= beTriggerPerc
        beLong := entry * (1 + beOffsetPerc / 100)

    if inShort and profit >= beTriggerPerc
        beShort := entry * (1 - beOffsetPerc / 100)

// ---------------------------------------------------------
// Flip logic (fixed HUD update)
// ---------------------------------------------------------
bool flipLongToShort = inLong and downChange
bool flipShortToLong = inShort and upChange

if flipLongToShort
    strategy.close("Long")
    strategy.entry("Short", strategy.short)


if flipShortToLong
    strategy.close("Short")
    strategy.entry("Long", strategy.long)


// ---------------------------------------------------------
// Entry tracking
// ---------------------------------------------------------
bool newLongEntry  = longEntry  and not inLong  and not inShort
bool newShortEntry = shortEntry and not inShort and not inLong

if newLongEntry
    strategy.entry("Long", strategy.long)


if newShortEntry
    strategy.entry("Short", strategy.short)


// ---------------------------------------------------------
// Breakeven exits
// ---------------------------------------------------------
if inLong and not na(beLong)
    strategy.exit("Long BE", from_entry="Long", stop=beLong)

if inShort and not na(beShort)
    strategy.exit("Short BE", from_entry="Short", stop=beShort)

// ---------------------------------------------------------
// Partial TP logic
// ---------------------------------------------------------
float tpLong  = na
float tpShort = na

if usePartialTP and strategy.position_size != 0
    float entry = strategy.position_avg_price
    if inLong
        tpLong := entry * (1 + tpPerc / 100)
    if inShort
        tpShort := entry * (1 - tpPerc / 100)

if usePartialTP
    if inLong and not na(tpLong)
        strategy.exit("Long TP Partial", from_entry="Long", limit=tpLong, qty_percent=tpQtyPerc)
    if inShort and not na(tpShort)
        strategy.exit("Short TP Partial", from_entry="Short", limit=tpShort, qty_percent=tpQtyPerc)

// ---------------------------------------------------------
// Previous position state
// ---------------------------------------------------------
bool wasLong  = strategy.position_size[1] > 0
bool wasShort = strategy.position_size[1] < 0

// ---------------------------------------------------------
// LuxAlgo Trend Visuals
// ---------------------------------------------------------
color zColor = trend == 1 ? BULL_COLOR : BEAR_COLOR

zPlot   = plot(z, "L1 Proximal Filter", color=zColor, linewidth=3)
srcPlot = plot(srcInput, "Source Plot", color=na)

bool showFill = (trend == 1 and srcInput > z) or (trend == -1 and srcInput < z)

color fillTopColor    = showFill ? color.new(zColor, 50)  : na
color fillBottomColor = showFill ? color.new(zColor, 100) : na

fill(srcPlot, zPlot, srcInput, z, fillTopColor, fillBottomColor, "Trend Fill")

float switchVal   = (upChange or downChange) ? z[1] : na
color switchColor = upChange ? BULL_COLOR : BEAR_COLOR

plot(switchVal, "Trend Switch Dot", color=switchColor, style=plot.style_circles, linewidth=4, offset=-1)

// ---------------------------------------------------------
// TP & BE lines (transparent, disappear when inactive)
// ---------------------------------------------------------
float tpLine = inLong ? tpLong : inShort ? tpShort : na
plot(tpLine, "TP Line", color=color.new(color.yellow, 60), style=plot.style_linebr, linewidth=2)

float beLine = inLong ? beLong : inShort ? beShort : na
plot(beLine, "BE Line", color=color.new(COL_BE, 60), style=plot.style_linebr, linewidth=2)

// ---------------------------------------------------------
// BE marker (simple & perfect)
// ---------------------------------------------------------
float beLinePrev = beLine[1]

bool beLongHit  = not na(beLinePrev) and na(beLine) and wasLong
bool beShortHit = not na(beLinePrev) and na(beLine) and wasShort

plotshape(beLongHit,  "Long BE Hit",  shape.square, location.belowbar, COL_BE, size=size.small)
plotshape(beShortHit, "Short BE Hit", shape.square, location.abovebar, COL_BE, size=size.small)

// ---------------------------------------------------------
// TP markers (only real partial exits)
// ---------------------------------------------------------
bool sizeReducedLong  = wasLong  and strategy.position_size < strategy.position_size[1] and strategy.position_size > 0
bool sizeReducedShort = wasShort and strategy.position_size > strategy.position_size[1] and strategy.position_size < 0

bool tpLongHit  = sizeReducedLong  and not na(tpLong)
bool tpShortHit = sizeReducedShort and not na(tpShort)

plotshape(tpLongHit,  "Long TP Partial Hit",  shape.circle, location.abovebar, COL_TP_LONG, size=size.small)
plotshape(tpShortHit, "Short TP Partial Hit", shape.circle, location.belowbar, COL_TP_SHORT, size=size.small)

// ---------------------------------------------------------
// Entry markers
// ---------------------------------------------------------
plotshape(longEntry,  "Long Entry",  shape.triangleup,   location.belowbar, COL_LONG_ENTRY,  size=size.small)
plotshape(shortEntry, "Short Entry", shape.triangledown, location.abovebar, COL_SHORT_ENTRY, size=size.small)

// ---------------------------------------------------------
// Flip markers
// ---------------------------------------------------------
plotshape(flipLongToShort, "Flip L→S", shape.diamond, location.abovebar, COL_FLIP_SHORT, size=size.small)
plotshape(flipShortToLong, "Flip S→L", shape.diamond, location.belowbar, COL_FLIP_LONG, size=size.small)

// ---------------------------------------------------------
// Alerts
// ---------------------------------------------------------
alertcondition(longEntry,        "Long Entry",        "TSF LONG ENTRY")
alertcondition(shortEntry,       "Short Entry",       "TSF SHORT ENTRY")
alertcondition(flipLongToShort,  "Flip Long→Short",   "TSF FLIP SHORT")
alertcondition(flipShortToLong,  "Flip Short→Long",   "TSF FLIP LONG")
alertcondition(tpLongHit,        "Long TP Partial",   "TSF LONG TP PARTIAL")
alertcondition(tpShortHit,       "Short TP Partial",  "TSF SHORT TP PARTIAL")
alertcondition(beLongHit,        "Long BE",           "TSF LONG BE")
alertcondition(beShortHit,       "Short BE",          "TSF SHORT BE")