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

Tendance combinée multi-SMA et stochastique suivant une stratégie de négociation

Auteur:ChaoZhang est là., Date: 2024-12-27 à 14h43
Les étiquettes:SMALe KDJATRIndice de résistanceLe MACD

img

Résumé

Cette stratégie est un système de trading qui combine plusieurs moyennes mobiles simples (SMA) avec l'oscillateur stochastique. Elle exécute les transactions lorsque les tendances du marché sont clairement définies en établissant des zones de prix et des conditions d'identification des tendances.

Principes de stratégie

La stratégie repose sur plusieurs éléments essentiels:

  1. Système à double SMA: utilise des SMA à 19 périodes et à 74 périodes pour déterminer la tendance
  2. Zones de prix: divise la fourchette de prix en 5 niveaux pour évaluer la force du marché
  3. L'oscillateur stochastique: utilise un stochastique à 60 périodes pour les conditions de surachat/survente.
  4. Confirmation de tendance: utilise trois bougies consécutives pour confirmer la poursuite de la tendance
  5. Conditions d'entrée: entre lorsque le prix franchit la SMA de 74 périodes et se situe dans des zones de prix spécifiées
  6. Mécanisme de stop-loss: met en œuvre des stops de trailing avec des sorties basées sur la tendance

Les avantages de la stratégie

  1. Complétude du système: Combine des indicateurs de tendance et de dynamique pour une analyse complète du marché
  2. Gestion des risques: plusieurs mécanismes de stop-loss, y compris les hard stops et les trailing stops
  3. Adaptabilité: peut être ajustée aux différentes conditions du marché grâce à l'optimisation des paramètres
  4. Capture des tendances: capture efficacement les tendances à moyen et long terme tout en évitant les faux signaux
  5. Gestion des positions: ajustement dynamique des positions en fonction des conditions du marché pour une utilisation efficace du capital

Risques stratégiques

  1. Risque de marché perturbé: peut générer des transactions fréquentes sur les marchés latéraux
  2. Risque de glissement: glissement potentiellement significatif sur les marchés en évolution rapide
  3. Sensibilité des paramètres: différentes combinaisons de paramètres peuvent entraîner des performances différentes
  4. Dépendance de l'environnement du marché: la stratégie fonctionne mieux sur les marchés en tendance
  5. Risque de gestion des capitaux: la dimensionnement complet des positions peut entraîner des prélèvements importants

Directions d'optimisation

  1. L'établissement doit fournir des informations détaillées sur les risques liés à l'utilisation de l'instrument.
  2. Optimiser le calendrier d'entrée: ajouter une confirmation de volume pour améliorer la précision de l'entrée
  3. Améliorer la gestion des capitaux: mettre en œuvre un module de dimensionnement des positions basé sur l'évaluation des risques
  4. Ajouter l'analyse de l'environnement du marché: inclure des indicateurs de force de tendance pour filtrer les signaux
  5. Améliorer le mécanisme d'arrêt des pertes: envisager des arrêts de retard basés sur le pourcentage pour une meilleure souplesse

Résumé

Cette stratégie construit un système de trading complet en combinant plusieurs indicateurs techniques, avec de fortes capacités de suivi des tendances et des mécanismes de gestion des risques. Bien qu'elle puisse faire face à des défis dans certaines conditions de marché, l'optimisation et le raffinement continus peuvent aider à maintenir une performance stable dans différents environnements de marché.


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

Relationnée

Plus de