T3-Trendverfolgung mit gleitendem Durchschnitt und gleitender Stop-Loss-Strategie für den quantitativen Handel

T3MA SMA EMA
Erstellungsdatum: 2024-11-28 15:17:13 zuletzt geändert: 2024-11-28 15:17:13
Kopie: 1 Klicks: 505
1
konzentrieren Sie sich auf
1617
Anhänger

T3-Trendverfolgung mit gleitendem Durchschnitt und gleitender Stop-Loss-Strategie für den quantitativen Handel

Überblick

Die Strategie ist ein integriertes quantitatives Handelssystem, das T3-Mittellinien, Trendverfolgung und mobile Stop-Mechanismen kombiniert. Die Strategie identifiziert die Markttrendrichtung über die T3-Moving Average, bestätigt die Signale mit dem Lemon-Trend-Indikator und dem TDFI-Indikator und arbeitet mit einem Risikomanagementsystem zusammen, das mobile Stopps und feste Stopps kombiniert, um Trends zu erfassen und Risiken effektiv zu kontrollieren.

Strategieprinzip

Der Kern der Strategie besteht aus drei Hauptkomponenten: Trenderkennung, Signalbestätigung und Risikomanagement. Erstens wird der T3 Moving Average als wichtigstes Trenderkennungswerkzeug verwendet, wobei der T3 Average durch eine sechseilige Index-Moving Average berechnet wird, um die Lagerung effektiv zu reduzieren und die Gleitlänge zu halten. Zweitens wird der Preisfluktuationsbereich durch den Lemon-Trendindikator berechnet, der in Kombination mit dem TDFI-Indikator gefiltert wird.

Strategische Vorteile

  1. Der Mechanismus zur Bestätigung mehrerer Signale verbessert die Transaktionsgenauigkeit
  2. Der Einsatz von T3-Durchschnittslinien reduziert die Auswirkungen von False Breaks
  3. Flexible Risikomanagement-Systeme, die den Trends genügend Spielraum geben, während sie die Gewinne schützen
  4. Unterstützung für die Stilllegung von Positionen, um eine schrittweise Einzahlung der Gewinne zu ermöglichen
  5. Die Parameter sind flexibel und lassen sich leicht an unterschiedliche Marktbedingungen anpassen

Strategisches Risiko

  1. T3-Durchschnittsrechnung ist kompliziert und kann mit Verzögerungen verbunden sein
  2. Multiple-Signal-Bestätigung kann zu verpassten Handelschancen führen
  3. Bewegungsstillstand kann bei starken Schwankungen zu früh ausgelöst werden
  4. Es sind größere Preisschwankungen erforderlich, um ein wirksames Signal zu erzeugen.
  5. Häufige Falschsignale auf den OTC-Markt

Richtung der Strategieoptimierung

  1. Einführung von Volatilitätsindikatoren und Anpassung der beweglichen Stop-Loss-Parameter
  2. Hinzufügung eines Moduls zur Erkennung von Marktbedingungen, mit unterschiedlichen Parametern für verschiedene Marktbedingungen
  3. Optimierung der Berechnungszyklen für TDFI-Indikatoren und Verbesserung der Aktualität der Signale
  4. Signalbestätigung für die Erwägung der Einbeziehung von Transfertfaktoren
  5. Untersuchungen zur Anpassung an die Mechanismen zur Einstellung der partiellen Stopp-Ratio

Zusammenfassen

Es handelt sich um eine umfassende Trendverfolgungsstrategie, die durch die kombinierte Verwendung von mehreren technischen Indikatoren sowohl die Zuverlässigkeit von Handelssignalen als auch ein effektives Risikomanagement gewährleistet. Die modulare Gestaltung der Strategie bietet gute Skalierbarkeit und Optimierungsmöglichkeiten und eignet sich als Basisrahmen für ein mittelschweres und langfristiges Trendverfolgungssystem. In der Praxis wird empfohlen, die Parameter entsprechend der jeweiligen Handelsvariante und des Marktumfelds zu optimieren.

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