Stratégie de trading de rupture de hauteur de chandelier avec sorties multiples de moyennes mobiles, RSI et écart type


Date de création: 2024-03-28 16:13:45 Dernière modification: 2024-03-28 16:13:45
Copier: 0 Nombre de clics: 671
1
Suivre
1617
Abonnés

Stratégie de trading de rupture de hauteur de chandelier avec sorties multiples de moyennes mobiles, RSI et écart type

Aperçu de la stratégie

Le RSI utilise les valeurs de l’EMA à court terme (6 et 8 et 12 jours), à moyen terme (55 jours) et à long terme (150 et 200 et 250 jours) pour analyser la direction et la force des tendances du marché. Le RSI utilise les seuils configurables d’achat (30) et de vente (70) pour évaluer la dynamique et identifier les situations de surachat ou de survente. La stratégie utilise également un mécanisme de sortie unique, qui est déclenché lorsque le cours de clôture touche la plage de décalage configurable de l’EMA du 12e jour (sous-entendu 0.5), offrant ainsi une méthode de protection potentielle des gains ou de réduction des pertes.

Principe de stratégie

  1. Calculer les EMA de plusieurs cycles (6, 8, 12, 55, 100, 150, 200) comme référence visuelle pour évaluer les tendances du marché.
  2. En fonction du nombre de fils de racine entrés par l’utilisateur (((3-4), calculer le prix le plus élevé et le prix le plus bas pour les N fils de racine les plus récents。
  3. Conditions d’achat: Le prix de clôture actuel est supérieur au prix le plus élevé du fil de racine N le plus récent et au filtre EMA ((si activé)).
  4. Conditions de vente: Le prix de clôture actuel est inférieur au prix de clôture le plus récent de la ligne de racine N, et inférieur au filtre EMA ((s’il est activé)).
  5. Conditions de sortie pour les positions longues: prix de clôture actuel inférieur à l’EMA du 12e jour + 0,5 fois le décalage standard, ou inférieur à l’EMA du 12e jour.
  6. Conditions de sortie de position courte: le cours de clôture actuel est supérieur à la moyenne des valeurs mobilières du 12e jour - 0,5 fois le décalage standard, ou supérieur à la moyenne des valeurs mobilières du 12e jour.
  7. Utilisation du RSI comme indicateur auxiliaire, cycle par défaut de 14, seuil de survente de 30, seuil de survente de 70.

Avantages stratégiques

  1. La combinaison des deux dimensions de suivi de la tendance (EMA multiple) et de la dynamique (RSI) fournit une perspective plus complète de l’analyse du marché.
  2. Un mécanisme unique de sortie basé sur la différence standard permet de trouver un équilibre entre la protection des bénéfices et la maîtrise des risques.
  3. Le code est hautement modulaire, les paramètres clés peuvent être configurés par l’utilisateur et la flexibilité est élevée.
  4. Il s’applique à de multiples variétés et périodes de temps, en particulier aux actions et aux transactions en bitcoins sur les lignes solaires.

Analyse des risques

  1. Il est fréquent que des fausses signaux apparaissent au début d’un choc ou d’un renversement de tendance, ce qui entraîne des pertes continues.
  2. Les paramètres par défaut ne sont pas valides pour tous les environnements de marché.
  3. Il est plus risqué de négocier en se basant uniquement sur cette stratégie et il est recommandé de prendre des décisions auxiliaires en combinaison avec d’autres indicateurs, tels que le soutien des niveaux de résistance.
  4. La réaction à une tendance déclenchée par un événement majeur soudain est lente.

Direction d’optimisation

  1. Optimisation des paramètres EMA et RSI: recherchez les meilleures combinaisons de paramètres en fonction de la variété, du cycle et des caractéristiques du marché.
  2. Ajout d’un mécanisme d’arrêt de perte: référence à des indicateurs de volatilité tels que l’ATR, définition d’un arrêt et d’un arrêt raisonnables, contrôle du risque d’une seule transaction.
  3. Introduction de la gestion de position: la taille de la position peut être ajustée en fonction de la force de la tendance (comme l’ADX) ou de la distance à laquelle la résistance au support critique est proche.
  4. Il est utilisé en combinaison avec d’autres indicateurs techniques, tels que les bandes de Brin, le MACD, le croisement de la ligne de parité, etc., pour améliorer la fiabilité des signaux d’ouverture de positions.
  5. Optimisation de l’état du marché: combinaison de paramètres optimisés pour différents états du marché tels que la tendance, les oscillations et les virages.

Résumer

Cette stratégie analyse le marché à partir de deux dimensions de la tendance et de la dynamique, tout en utilisant un mécanisme unique de sortie standard pour capturer les opportunités de tendance tout en maîtrisant les risques. L’idée de la stratégie est claire, la logique est rigoureuse, le code est simple et efficace.

Code source de la stratégie
/*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")