O recurso está a ser carregado... Carregamento...

T3 Tendência média móvel de acordo com a estratégia com stop loss

Autora:ChaoZhang, Data: 2024-11-28 15:17:13
Tags:T3MASMAEMA

img

Resumo

Esta estratégia é um sistema de negociação quantitativo abrangente que combina a média móvel T3, seguindo a tendência e mecanismos de stop loss. A estratégia identifica a direção da tendência do mercado usando a média móvel T3, confirma sinais usando o indicador de tendência Lemon e o indicador TDFI e incorpora um sistema de gerenciamento de risco que combina paradas de trail com paradas fixas para capturar tendências e controlar riscos de forma eficaz.

Princípios de estratégia

A estratégia consiste em três componentes principais: identificação de tendências, confirmação de sinais e gerenciamento de riscos. Em primeiro lugar, usa a média móvel T3 como a principal ferramenta de identificação de tendências, que reduz o atraso enquanto mantém a suavidade através de cálculos de média móvel exponencial de seis vezes. Em segundo lugar, calcula os intervalos de volatilidade de preços usando o indicador de tendência de limão e filtra sinais com o indicador TDFI, gerando sinais comerciais apenas quando o preço atravessa o intervalo de volatilidade e o TDFI confirma. Finalmente, a estratégia emprega uma combinação de trailing e fixed stops para gerenciamento de riscos, com trailing stops ativando após o preço atingir níveis de limiar enquanto mantém paradas fixas como proteção.

Vantagens da estratégia

  1. Mecanismos de confirmação de sinais múltiplos melhoram a precisão das negociações
  2. A média móvel T3 reduz o impacto de falsos breakouts
  3. Sistema flexível de gestão de riscos que protege os lucros e permite o desenvolvimento das tendências
  4. Apoia saídas parciais de posições para realização de lucros por etapas
  5. Parâmetros altamente ajustáveis para otimização em diferentes condições de mercado

Riscos estratégicos

  1. Os cálculos complexos da média móvel T3 podem apresentar atrasos computacionais
  2. Confirmações de sinais múltiplas podem causar oportunidades de negociação perdidas
  3. As paradas de atraso podem desencadear-se prematuramente durante as condições voláteis do mercado
  4. Requer movimentos significativos de preços para gerar sinais eficazes
  5. Pode gerar sinais falsos frequentes em mercados variados

Orientações de otimização

  1. Introduzir indicadores de volatilidade para ajustar os parâmetros de trailing stop
  2. Adicionar módulo de reconhecimento do ambiente de mercado para diferentes conjuntos de parâmetros
  3. Otimizar os períodos de cálculo do indicador TDFI para melhor sincronização do sinal
  4. Considerar a incorporação de fatores de volume para confirmação de sinal
  5. Investigação Mecanismos adaptativos do rácio de lucro parcial

Conclusão

Esta é uma estratégia de seguimento de tendências concebida de forma abrangente que garante sinais de negociação confiáveis e gestão de risco eficaz através de múltiplos indicadores técnicos.


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

Mais.