La stratégie de négociation de rupture de hauteur de la bougie de sortie basée sur l'EMA multi, le RSI et l'écart-type

Auteur:ChaoZhang est là., Date: 2024-03-28 16:13:45 Je vous en prie.
Les étiquettes:

img

Vue d'ensemble de la stratégie

Cette stratégie combine plusieurs moyennes mobiles exponentielles (EMA), l'indice de force relative (RSI) et une condition de sortie basée sur l'écart type pour identifier les opportunités d'achat et de vente potentiels. Elle utilise des EMA à court terme (6, 8, 12 jours), à moyen terme (55 jours) et à long terme (150, 200, 250 jours) pour analyser la direction et la force des tendances du marché.

Principes de stratégie

  1. Calculer plusieurs EMA (6, 8, 12, 55, 100, 150, 200) comme références visuelles pour évaluer les tendances du marché.
  2. Déterminer le plus haut et le plus bas des bougies N les plus récentes sur la base des données fournies par l'utilisateur (3-4 bougies).
  3. Entrée longue: la clôture actuelle est supérieure à la plus haute des bougies N récentes et supérieure au filtre EMA (si elle est activée).
  4. Entrée courte: la clôture actuelle est inférieure au plus bas des bougies N récentes et inférieure au filtre EMA (si activé).
  5. Exit Long: la clôture actuelle est inférieure à l'EMA de 12 jours + 0,5 écarts types, ou inférieure à l'EMA de 12 jours.
  6. Exit Short: la clôture actuelle est supérieure à l'EMA de 12 jours - 0,5 écarts types, ou supérieure à l'EMA de 12 jours.
  7. Utilisez l'indicateur RSI comme indicateur supplémentaire avec une période de défaut de 14, un seuil de survente de 30 et un seuil de surachat de 70.

Les avantages de la stratégie

  1. Combine à la fois les dimensions de suivi des tendances (EMA multiples) et de dynamique (RSI) pour une perspective d'analyse de marché plus complète.
  2. Un mécanisme unique de sortie basé sur l'écart type peut équilibrer la protection des bénéfices et le contrôle des risques.
  3. Code hautement modulaire avec des paramètres clés configurables par les utilisateurs pour une grande flexibilité.
  4. Applicable à plusieurs instruments et délais, en particulier les actions quotidiennes et le trading de Bitcoin.

Analyse des risques

  1. Des signaux erronés fréquents lors d'une consolidation du marché ou d'un renversement précoce de tendance, entraînant des pertes consécutives.
  2. Les paramètres par défaut peuvent ne pas être efficaces pour toutes les conditions du marché; une optimisation basée sur le backtesting est nécessaire.
  3. Il est recommandé de combiner avec d'autres indicateurs les niveaux de support/résistance pour la prise de décision.
  4. Lente à réagir aux changements de tendance provoqués par des événements majeurs soudains.

Directions d'optimisation

  1. Optimiser les paramètres EMA et RSI: effectuer des recherches exhaustives pour les plages de paramètres optimales basées sur les instruments, les délais et les caractéristiques du marché.
  2. Mettre en place des mécanismes de stop-loss et de take-profit: fixer des niveaux raisonnables de stop-loss et de take-profit en fonction d'indicateurs de volatilité tels que l'ATR afin de contrôler les risques liés à la négociation unique.
  3. Mettre en œuvre la dimensionnement des positions: ajuster la taille des positions en fonction de la force de la tendance (par exemple, ADX) ou de la proximité des niveaux de support/résistance clés.
  4. Combiner avec d'autres indicateurs techniques: tels que les bandes de Bollinger, le MACD, les croisements des moyennes mobiles pour améliorer la fiabilité des signaux d'entrée/sortie.
  5. Optimiser pour différents états de marché: ajuster les combinaisons de paramètres pour les marchés en tendance, en gamme et en transition séparément.

Résumé

Cette stratégie est basée sur la mise en place d'une stratégie de trading de décalage de hauteur de bougie basée sur plusieurs moyennes mobiles, RSI et une sortie par déviation standard. La stratégie analyse le marché à la fois à partir des dimensions de tendance et de l'élan tout en utilisant un mécanisme de sortie par déviation standard unique pour saisir les opportunités de tendance et gérer les risques. La logique de la stratégie est claire, rigoureuse et la mise en œuvre du code est concise et efficace. Avec une optimisation appropriée, cette stratégie a le potentiel de devenir une stratégie de trading de fréquence moyenne à élevée intradienne robuste. Cependant, il est important de noter que toute stratégie a ses limites, et une utilisation aveugle peut introduire des risques.


/*backtest
start: 2023-03-22 00:00:00
end: 2024-03-27 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Candle Height Breakout with Configurable Exit and Signal Control", shorttitle="CHB Single Signal", overlay=true)

// Input parameters for EMA filter and its length
useEmaFilter = input.bool(true, "Use EMA Filter", group="Entry Conditions")
emaFilterLength = input.int(55, "EMA Filter Length", minval=1, group="Entry Conditions")
candleCount = input.int(4, "SamG Configurable Candle Count for Entry", minval=3, maxval=4, step=1, group="Entry Conditions")
exitEmaLength = input.int(12, "Exit EMA Length", minval=1, group="Exit Conditions", defval=12)
exitStdDevMultiplier = input.float(0.5, "Exit Std Dev Multiplier", minval=0.1, maxval=2.0, step=0.1, group="Exit Conditions")

// State variables to track if we are in a long or short position
var bool inLong = false
var bool inShort = false

// Calculating EMAs with fixed periods for visual reference
ema6 = ta.ema(close, 6)
ema8 = ta.ema(close, 8)
ema12 = ta.ema(close, 12)
ema55 = ta.ema(close, 55)
ema100 = ta.ema(close, 100)
ema150 = ta.ema(close, 150)
ema200 = ta.ema(close, 200)
emaFilter = ta.ema(close, emaFilterLength)
exitEma = ta.ema(close, exitEmaLength)

// Plotting EMAs
plot(ema6, "EMA 6", color=color.red)
plot(ema8, "EMA 8", color=color.orange)
plot(ema12, "EMA 12", color=color.yellow)
plot(ema55, "EMA 55", color=color.green)
plot(ema100, "EMA 100", color=color.blue)
plot(ema150, "EMA 150", color=color.purple)
plot(ema200, "EMA 200", color=color.fuchsia)
plot(emaFilter, "EMA Filter", color=color.black)
plot(exitEma, "Exit EMA", color=color.gray)

// Calculating the highest and lowest of the last N candles based on user input
highestOfN = ta.highest(high[1], candleCount)
lowestOfN = ta.lowest(low[1], candleCount)

// Entry Conditions with EMA Filter
longEntryCondition = not inLong and not inShort and (close > highestOfN) and (not useEmaFilter or (useEmaFilter and close > emaFilter))
shortEntryCondition = not inLong and not inShort and (close < lowestOfN) and (not useEmaFilter or (useEmaFilter and close < emaFilter))

// Update position state on entry
if (longEntryCondition)
    strategy.entry("Buy", strategy.long, comment="B")
    inLong := true
    inShort := false

if (shortEntryCondition)
    strategy.entry("Sell", strategy.short, comment="S")
    inLong := false
    inShort := true

// Exit Conditions based on configurable EMA and Std Dev Multiplier
smaForExit = ta.sma(close, exitEmaLength)
upperExitBand = smaForExit + exitStdDevMultiplier * ta.stdev(close, exitEmaLength)
lowerExitBand = smaForExit - exitStdDevMultiplier * ta.stdev(close, exitEmaLength)

exitConditionLong = inLong and (close < upperExitBand or close < exitEma)
exitConditionShort = inShort and (close > lowerExitBand or close > exitEma)

// Strategy exits
if (exitConditionLong)
    strategy.close("Buy", comment="Exit")
    inLong := false

if (exitConditionShort)
    strategy.close("Sell", comment="Exit")
    inShort := false

// Visualizing entry and exit points
plotshape(series=longEntryCondition, style=shape.labelup, location=location.belowbar, color=color.green, size=size.tiny, title="Buy Signal", text="B")
plotshape(series=shortEntryCondition, style=shape.labeldown, location=location.abovebar, color=color.red, size=size.tiny, title="Sell Signal", text="S")


Plus de