Stratégie de trading de suivi de tendance combinant plusieurs moyennes mobiles et indicateurs stochastiques

SMA KDJ ATR RSI MACD
Date de création: 2024-12-27 14:43:30 Dernière modification: 2024-12-27 14:43:30
Copier: 3 Nombre de clics: 386
1
Suivre
1617
Abonnés

Stratégie de trading de suivi de tendance combinant plusieurs moyennes mobiles et indicateurs stochastiques

Aperçu

La stratégie est un système de trading de suivi de tendance combinant plusieurs moyennes mobiles (SMA) et des indicateurs aléatoires (KDJ). La stratégie utilise un mécanisme de stop-loss dynamique pour ajuster la gestion des positions en fonction des mouvements du marché, à la fois pour protéger les bénéfices et ne pas quitter le marché trop tôt.

Principe de stratégie

La stratégie repose sur les éléments fondamentaux suivants :

  1. Système de double équilibre: utilisation des SMA de 19 cycles et de 74 cycles comme outil de jugement de tendance
  2. Les fourchettes de prix sont divisées en cinq niveaux pour déterminer la force et la faiblesse du marché.
  3. Indicateur aléatoire: utilisation d’un indicateur aléatoire de 60 cycles pour juger des surachats et des survente
  4. Confirmation de la tendance: déterminer la continuité de la tendance à partir de trois lignes K successives
  5. Conditions d’entrée: entrée lorsque le prix franchit le SMA de 74 cycles et se situe dans la fourchette correspondante
  6. Système d’arrêt des pertes: suivi des pertes et sortie en cas de changement de tendance

Avantages stratégiques

  1. Intégrité du système: une analyse complète du marché, combinée à un suivi des tendances et à des indicateurs dynamiques
  2. Gestion des risques: utilisation de mécanismes de stop multiples, y compris le stop de dureté et le stop de suivi
  3. Adaptabilité: la capacité à s’adapter à différents environnements de marché en ajustant les paramètres
  4. Capture des tendances: capture des tendances à moyen et long terme et évite les faux signaux
  5. Gestion des positions: Adaptation des positions en fonction de la dynamique du marché pour améliorer l’efficacité de l’utilisation des fonds

Risque stratégique

  1. Risque de choc: des échanges fréquents sur le marché horizontal
  2. Risque de glissement: des glissements plus importants sont possibles à grande vitesse
  3. Sensibilité des paramètres : différentes combinaisons de paramètres peuvent entraîner de grandes différences dans les performances de la stratégie
  4. Dépendance aux conditions du marché: les stratégies sont plus performantes dans les marchés en tendance
  5. Risques de gestion des fonds: les opérations à plein régime peuvent entraîner des risques de retrait plus importants

Orientation de l’optimisation de la stratégie

  1. Introduction de l’indicateur de volatilité: envisagez d’ajouter l’indicateur ATR pour ajuster dynamiquement le stop loss
  2. Optimiser le timing de l’admission: augmenter la confirmation de la quantité d’admission pour améliorer la précision de l’admission
  3. Amélioration de la gestion des fonds: ajout d’un module de gestion des positions, adapté à la dynamique des risques
  4. Augmentation du jugement sur les conditions du marché: des indicateurs de force de tendance peuvent être ajoutés pour filtrer les signaux de trading
  5. Amélioration des mécanismes d’arrêt des pertes: envisagez d’utiliser le suivi des pertes en pourcentage pour améliorer la flexibilité

Résumer

La stratégie, combinant plusieurs indicateurs techniques pour construire un système de négociation complet, avec une bonne capacité de suivi des tendances et un mécanisme de gestion des risques. Bien que cela puisse être difficile dans certains environnements de marché, la stratégie est susceptible de maintenir une performance stable dans différents environnements de marché grâce à une optimisation et une amélioration continues. Il est recommandé aux traders de surveiller les positions, de fixer des arrêts de perte raisonnables et d’ajuster les paramètres en temps opportun en fonction des conditions du marché.

Code source de la stratégie
/*backtest
start: 2024-11-26 00:00:00
end: 2024-12-25 08:00:00
period: 4h
basePeriod: 4h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Purple SMA Strategy", overlay=true)

// === INPUTS ===
zoneLength = input.int(20, "Price Zone Length", minval=5)
tickSize = input.float(1.0, "Tick Size for Hard Stop")
hardStopTicks = input.int(50, "Hard Stop Loss in Ticks")

// === CALCULATE ZONES ===
h = ta.highest(high, zoneLength)
l = ta.lowest(low, zoneLength)
priceRange = h - l
lvl5 = h
lvl4 = l + (priceRange * 0.75)  // Orange line
lvl3 = l + (priceRange * 0.50)  // Yellow line
lvl2 = l + (priceRange * 0.25)  // Green line
lvl1 = l

// === INDICATORS ===
sma19 = ta.sma(close, 19)
sma74 = ta.sma(close, 74)

// === CANDLE COLOR CONDITIONS ===
isGreenCandle = close > open
isRedCandle = close < open

// === CONTINUOUS TREND DETECTION ===
isThreeGreenCandles = close > open and close[1] > open[1] and close[2] > open[2]
isThreeRedCandles = close < open and close[1] < open[1] and close[2] < open[2]

var bool inGreenTrend = false
var bool inRedTrend = false

// Update trends
if isThreeGreenCandles
    inGreenTrend := true
    inRedTrend := false
if isThreeRedCandles
    inRedTrend := true
    inGreenTrend := false
if (inGreenTrend and isRedCandle) or (inRedTrend and isGreenCandle)
    inGreenTrend := false
    inRedTrend := false

// === STOCHASTIC CONDITIONS ===
k = ta.stoch(close, high, low, 60)
d = ta.sma(k, 10)
isOverbought = d >= 80
isOversold = d <= 20
stochUp = d > d[1]
stochDown = d < d[1]

// === SMA COLOR LOGIC ===
sma19Color = if isOverbought and stochUp
    color.green
else if isOverbought and stochDown
    color.red
else if isOversold and stochUp
    color.green
else if isOversold and stochDown
    color.red
else if stochUp
    color.blue
else if stochDown
    color.purple
else
    color.gray

sma74Color = sma74 < sma19 ? color.green : color.red

// === CROSSING CONDITIONS ===
crossUpSMA = ta.crossover(close, sma74)
crossDownSMA = ta.crossunder(close, sma74)

// === ENTRY CONDITIONS ===
buyCondition = crossUpSMA and close > lvl4
sellCondition = crossDownSMA and close < lvl2

// === POSITION MANAGEMENT ===
var float stopLevel = na
var bool xMode = false

// Entry and Stop Loss
if buyCondition
    strategy.entry(id="Long", direction=strategy.long)
    stopLevel := close - (hardStopTicks * tickSize)
    xMode := false

if sellCondition
    strategy.entry(id="Short", direction=strategy.short)
    stopLevel := close + (hardStopTicks * tickSize)
    xMode := false

// Update stops based on X's
if strategy.position_size != 0 and (inGreenTrend or inRedTrend)
    xMode := true
    if strategy.position_size > 0  // Long position
        stopLevel := low
    else  // Short position
        stopLevel := high

// Exit logic
if strategy.position_size > 0  // Long position
    if low <= stopLevel
        strategy.close(id="Long")
    else if xMode and not (inGreenTrend or inRedTrend)
        strategy.close(id="Long")

if strategy.position_size < 0  // Short position
    if high >= stopLevel
        strategy.close(id="Short")
    else if xMode and not (inGreenTrend or inRedTrend)
        strategy.close(id="Short")

// === PLOTTING ===
plot(sma19, "SMA 19", color=sma19Color, linewidth=2)
plot(sma74, "SMA 74", color=sma74Color, linewidth=2)
plot(lvl5, "Upper Zone Top", color=color.red, linewidth=2)
plot(lvl4, "Upper Zone Bottom", color=color.orange, linewidth=2)
plot(lvl3, "Middle Line", color=color.yellow, linewidth=2)
plot(lvl2, "Lower Zone Top", color=color.green, linewidth=2)
plot(lvl1, "Lower Zone Bottom", color=color.blue, linewidth=2)

// Plot X signals
plotshape(inGreenTrend, title="Bullish Line", style=shape.xcross, location=location.belowbar, color=color.white, size=size.tiny)
plotshape(inRedTrend, title="Bearish Line", style=shape.xcross, location=location.abovebar, color=color.white, size=size.tiny)

// Zone fills
var p1 = plot(lvl5, display=display.none)
var p2 = plot(lvl4, display=display.none)
var p3 = plot(lvl2, display=display.none)
var p4 = plot(lvl1, display=display.none)
fill(p1, p2, color=color.new(color.red, 90))
fill(p3, p4, color=color.new(color.green, 90))

// Plot entry signals
plotshape(buyCondition, title="Buy", style=shape.square, location=location.belowbar, color=color.new(color.blue, 20), size=size.tiny, text="BUY", textcolor=color.blue)
plotshape(sellCondition, title="Sell", style=shape.square, location=location.abovebar, color=color.new(color.red, 20), size=size.tiny, text="SELL", textcolor=color.red)