Les ressources ont été chargées... Je charge...

T3 Moyenne mobile de tendance suivant une stratégie avec arrêt-perte de suivi

Auteur:ChaoZhang est là., Date: 2024-11-28 15:17:13
Les étiquettes:T3MASMALe taux d'intérêt

img

Résumé

Cette stratégie est un système de négociation quantitatif complet qui combine les mécanismes T3 Moving Average, trend following et trailing stop loss.

Principes de stratégie

La stratégie se compose de trois composants principaux: l'identification des tendances, la confirmation des signaux et la gestion des risques. Premièrement, elle utilise la moyenne mobile T3 comme outil principal d'identification des tendances, ce qui réduit le décalage tout en maintenant la fluidité grâce à des calculs de moyenne mobile exponentielle à six fois. Deuxièmement, elle calcule les plages de volatilité des prix à l'aide de l'indicateur de tendance citron et filtre les signaux avec l'indicateur TDFI, générant des signaux de trading uniquement lorsque le prix franchit la plage de volatilité et que TDFI confirme. Enfin, la stratégie utilise une combinaison de trailing et d'arrêts fixes pour la gestion des risques, les trailing stops s'activant après que le prix ait atteint des niveaux de seuil tout en maintenant des arrêts fixes comme protection.

Les avantages de la stratégie

  1. Les mécanismes de confirmation de signaux multiples améliorent la précision des transactions
  2. T3 Moyenne mobile réduit l'impact des fausses ruptures
  3. Système de gestion des risques flexible qui protège les bénéfices tout en permettant le développement des tendances
  4. Soutenir les sorties partielles de positions pour réaliser des bénéfices par étapes
  5. Paramètres hautement réglables pour l'optimisation dans différentes conditions de marché

Risques stratégiques

  1. Les calculs complexes de la moyenne mobile T3 peuvent entraîner des retards de calcul
  2. Des confirmations de signaux multiples pourraient entraîner des opportunités de négociation manquées
  3. Les arrêts de trailing peuvent être déclenchés prématurément dans des conditions de marché volatiles
  4. Exige des mouvements de prix importants pour générer des signaux efficaces
  5. Peut générer de fréquents faux signaux sur différents marchés

Directions d'optimisation

  1. Introduction d'indicateurs de volatilité pour ajuster les paramètres de l'arrêt de retard
  2. Ajout d'un module de reconnaissance de l'environnement du marché pour différents ensembles de paramètres
  3. Optimiser les périodes de calcul de l'indicateur TDFI pour une meilleure synchronisation du signal
  4. Envisager d'intégrer des facteurs de volume pour la confirmation du signal
  5. Recherche sur les mécanismes adaptatifs du ratio partiel de prise de profit

Conclusion

Il s'agit d'une stratégie de suivi des tendances entièrement conçue qui garantit des signaux de trading fiables et une gestion efficace des risques grâce à de multiples indicateurs techniques.


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

Relationnée

Plus de