Stratégie de suivi de tendance multi-mode stop-profit et stop-loss basée sur l'EMA, les bandes de Madrid et les canaux de Donchian

EMA RRR
Date de création: 2025-01-10 16:24:30 Dernière modification: 2025-01-10 16:24:30
Copier: 1 Nombre de clics: 125
1
Suivre
1166
Abonnés

Stratégie de suivi de tendance multi-mode stop-profit et stop-loss basée sur l’EMA, les bandes de Madrid et les canaux de Donchian

Aperçu

Il s’agit d’une stratégie de suivi de tendance qui combine la moyenne mobile exponentielle (EMA), le ruban de Madrid et le canal Donchian. L’unicité de la stratégie réside dans la fourniture de trois modes de stop-profit et de stop-loss commutables : basés sur des points, basés sur le montant et basés sur le ratio risque-rendement. La fiabilité des transactions est améliorée grâce à un mécanisme de confirmation du signal secondaire, et les transactions ne sont effectuées que lorsqu’un signal valide apparaît pour la deuxième fois.

Principe de stratégie

La stratégie utilise une combinaison de trois indicateurs techniques pour identifier les opportunités de trading :

  1. La moyenne mobile exponentielle sur 200 périodes est utilisée pour déterminer la direction de la tendance globale
  2. Les bandes de Madrid (croisement des EMA à 5 et 100 périodes) sont utilisées pour déterminer les tendances à moyen terme
  3. Cassures du canal Donchian pour un timing d’entrée spécifique

Conditions de trading longues : le prix est supérieur à 200EMA, la bande de Madrid devient haussière et le prix sort du canal supérieur de Donchian. Conditions de trading courtes : le prix est inférieur à 200EMA, la bande de Madrid devient baissière et le prix sort du canal Donchian inférieur. Pour réduire les faux signaux, la stratégie exécute une transaction uniquement lorsqu’un signal valide apparaît pour la deuxième fois.

Avantages stratégiques

  1. Système flexible de gestion des stop-profits et des stop-loss, qui peut changer de mode en fonction de différents styles de trading
  2. La combinaison de plusieurs indicateurs techniques fournit des signaux de trading plus fiables
  3. Le mécanisme de confirmation secondaire réduit efficacement l’impact des faux signaux
  4. La stratégie évite complètement le biais d’anticipation et il n’y a pas de problème de redessin.
  5. Hautement personnalisable pour s’adapter à différents environnements de marché

Risque stratégique

  1. Un retracement plus important peut se produire lorsque la tendance s’inverse Solution : Vous pouvez améliorer la sensibilité de la stratégie en ajustant les paramètres de l’indicateur
  2. Une dépendance excessive aux indicateurs techniques peut conduire à des opportunités de marché manquées Solution : Il est recommandé de combiner l’analyse fondamentale
  3. Le stop-loss fixe et le take-profit peuvent ne pas convenir à toutes les conditions de marché Solution : Ajuster dynamiquement les niveaux de take-profit et de stop-loss en fonction de la volatilité

Orientation de l’optimisation de la stratégie

  1. Présentation des indicateurs de volatilité pour ajuster dynamiquement les niveaux de take-profit et de stop-loss
  2. Analyse du volume ajoutée pour améliorer la fiabilité du signal
  3. Ajout de plus d’indicateurs de sentiment du marché
  4. Développement d’un système d’optimisation adaptative des paramètres
  5. Ajoutez des modules de gestion des risques, tels que le contrôle du drawdown maximum

Résumer

Il s’agit d’une stratégie de suivi des tendances qui combine plusieurs indicateurs techniques classiques, améliorant la stabilité des transactions grâce à une gestion flexible du stop-profit et du stop-loss et à un mécanisme de confirmation secondaire. La grande personnalisation de la stratégie lui permet de s’adapter à différents environnements de marché et styles de trading. Il est recommandé d’effectuer des tests rétrospectifs des données historiques suffisants avant une utilisation réelle et d’ajuster les paramètres en fonction des caractéristiques spécifiques du marché.

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

//@version=6
strategy("Pamplona Enhanced TP/SL Toggleable", overlay=true, default_qty_type=strategy.fixed, default_qty_value=1)

// Input settings
use_tick_based = input.bool(false, title="Use Tick-Based TP/SL")
use_dollar_based = input.bool(false, title="Use Dollar-Based TP/SL")
use_risk_reward = input.bool(true, title="Use Risk-Reward TP/SL") // Default option

tick_size = input.float(0.1, title="Tick Size (for Tick-Based)", minval=0.0001, step=0.0001)
ticks = input.int(10, title="Ticks (for Tick-Based TP/SL)", minval=1)
dollar_tp = input.float(10.0, title="Dollar Take Profit (for Dollar-Based)", minval=0.01, step=0.01)
dollar_sl = input.float(10.0, title="Dollar Stop Loss (for Dollar-Based)", minval=0.01, step=0.01)
risk_reward_ratio = input.float(2.0, title="Risk-Reward Ratio (for Risk-Reward TP/SL)", minval=0.1, step=0.1)
contract_size = input.int(1, title="Contract Size", minval=1)

// Retrieve indicators
ema200 = ta.ema(close, 200)
src = close
ma05 = ta.ema(src, 5)
ma100 = ta.ema(src, 100)
madrid_green = ma05 > ma100
dlen = input.int(20, title="Donchian Channel Period")
highest_d = ta.highest(high, dlen)
lowest_d = ta.lowest(low, dlen)
donchian_green = close > highest_d[1]
donchian_red = close < lowest_d[1]

// Track signals
var int long_signal_count = 0
var int short_signal_count = 0

// Conditions
long_condition_raw = madrid_green and donchian_green and close > ema200
short_condition_raw = not madrid_green and donchian_red and close < ema200

// Update signal counters
if long_condition_raw
    long_signal_count += 1
else
    long_signal_count := 0

if short_condition_raw
    short_signal_count += 1
else
    short_signal_count := 0

// Final conditions to enter on the second signal
long_condition = long_signal_count == 2
short_condition = short_signal_count == 2

// Ensure exactly one TP/SL mode is enabled
tp_sl_mode_count = (use_tick_based ? 1 : 0) + (use_dollar_based ? 1 : 0) + (use_risk_reward ? 1 : 0)
if tp_sl_mode_count != 1
    runtime.error("Enable exactly ONE TP/SL mode (Tick-Based, Dollar-Based, or Risk-Reward).")

// Function to calculate TP/SL based on active mode
calc_tp_sl(entry_price, is_long) =>
    float tp = na
    float sl = na
    if use_tick_based
        tp := is_long ? entry_price + ticks * tick_size : entry_price - ticks * tick_size
        sl := is_long ? entry_price - ticks * tick_size : entry_price + ticks * tick_size
    else if use_dollar_based
        tp := is_long ? entry_price + (dollar_tp / contract_size) : entry_price - (dollar_tp / contract_size)
        sl := is_long ? entry_price - (dollar_sl / contract_size) : entry_price + (dollar_sl / contract_size)
    else if use_risk_reward
        risk = is_long ? close - low : high - close
        tp := is_long ? close + (risk * risk_reward_ratio) : close - (risk * risk_reward_ratio)
        sl := is_long ? close - risk : close + risk
    [tp, sl]

// Entry logic
if long_condition
    [take_profit, stop_loss] = calc_tp_sl(close, true)
    strategy.entry("Long", strategy.long, qty=contract_size)
    strategy.exit("Take Profit", from_entry="Long", limit=take_profit, stop=stop_loss)

if short_condition
    [take_profit, stop_loss] = calc_tp_sl(close, false)
    strategy.entry("Short", strategy.short, qty=contract_size)
    strategy.exit("Take Profit", from_entry="Short", limit=take_profit, stop=stop_loss)

// Plot indicators
plot(ema200, title="200 EMA", color=color.white, linewidth=2)
bgcolor(long_condition ? color.new(color.green, 90) : short_condition ? color.new(color.red, 90) : na)