En la carga de los recursos... Cargando...

T3 Tendencia media móvil siguiendo la estrategia con stop loss de seguimiento

El autor:¿ Qué pasa?, Fecha: 2024-11-28 15:17:13
Las etiquetas:T3MALa SMAEl EMA

img

Resumen general

Esta estrategia es un sistema de negociación cuantitativo integral que combina el promedio móvil T3, el seguimiento de tendencias y los mecanismos de stop loss de seguimiento.

Principios de estrategia

La estrategia consiste en tres componentes principales: identificación de tendencias, confirmación de señales y gestión de riesgos. En primer lugar, utiliza el promedio móvil T3 como la herramienta principal de identificación de tendencias, que reduce el retraso mientras mantiene la suavidad a través de cálculos de promedio móvil exponencial de seis veces. En segundo lugar, calcula los rangos de volatilidad de precios utilizando el indicador de tendencia del limón y filtra las señales con el indicador TDFI, generando señales comerciales solo cuando el precio rompe el rango de volatilidad y TDFI confirma. Finalmente, la estrategia emplea una combinación de trailing y paradas fijas para la gestión de riesgos, con paradas de trailing activadas después de que el precio alcanza los niveles de umbral mientras se mantienen paradas fijas como protección.

Ventajas estratégicas

  1. Mecanismos de confirmación de múltiples señales mejoran la precisión de las operaciones
  2. T3 Promedio móvil reduce el impacto de las falsas rupturas
  3. Sistema de gestión de riesgos flexible que protege las ganancias y permite el desarrollo de tendencias
  4. Apoya las salidas parciales de posiciones para la realización de beneficios por etapas
  5. Parámetros altamente ajustables para la optimización en diferentes condiciones de mercado

Riesgos estratégicos

  1. Los cálculos complejos de la media móvil T3 pueden introducir retrasos computacionales
  2. Las confirmaciones de múltiples señales pueden causar oportunidades comerciales perdidas
  3. Las paradas de seguimiento pueden activarse prematuramente durante las condiciones volátiles del mercado
  4. Requiere movimientos significativos de precios para generar señales efectivas
  5. Puede generar señales falsas frecuentes en mercados variados

Direcciones de optimización

  1. Introducción de indicadores de volatilidad para ajustar los parámetros de parada posterior
  2. Añadir un módulo de reconocimiento del entorno de mercado para diferentes conjuntos de parámetros
  3. Optimizar los períodos de cálculo del indicador TDFI para mejorar el tiempo de la señal
  4. Considere la posibilidad de incorporar factores de volumen para la confirmación de la señal
  5. Investigación Mecanismos adaptativos de la proporción parcial de beneficio

Conclusión

Esta es una estrategia de seguimiento de tendencias diseñada de manera integral que garantiza señales comerciales confiables y una gestión eficaz del riesgo a través de múltiples indicadores técnicos. El diseño modular de la estrategia proporciona una buena extensibilidad y potencial de optimización, lo que la hace adecuada como base para sistemas de seguimiento de tendencias a medio y largo plazo. En la aplicación práctica, se recomienda optimizar los parámetros basados en instrumentos comerciales específicos y condiciones de mercado.


/*backtest
start: 2019-12-23 08:00:00
end: 2024-11-27 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Lemon Trend Strategy", overlay=true, initial_capital=10000, default_qty_type=strategy.percent_of_equity, default_qty_value=100)
 
// Input parameters
lookbackPeriod = input.int(14, "Lookback Period")
t3Length = input.int(200, "T3 MA Length")
t3Factor = input.float(0.7, "T3 Factor", minval=0, maxval=1)

// 移动止损参数
trailingStopPct = input.float(1.5, "移动止损百分比", minval=0.1, step=0.1)
trailingStopActivationPct = input.float(1.0, "移动止损激活百分比", minval=0.1, step=0.1)
 
// === T3 Moving Average Function ===
t3(src, length, factor) =>
    // First EMA
    e1 = ta.ema(src, length)
    // Second EMA
    e2 = ta.ema(e1, length)
    // Third EMA
    e3 = ta.ema(e2, length)
    // Fourth EMA
    e4 = ta.ema(e3, length)
    // Fifth EMA
    e5 = ta.ema(e4, length)
    // Sixth EMA
    e6 = ta.ema(e5, length)
   
    c1 = -factor * factor * factor
    c2 = 3 * factor * factor + 3 * factor * factor * factor
    c3 = -6 * factor * factor - 3 * factor - 3 * factor * factor * factor
    c4 = 1 + 3 * factor + factor * factor * factor + 3 * factor * factor
   
    t3 = c1 * e6 + c2 * e5 + c3 * e4 + c4 * e3
 
// Calculate T3 MA
t3ma = t3(close, t3Length, t3Factor)
plot(t3ma, "T3 MA", color=color.blue)
 
// === Lemon Trend Indicator ===
highLowDiff = high - low
normalizedDiff = ta.sma(highLowDiff, lookbackPeriod)
upperBand = ta.highest(high, lookbackPeriod)
lowerBand = ta.lowest(low, lookbackPeriod)
buySignal = ta.crossover(close, upperBand - normalizedDiff)
sellSignal = ta.crossunder(close, lowerBand + normalizedDiff)
 
// === TDFI Indicator ===
tdfiLength = input.int(14, "TDFI Length")
tdfi = ta.ema(close - close[1], tdfiLength)
tdfiSignal = ta.ema(tdfi, 9)
 
// Plot signals
plotshape(buySignal and tdfi > tdfiSignal and close > t3ma, "Buy Signal", location=location.belowbar, color=color.green, style=shape.triangleup, size=size.small)
plotshape(sellSignal and tdfi < tdfiSignal and close < t3ma, "Sell Signal", location=location.abovebar, color=color.red, style=shape.triangledown, size=size.small)
 
// === Strategy Logic ===
longCondition = buySignal and tdfi > tdfiSignal and close > t3ma
shortCondition = sellSignal and tdfi < tdfiSignal and close < t3ma
 
// 计算移动止损价格
var float longTrailingStop = na
var float shortTrailingStop = na

// 更新移动止损价格
if (strategy.position_size > 0)
    threshold = strategy.position_avg_price * (1 + trailingStopActivationPct / 100)
    if (high > threshold)
        stopPrice = high * (1 - trailingStopPct / 100)
        if (na(longTrailingStop) or stopPrice > longTrailingStop)
            longTrailingStop := stopPrice
    
if (strategy.position_size < 0)
    threshold = strategy.position_avg_price * (1 - trailingStopActivationPct / 100)
    if (low < threshold)
        stopPrice = low * (1 + trailingStopPct / 100)
        if (na(shortTrailingStop) or stopPrice < shortTrailingStop)
            shortTrailingStop := stopPrice

// Entry orders
if (longCondition)
    strategy.entry("Long", strategy.long)
    longTrailingStop := na
    
if (shortCondition)
    strategy.entry("Short", strategy.short)
    shortTrailingStop := na
 
// Calculate stop loss and take profit levels
longStopLoss = ta.lowest(low, lookbackPeriod)
shortStopLoss = ta.highest(high, lookbackPeriod)
 
// Exit conditions with fixed R:R
fixedRR = input.float(1.8, "Fixed Risk:Reward Ratio")
partialExitPct = input.float(50.0, "Partial Exit Percentage", minval=0, maxval=100) / 100
 
// 综合移动止损和固定止损
if (strategy.position_size > 0)
    longTakeProfit = strategy.position_avg_price + (strategy.position_avg_price - longStopLoss) * fixedRR
    stopPrice = na(longTrailingStop) ? longStopLoss : math.max(longStopLoss, longTrailingStop)
    strategy.exit("Long Exit", "Long", qty_percent=partialExitPct, stop=stopPrice, limit=longTakeProfit)
    
if (strategy.position_size < 0)
    shortTakeProfit = strategy.position_avg_price - (shortStopLoss - strategy.position_avg_price) * fixedRR
    stopPrice = na(shortTrailingStop) ? shortStopLoss : math.min(shortStopLoss, shortTrailingStop)
    strategy.exit("Short Exit", "Short", qty_percent=partialExitPct, stop=stopPrice, limit=shortTakeProfit)

// 绘制移动止损线
plot(strategy.position_size > 0 ? longTrailingStop : na, "Long Trailing Stop", color=color.red, style=plot.style_linebr)
plot(strategy.position_size < 0 ? shortTrailingStop : na, "Short Trailing Stop", color=color.red, style=plot.style_linebr)

Relacionados

Más.