La stratégie de swing trading combine des positions longues et courtes dynamiques avec un système de signal de croisement de moyenne mobile

EMA SMA RSI ATR TP SL
Date de création: 2024-12-12 11:11:15 Dernière modification: 2024-12-12 11:11:15
Copier: 1 Nombre de clics: 360
1
Suivre
1617
Abonnés

La stratégie de swing trading combine des positions longues et courtes dynamiques avec un système de signal de croisement de moyenne mobile

Aperçu

Cette stratégie est une stratégie de trading sur la volatilité basée sur des indicateurs techniques, combinant des signaux multiples tels que le croisement de la ligne de parité, le sur-achat et le sur-vente RSI et le stop loss ATR. Le cœur de la stratégie est de capturer les tendances du marché par le croisement des EMA à court terme et des SMA à long terme, tout en utilisant le signal de confirmation RSI et en définissant dynamiquement les positions stop loss et stop loss via ATR.

Principe de stratégie

La stratégie utilise une combinaison d’indicateurs techniques à plusieurs niveaux pour construire le système de négociation:

  1. La couche de jugement de la tendance: utilise un croisement de 20 cycles EMA et 50 cycles SMA pour juger de la direction de la tendance. La couche supérieure de l’EMA est considérée comme un signal de plus et la couche inférieure comme un signal de moins.
  2. Couche de confirmation dynamique: utilisation de l’indicateur RSI pour juger de la survente et de la survente. Un RSI inférieur à 70 est autorisé à faire plus et un RSI supérieur à 30 est autorisé à faire moins.
  3. La couche de calcul de la volatilité: utilise l’ATR de 14 cycles pour calculer la position de stop-loss, avec un arrêt de perte de 1,5 fois l’ATR et un arrêt de stop-loss de 3 fois l’ATR.
  4. Gestion des positions: le nombre de positions ouvertes est calculé dynamiquement sur la base du capital initial et du ratio de risque par transaction (défaut de 1%).

Avantages stratégiques

  1. Confirmation de signaux multiples: réduire efficacement les fausses interférences par le croisement de la ligne moyenne et la combinaison des trois indicateurs RSI et ATR.
  2. Stop-loss dynamique: position de stop-loss ajustée dynamiquement en fonction de l’ATR pour mieux s’adapter aux changements de volatilité du marché.
  3. Flexible orientation des transactions: les transactions à plusieurs ou à zéro peuvent être activées individuellement en fonction des conditions du marché.
  4. Contrôle strict des risques: contrôle efficace des marges de risque de chaque transaction grâce à un contrôle des pourcentages de risque et à une gestion dynamique des positions.
  5. Support visuel: la stratégie fournit un support visuel complet du graphique, y compris la balisage des signaux et l’affichage des indicateurs.

Risque stratégique

  1. Risque de choc du marché: dans un marché de choc horizontal, le croisement de la ligne moyenne peut générer trop de faux signaux.
  2. Risque de glissement: pendant les périodes de forte volatilité, le prix de transaction réel peut être très éloigné du prix du signal.
  3. Risques de gestion des fonds: si le ratio de risque est trop élevé, cela peut entraîner des pertes individuelles excessives.
  4. Sensitivité des paramètres: les effets de la stratégie sont sensibles aux paramètres et nécessitent un ajustement soigneux.

Orientation de l’optimisation de la stratégie

  1. Augmentation du filtrage de la force de la tendance: un indicateur ADX peut être ajouté pour filtrer les signaux de négociation dans un environnement de tendance faible.
  2. Optimisation des cycles de la moyenne: les paramètres de la moyenne peuvent être ajustés dynamiquement en fonction des caractéristiques des cycles de marché.
  3. Amélioration des mécanismes d’arrêt des pertes: la fonction de suivi des pertes peut être ajoutée pour mieux protéger les bénéfices.
  4. Augmentation de la confirmation du volume d’achat: ajout d’un indicateur de volume d’achat comme confirmation auxiliaire pour améliorer la fiabilité du signal.
  5. Classification des environnements de marché: ajout d’un module d’identification des environnements de marché, utilisant différentes combinaisons de paramètres dans différents environnements de marché.

Résumer

La stratégie utilise une combinaison de multiples indicateurs techniques pour construire un système de négociation relativement complet. L’avantage de la stratégie réside dans la fiabilité de la confirmation des signaux et l’intégrité de la gestion des risques, mais il faut également tenir compte de l’impact de l’environnement du marché sur la performance de la stratégie.

Code source de la stratégie
/*backtest
start: 2019-12-23 08:00:00
end: 2024-12-10 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © CryptoRonin84

//@version=5
strategy("Swing Trading Strategy with On/Off Long and Short", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100)

// Input for turning Long and Short trades ON/OFF
enable_long = input.bool(true, title="Enable Long Trades")
enable_short = input.bool(true, title="Enable Short Trades")

// Input parameters for strategy
sma_short_length = input.int(20, title="Short EMA Length", minval=1)
sma_long_length = input.int(50, title="Long SMA Length", minval=1)
sl_percentage = input.float(1.5, title="Stop Loss (%)", step=0.1, minval=0.1)
tp_percentage = input.float(3, title="Take Profit (%)", step=0.1, minval=0.1)
risk_per_trade = input.float(1, title="Risk Per Trade (%)", step=0.1, minval=0.1)
capital = input.float(10000, title="Initial Capital", step=100)

// Input for date range for backtesting
start_date = input(timestamp("2020-01-01 00:00"), title="Backtest Start Date")
end_date = input(timestamp("2024-12-31 23:59"), title="Backtest End Date")
inDateRange = true

// Moving averages
sma_short = ta.ema(close, sma_short_length)
sma_long = ta.sma(close, sma_long_length)

// RSI setup
rsi = ta.rsi(close, 14)
rsi_overbought = 70
rsi_oversold = 30

// ATR for volatility-based stop-loss calculation
atr = ta.atr(14)
stop_loss_level_long = strategy.position_avg_price - (1.5 * atr)
stop_loss_level_short = strategy.position_avg_price + (1.5 * atr)
take_profit_level_long = strategy.position_avg_price + (3 * atr)
take_profit_level_short = strategy.position_avg_price - (3 * atr)

// Position sizing based on risk per trade
risk_amount = capital * (risk_per_trade / 100)
position_size = risk_amount / (close * sl_percentage / 100)

// Long and Short conditions
long_condition = ta.crossover(sma_short, sma_long) and rsi < rsi_overbought
short_condition = ta.crossunder(sma_short, sma_long) and rsi > rsi_oversold

// Execute long trades
if (long_condition and inDateRange and enable_long)
    strategy.entry("Long", strategy.long, qty=position_size)
    strategy.exit("Take Profit/Stop Loss", "Long", stop=stop_loss_level_long, limit=take_profit_level_long)

// Execute short trades
if (short_condition and inDateRange and enable_short)
    strategy.entry("Short", strategy.short, qty=position_size)
    strategy.exit("Take Profit/Stop Loss", "Short", stop=stop_loss_level_short, limit=take_profit_level_short)

// Plot moving averages
plot(sma_short, title="Short EMA", color=color.blue)
plot(sma_long, title="Long SMA", color=color.red)

// Plot RSI on separate chart
hline(rsi_overbought, "Overbought", color=color.red)
hline(rsi_oversold, "Oversold", color=color.green)
plot(rsi, title="RSI", color=color.purple)

// Plot signals on chart
plotshape(series=long_condition and enable_long, title="Long Signal", location=location.belowbar, color=color.green, style=shape.labelup, text="BUY")
plotshape(series=short_condition and enable_short, title="Short Signal", location=location.abovebar, color=color.red, style=shape.labeldown, text="SELL")

// Background color for backtest range
bgcolor(inDateRange ? na : color.red, transp=90)