Estrategia de optimización del seguimiento de tendencias con indicador doble T3

T3 TOTT EMA OTT RSI
Fecha de creación: 2025-01-17 14:29:51 Última modificación: 2025-01-17 14:29:51
Copiar: 2 Número de Visitas: 368
1
Seguir
1617
Seguidores

Estrategia de optimización del seguimiento de tendencias con indicador doble T3

Descripción general

La estrategia es un sistema de seguimiento de tendencias basado en el indicador Tillson T3 y el Twin Optimized Trend Follower (TOTT). Optimiza la generación de señales de trading combinándolo con el oscilador de momentum Williams %R. Esta estrategia utiliza configuraciones de parámetros de compra y venta independientes, que pueden ajustar de manera flexible la sensibilidad según las diferentes condiciones del mercado y mejorar la adaptabilidad de la estrategia.

Principio de estrategia

La estrategia consta de tres componentes fundamentales:

  1. Indicador Tillson T3: es una variante optimizada de la media móvil exponencial (EMA) que produce una línea de tendencia más suave al ponderar múltiples EMA.
  2. Rastreador de tendencias doblemente optimizado (TOTT): una herramienta de seguimiento de tendencias que ajusta de forma adaptativa los coeficientes de volatilidad y la acción del precio para calcular bandas superior e inferior para las condiciones de compra y venta respectivamente.
  3. Indicador Williams %R: un oscilador de momento utilizado para identificar condiciones de sobrecompra y sobreventa.

Lógica de generación de señales comerciales:

  • Condiciones de compra: Cuando la línea T3 atraviesa la pista superior del TOTT y el Williams %R es mayor que -20 (sobreventa)
  • Condiciones de venta: Cuando la línea T3 cae por debajo del track inferior de TOTT y Williams %R es mayor a -70

Ventajas estratégicas

  1. Fuerte estabilidad de la señal: a través del procesamiento de suavizado múltiple de los indicadores T3, se reduce de manera efectiva el riesgo de avances falsos.
  2. Buena adaptabilidad: la separación de los parámetros de compra y venta permite una optimización independiente para diferentes condiciones del mercado.
  3. Control de riesgos mejorado: integre Williams %R como confirmación secundaria para mejorar la confiabilidad de las transacciones
  4. Visualización clara: la estrategia proporciona un soporte integral de visualización de gráficos para facilitar el análisis y el juicio.

Riesgo estratégico

  1. Retraso en la inversión de tendencia: el suavizado múltiple del indicador T3 puede causar señales retrasadas
  2. No es adecuado para mercados agitados: se pueden generar demasiadas señales comerciales durante operaciones laterales.
  3. Alta sensibilidad de los parámetros: los parámetros deben ajustarse con frecuencia para diferentes entornos de mercado.

Sugerencias para el control de riesgos:

  • Introducción de un mecanismo de stop loss
  • Establecer límites de volumen de transacciones
  • Se agregó un filtro de confirmación de tendencia

Dirección de optimización de la estrategia

  1. Optimización dinámica de parámetros: desarrollo de mecanismos de ajuste de parámetros adaptativos
  2. Mejorar el reconocimiento del contexto del mercado: introducir un indicador de fuerza de tendencia
  3. Mejore la gestión de riesgos: agregue stop loss dinámico y take profit
  4. Filtrado de señales mejorado: integre más indicadores técnicos para confirmación

Resumir

Se trata de una estrategia de seguimiento de tendencias con una estructura completa y una lógica clara. Al combinar el indicador T3 y TOTT, y filtrar con Williams %R, funciona bien en mercados con tendencia. Si bien existe un cierto retraso, esta estrategia tiene un buen valor práctico y espacio de expansión a través de la optimización de parámetros y mejoras en la gestión de riesgos.

Código Fuente de la Estrategia
/*backtest
start: 2019-12-23 08:00:00
end: 2025-01-15 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT","balance":49999}]
*/

//@version=6
strategy("FON60DK by leventsah", overlay=true)

// Girdi AL
t3_length = input.int(5, title="Tillson Per AL", minval=1)
t3_opt = input.float(0.1, title="Tillson Opt AL", step=0.1, minval=0)
tott_length = input.int(5, title="TOTT Per AL", minval=1)
tott_opt = input.float(0.1, title="TOTT Opt AL", step=0.1, minval=0)
tott_coeff = input.float(0.006, title="TOTT Coeff AL", step=0.001, minval=0)

//GİRDİ SAT
t3_lengthSAT = input.int(5, title="Tillson Per SAT", minval=1)
t3_optSAT = input.float(0.1, title="Tillson Opt SAT", step=0.1, minval=0)
tott_lengthSAT = input.int(5, title="TOTT Per SAT", minval=1)
tott_opt_SAT = input.float(0.1, title="TOTT Opt SAT", step=0.1, minval=0)
tott_coeff_SAT = input.float(0.006, title="TOTT Coeff SAT", step=0.001, minval=0)

william_length = input.int(3, title="William %R Periyodu", minval=1)

// Tillson T3 AL
t3(src, length, opt) =>
    k = 2 / (length + 1)
    ema1 = ta.ema(src, length)
    ema2 = ta.ema(ema1, length)
    ema3 = ta.ema(ema2, length)
    ema4 = ta.ema(ema3, length)
    c1 = -opt * opt * opt
    c2 = 3 * opt * opt + 3 * opt * opt * opt
    c3 = -6 * opt * opt - 3 * opt - 3 * opt * opt * opt
    c4 = 1 + 3 * opt + opt * opt * opt + 3 * opt * opt
    t3_val = c1 * ema4 + c2 * ema3 + c3 * ema2 + c4 * ema1
    t3_val

t3_value = t3(close, t3_length, t3_opt)
t3_valueSAT = t3(close, t3_lengthSAT, t3_optSAT)


// TOTT hesaplaması (Twin Optimized Trend Tracker)
Var_Func(src, length) =>
    valpha = 2 / (length + 1)
    vud1 = math.max(src - src[1], 0)
    vdd1 = math.max(src[1] - src, 0)
    vUD = math.sum(vud1, 9)
    vDD = math.sum(vdd1, 9)
    vCMO = (vUD - vDD) / (vUD + vDD)
    var float VAR = na
    VAR := valpha * math.abs(vCMO) * src + (1 - valpha * math.abs(vCMO)) * nz(VAR[1], src)
    VAR

VAR = Var_Func(close, tott_length)
VAR_SAT = Var_Func(close, tott_lengthSAT)

//LONG 
MAvg = VAR
fark = MAvg * tott_opt * 0.01
longStop = MAvg - fark
longStopPrev = nz(longStop[1], longStop)
longStop := MAvg > longStopPrev ? math.max(longStop, longStopPrev) : longStop
shortStop = MAvg + fark
shortStopPrev = nz(shortStop[1], shortStop)
shortStop := MAvg < shortStopPrev ? math.min(shortStop, shortStopPrev) : shortStop
dir = 1
dir := nz(dir[1], dir)
dir := dir == -1 and MAvg > shortStopPrev ? 1 : dir == 1 and MAvg < longStopPrev ? -1 : dir
MT = dir == 1 ? longStop : shortStop
OTT = MAvg > MT ? MT * (200 + tott_opt) / 200 : MT * (200 - tott_opt) / 200
OTTup = OTT * (1 + tott_coeff)
OTTdn = OTT * (1 - tott_coeff)

//CLOSE
MAvgS = VAR_SAT
farkS = MAvgS * tott_opt_SAT * 0.01
longStopS = MAvgS - farkS
longStopPrevS = nz(longStopS[1], longStopS)
longStopS := MAvgS > longStopPrevS ? math.max(longStopS, longStopPrevS) : longStopS
shortStopS = MAvgS + farkS
shortStopPrevS = nz(shortStopS[1], shortStopS)
shortStopS := MAvgS < shortStopPrevS ? math.min(shortStopS, shortStopPrevS) : shortStopS
dirS = 1
dirS := nz(dirS[1], dirS)
dirS := dirS == -1 and MAvgS > shortStopPrevS ? 1 : dirS == 1 and MAvgS < longStopPrevS ? -1 : dirS
MTS = dirS == 1 ? longStopS : shortStopS
OTTS = MAvgS > MTS ? MTS * (200 + tott_opt_SAT) / 200 : MTS * (200 - tott_opt_SAT) / 200
OTTupS = OTTS * (1 + tott_coeff_SAT)
OTTdnS = OTTS * (1 - tott_coeff_SAT)

// Calculation of Williams %R
williamsR = -100 * (ta.highest(high, william_length) - close) / (ta.highest(high, william_length) - ta.lowest(low, william_length))

// Alım koşulu
longCondition = (t3_value > OTTup) and (williamsR > -20)

// Short koşulu (long pozisyonunu kapatmak için)
shortCondition = (t3_valueSAT < OTTdnS) and (williamsR > -70)

// Alım pozisyonu açma
if (longCondition)
    strategy.entry("Long", strategy.long)

// Short koşulu sağlandığında long pozisyonunu kapama
if (shortCondition)
    strategy.close("Long")


// Alım pozisyonu boyunca barları yeşil yapma
barcolor(strategy.position_size > 0 ? color.green : na)

// Grafikte göstergeleri çizme
plot(t3_value, color=color.blue, linewidth=1, title="Tillson AL")
plot(OTTup, color=color.green, linewidth=1, title="TOTT Up AL")
plot(OTTdn, color=color.red, linewidth=1, title="TOTT Down AL")

// Grafikte göstergeleri çizme
plot(t3_valueSAT, color=color.blue, linewidth=1, title="Tillson SAT")
plot(OTTupS, color=color.green, linewidth=1, title="TOTT Up SAT")
plot(OTTdnS, color=color.red, linewidth=1, title="TOTT Down SAT")