Croisement de moyennes mobiles multiples combiné au système de trading de tendance de support et de résistance de Camarilla

EMA CPR SR
Date de création: 2025-01-06 11:13:31 Dernière modification: 2025-01-06 11:13:31
Copier: 0 Nombre de clics: 373
1
Suivre
1617
Abonnés

Croisement de moyennes mobiles multiples combiné au système de trading de tendance de support et de résistance de Camarilla

Aperçu

Cette stratégie est un système de trading de suivi de tendance qui combine plusieurs moyennes mobiles exponentielles (EMA), les niveaux de support et de résistance de Camarilla et la plage pivot centrale (CPR). La stratégie identifie les tendances du marché et les opportunités de trading potentielles en analysant le prix par rapport à plusieurs moyennes mobiles et à des fourchettes de prix importantes. Le système adopte des mesures strictes de gestion des fonds et de contrôle des risques, notamment la taille des positions en pourcentage et des mécanismes de sortie diversifiés.

Principe de stratégie

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

  1. Le système de moyennes mobiles multiples (EMA20/50/100/200) est utilisé pour confirmer la direction et la force de la tendance
  2. Les niveaux de support et de résistance de la Camarilla (R3/S3) sont utilisés pour identifier les niveaux de prix clés
  3. La fourchette de prix centrale (CPR) est utilisée pour déterminer la fourchette de négociation intrajournalière.
  4. Les signaux d’entrée sont basés sur le croisement du prix avec l’EMA200 et la confirmation par l’EMA20
  5. Les stratégies de sortie incluent des points fixes et des modes de mouvement en pourcentage
  6. Le système de gestion de fonds ajuste dynamiquement la taille de la position en fonction de la taille du compte

Avantages stratégiques

  1. La combinaison d’indicateurs techniques multidimensionnels fournit des signaux de trading plus fiables
  2. Mécanisme de sortie flexible pour s’adapter aux différents environnements de marché
  3. Un système de gestion de fonds parfait contrôle efficacement les risques
  4. Les fonctionnalités de suivi des tendances aident à capturer les grands mouvements
  5. Les composants de visualisation permettent aux traders de mieux comprendre la structure du marché

Risque stratégique

  1. De faux signaux peuvent survenir sur des marchés volatils
  2. Plusieurs indicateurs peuvent entraîner des signaux de trading retardés
  3. Les points de sortie fixes peuvent ne pas être performants sur des marchés volatils
  4. Un fonds de plus grande taille est nécessaire pour résister aux baisses
  5. Les coûts de transaction peuvent affecter le rendement global de la stratégie

Orientation de l’optimisation de la stratégie

  1. Introduire des indicateurs de volatilité pour ajuster dynamiquement les paramètres d’entrée et de sortie
  2. Ajoutez un module de reconnaissance du statut du marché pour s’adapter aux différents environnements de marché
  3. Optimiser le système de gestion des fonds et ajouter une gestion dynamique des positions
  4. Ajout d’un filtre de temps de négociation pour améliorer la qualité du signal
  5. Envisagez d’ajouter une analyse de volume pour améliorer la fiabilité du signal

Résumer

Cette stratégie construit un système de trading complet en intégrant plusieurs outils d’analyse technique classiques. Les avantages du système résident dans une analyse de marché multidimensionnelle et une gestion stricte des risques, mais il doit également prêter attention à son adaptabilité à différents environnements de marché. Grâce à une optimisation et une amélioration continues, la stratégie devrait améliorer la rentabilité tout en maintenant la stabilité.

Code source de la stratégie
/*backtest
start: 2020-01-06 00:00:00
end: 2025-01-04 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Pradeep Crude oil Entry and Exit", overlay=true)

// Input settings for EMAs
ema20_period = input.int(20, title="EMA 20 Period")
ema50_period = input.int(50, title="EMA 50 Period")
ema100_period = input.int(100, title="EMA 100 Period")
ema200_period = input.int(200, title="EMA 200 Period")

// Fixed line width settings for EMAs
ema20_width = 2  // EMA 20 Line Width
ema50_width = 2  // EMA 50 Line Width
ema100_width = 3 // EMA 100 Line Width
ema200_width = 4 // EMA 200 Line Width

// Backtesting inputs
initial_capital = input.float(50000, title="Initial Capital", minval=100)
position_size_percent = input.float(100, title="Position Size (% of Capital)", minval=0.1, maxval=100)
exit_mode = input.string("Price Movement", title="Exit Mode", options=["Price Movement", "Percentage Movement"])
exit_points = input.int(20, title="Exit After X Points", minval=1)
exit_percentage = input.float(1.0, title="Exit After X% Movement", minval=0.1, step=0.1)

// Calculate EMAs
ema20 = ta.ema(close, ema20_period)
ema50 = ta.ema(close, ema50_period)
ema100 = ta.ema(close, ema100_period)
ema200 = ta.ema(close, ema200_period)

// Signal conditions
long_entry_condition = close > ema200 and close > ema20 and close[1] <= ema200
long_exit_condition = (exit_mode == "Price Movement" and close - strategy.position_avg_price >= exit_points * syminfo.mintick) or 
                      (exit_mode == "Percentage Movement" and (close - strategy.position_avg_price) / strategy.position_avg_price * 100 >= exit_percentage)
short_entry_condition = close < ema200 and close < ema20 and close[1] >= ema200
short_exit_condition = (exit_mode == "Price Movement" and strategy.position_avg_price - close >= exit_points * syminfo.mintick) or 
                       (exit_mode == "Percentage Movement" and (strategy.position_avg_price - close) / strategy.position_avg_price * 100 >= exit_percentage)

// Plot EMAs with specified line widths
plot(ema20, color=color.green, title="EMA 20", linewidth=ema20_width)
plot(ema50, color=color.aqua, title="EMA 50", linewidth=ema50_width)
plot(ema100, color=color.blue, title="EMA 100", linewidth=ema100_width)
plot(ema200, color=color.red, title="EMA 200", linewidth=ema200_width)

// Camarilla Pivot Calculation
prev_high = request.security(syminfo.tickerid, "D", high[1])
prev_low = request.security(syminfo.tickerid, "D", low[1])
prev_close = request.security(syminfo.tickerid, "D", close[1])

R3 = prev_close + (prev_high - prev_low) * 1.1 / 2
S3 = prev_close - (prev_high - prev_low) * 1.1 / 2

// Central Pivot Range (CPR) Calculation
pivot = (prev_high + prev_low + prev_close) / 3
upper_cpr = pivot + (prev_high - prev_low)
lower_cpr = pivot - (prev_high - prev_low)

// Plot Camarilla R3, S3 and CPR levels
plot(R3, color=color.purple, title="Camarilla R3", linewidth=2)
plot(S3, color=color.purple, title="Camarilla S3", linewidth=2)
plot(pivot, color=color.yellow, title="CPR Pivot", linewidth=2)
plot(upper_cpr, color=color.green, title="CPR Upper", linewidth=1)
plot(lower_cpr, color=color.red, title="CPR Lower", linewidth=1)

// Backtesting: Capital and position size
capital = initial_capital
risk_per_trade = (position_size_percent / 100) * capital

// Long positions
if long_entry_condition
    strategy.entry("Long", strategy.long, qty=risk_per_trade / close)
    // Display entry price label
    label.new(bar_index, close, text="Entry: " + str.tostring(close), color=color.green, style=label.style_label_up, yloc=yloc.belowbar)

if long_exit_condition
    strategy.close("Long")
    // Display exit price label
    label.new(bar_index, close, text="Exit: " + str.tostring(close), color=color.red, style=label.style_label_down, yloc=yloc.abovebar)

// Short positions
if short_entry_condition
    strategy.entry("Short", strategy.short, qty=risk_per_trade / close)
    // Display entry price label
    label.new(bar_index, close, text="Entry: " + str.tostring(close), color=color.red, style=label.style_label_down, yloc=yloc.abovebar)

if short_exit_condition
    strategy.close("Short")
    // Display exit price label
    label.new(bar_index, close, text="Exit: " + str.tostring(close), color=color.green, style=label.style_label_up, yloc=yloc.belowbar)

// Plot signals
plotshape(long_entry_condition, style=shape.triangleup, location=location.belowbar, color=color.new(color.green, 0), size=size.small, title="Long Entry")
plotshape(long_exit_condition, style=shape.triangledown, location=location.abovebar, color=color.new(color.red, 0), size=size.small, title="Long Exit")
plotshape(short_entry_condition, style=shape.triangledown, location=location.abovebar, color=color.new(color.red, 0), size=size.small, title="Short Entry")
plotshape(short_exit_condition, style=shape.triangleup, location=location.belowbar, color=color.new(color.green, 0), size=size.small, title="Short Exit")