리소스 로딩... 로딩...

T3 이동평균 트렌드 트래일링 스톱 로스 전략

저자:차오장, 날짜: 2024-11-28 15:17:13
태그:T3MASMAEMA

img

전반적인 설명

이 전략은 T3 이동 평균, 트렌드 추적 및 트레일링 스톱 손실 메커니즘을 결합 한 포괄적 인 수치 거래 시스템입니다. 전략은 T3 이동 평균을 사용하여 시장 트렌드 방향을 식별하고 레몬 트렌드 지표 및 TDFI 지표를 사용하여 신호를 확인하며 트렌드를 파악하고 위험을 효과적으로 제어하기 위해 트레일링 스톱과 고정 스톱을 결합하는 리스크 관리 시스템을 통합합니다.

전략 원칙

이 전략은 트렌드 식별, 신호 확인 및 리스크 관리의 세 가지 주요 구성 요소로 구성됩니다. 첫째, T3 이동 평균을 주요 트렌드 식별 도구로 사용하며, 6 배 지수적인 이동 평균 계산을 통해 매끄럽게 유지하면서 지연을 줄입니다. 둘째, 레몬 트렌드 지표를 사용하여 가격 변동 범위를 계산하고 TDFI 지표로 신호를 필터하여 가격 변동 범위를 통과하고 TDFI를 확인 할 때만 거래 신호를 생성합니다. 마지막으로, 전략은 리스크 관리를 위해 트레일링 및 고정 스톱의 조합을 사용하고, 트레일링 스톱이 보호로 고정 스톱을 유지하면서 가격이 임계 수준에 도달 한 후에 활성화됩니다.

전략적 장점

  1. 여러 신호 확인 메커니즘은 거래 정확도를 향상시킵니다.
  2. T3 이동평균은 거짓 파업의 영향을 줄여줍니다.
  3. 유연한 리스크 관리 시스템으로 수익을 보호하면서 추세 발전을 허용
  4. 단계적으로 수익을 창출하기 위한 부분적인 포지션 종료를 지원합니다.
  5. 다양한 시장 조건에서 최적화를 위해 매우 조정 가능한 매개 변수

전략 위험

  1. 복잡한 T3 이동 평균 계산은 계산 지연을 가져올 수 있습니다.
  2. 다수의 신호 확인은 놓친 거래 기회를 유발할 수 있습니다.
  3. 트레일링 스톱은 변동적인 시장 조건에서 조기에 시작될 수 있습니다.
  4. 효과적인 신호를 생성하기 위해 중요한 가격 움직임이 필요합니다.
  5. 다양한 시장에서 자주 잘못된 신호를 생성 할 수 있습니다.

최적화 방향

  1. 트레일링 스톱 매개 변수를 조정하기 위해 변동성 지표를 도입합니다.
  2. 다른 매개 변수 집합에 대한 시장 환경 인식 모듈을 추가
  3. 더 나은 신호 타이밍을 위해 TDFI 지표 계산 기간을 최적화합니다.
  4. 신호 확인을 위해 부피 인수를 포함하는 것을 고려하십시오.
  5. 연구 적응성 부분 수익률 메커니즘

결론

이 전략은 다양한 기술 지표를 통해 신뢰할 수 있는 거래 신호와 효과적인 위험 관리를 보장하는 종합적으로 설계된 트렌드 추적 전략이다. 전략의 모듈형 설계는 좋은 확장성과 최적화 잠재력을 제공하여 중장기 트렌드 추적 시스템의 기초로 적합합니다. 실제 응용에서는 특정 거래 도구 및 시장 조건에 기반한 매개 변수를 최적화하는 것이 좋습니다.


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

관련

더 많은