Die Ressourcen sind geladen. Beförderung...

T3 gleitender Durchschnittstrend nach Strategie mit Trailing Stop Loss

Schriftsteller:ChaoZhang, Datum: 2024-11-28 15:17:13
Tags:T3MASMAEMA

img

Übersicht

Diese Strategie ist ein umfassendes quantitatives Handelssystem, das T3 Moving Average, Trend Following und Trailing Stop Loss Mechanismen kombiniert. Die Strategie identifiziert die Markttrendrichtung mithilfe von T3 Moving Average, bestätigt Signale mithilfe des Lemon Trend Indicator und TDFI Indikators und beinhaltet ein Risikomanagementsystem, das Trailing Stops mit Fixed Stops kombiniert, um Trends zu erfassen und Risiken effektiv zu kontrollieren.

Strategieprinzipien

Die Strategie besteht aus drei Hauptkomponenten: Trendidentifizierung, Signalbestätigung und Risikomanagement. Erstens verwendet sie den T3 Moving Average als primäres Trendidentifizierungswerkzeug, das die Verzögerung reduziert und gleichzeitig durch sechsfache exponentielle gleitende Durchschnittsberechnungen die Glänze beibehält. Zweitens berechnet sie Preisvolatilitätsbereiche mithilfe des Lemon Trend Indicators und filtert Signale mit dem TDFI-Indikator und erzeugt Handelssignale nur, wenn der Preis durch den Volatilitätsbereich bricht und TDFI bestätigt. Schließlich verwendet die Strategie eine Kombination von Trailing und Fixed Stops für das Risikomanagement, wobei Trailing Stops aktiviert werden, nachdem der Preis Schwellenwerte erreicht hat, während Fixed Stops als Schutz beibehalten werden.

Strategische Vorteile

  1. Mehrere Signalbestätigungsmechanismen verbessern die Genauigkeit des Handels
  2. T3 gleitender Durchschnitt verringert die Auswirkungen falscher Ausbrüche
  3. Flexibles Risikomanagementsystem, das die Gewinne schützt und gleichzeitig die Entwicklung von Trends ermöglicht
  4. Unterstützt teilweise Positionsabgänge für die stufenweise Gewinnrealisation
  5. Hochverstellbare Parameter für die Optimierung unter unterschiedlichen Marktbedingungen

Strategische Risiken

  1. Komplexe Berechnungen des gleitenden Durchschnitts von T3 können Rechenverzögerungen mit sich bringen
  2. Mehrfache Signalbestätigungen können zu verpassten Handelsmöglichkeiten führen
  3. Bei volatilen Marktbedingungen kann eine vorzeitige Auslösung von Trailing-Stops erfolgen
  4. Erfordert signifikante Kursbewegungen, um effektive Signale zu erzeugen
  5. Kann häufige falsche Signale in verschiedenen Märkten erzeugen

Optimierungsrichtlinien

  1. Einführung von Volatilitätsindikatoren zur Anpassung der Trailing Stop-Parameter
  2. Hinzufügen eines Marktumfelderkennungsmoduls für verschiedene Parametermengen
  3. Optimierung der Berechnungszeiten für TDFI-Indikatoren für eine verbesserte Signalzeit
  4. Erwägen Sie die Einbeziehung von Lautstärkungsfaktoren für die Signalbestätigung
  5. Forschungsmechanismen für die Adaptive Partial Profit Taking Ratio

Schlussfolgerung

Es handelt sich um eine umfassend entwickelte Trend-Folge-Strategie, die durch mehrere technische Indikatoren zuverlässige Handelssignale und ein effektives Risikomanagement gewährleistet.


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

Verwandt

Mehr