Stratégie de suivi de tendance multi-indicateurs et de rupture de volatilité

EMA ADX ATR OBV RSI
Date de création: 2024-12-12 15:48:29 Dernière modification: 2024-12-12 15:48:29
Copier: 2 Nombre de clics: 431
1
Suivre
1617
Abonnés

Stratégie de suivi de tendance multi-indicateurs et de rupture de volatilité

Aperçu

Il s’agit d’une stratégie de suivi de la tendance combinant plusieurs indicateurs techniques et une stratégie de rupture de la volatilité. La stratégie capture les tendances et les opportunités de rupture du marché en intégrant le système de courbe égale (EMA), l’indicateur de force de la tendance (ADX), l’indicateur de volatilité du marché (ATR), l’analyse quantitative des prix (OBV) et certains indicateurs auxiliaires tels que le graphique de nuage d’Ichimoku et l’indicateur aléatoire (Stochastic). La stratégie met en place des filtres strictement chronologiques qui ne fonctionnent que pendant des périodes de négociation spécifiques pour améliorer l’efficacité des transactions.

Principe de stratégie

La logique de base de la stratégie est basée sur une analyse globale de plusieurs niveaux d’indicateurs techniques:

  1. Construction d’un système de suivi de tendance à l’aide d’EMA à 50 et à 200 cycles
  2. Confirmation de la force de la tendance par l’indicateur ADX
  3. Une carte des nuages d’Ichimoku fournit une confirmation de tendance supplémentaire
  4. L’indicateur stochastique est utilisé pour identifier les zones de survente.
  5. Utilisation de l’ATR pour définir des objectifs de stop loss et de profit
  6. Validation par OBV du niveau de soutien du volume d’achat

La stratégie émet un signal d’achat si les conditions suivantes sont remplies:

  • Dans la période de temps de négociation autorisée
  • Le prix est au-dessus de l’EMA à court terme
  • L’EMA à court terme est au-dessus de l’EMA à long terme.
  • ADX supérieur au seuil fixé
  • Les prix sont en haut de la carte des nuages.
  • Le stochastique est en zone de survente

Avantages stratégiques

  1. Vérification croisée de multiples indicateurs techniques pour améliorer la fiabilité du signal
  2. Une combinaison de suivi des tendances et de rupture de la volatilité pour augmenter l’adaptabilité de la stratégie
  3. Évitez les périodes de trading inefficaces avec un filtre temporel
  4. Objectifs de stop-loss et de profit dynamiques, adaptés aux fluctuations du marché
  5. Le prix et l’analyse fournissent une perspective plus complète du marché
  6. Une approche plus systématique des règles d’entrée et de sortie, et moins de jugements subjectifs

Risque stratégique

  1. Les systèmes à multiples indicateurs peuvent entraîner un retard de signal.
  2. Le marché horizontal pourrait générer de faux signaux
  3. Les paramètres sont plus difficiles à optimiser et le risque de sur-optimisation est élevé.
  4. Les restrictions de temps de transaction peuvent faire passer à côté de choses importantes
  5. Un arrêt de perte trop élevé peut entraîner des pertes individuelles élevées

Suggestions de contrôle des risques :

  • Vérifier et optimiser les paramètres régulièrement
  • Considérer l’ajout d’un filtre de fluctuation
  • Des règles plus strictes pour la gestion des fonds
  • Indicateurs auxiliaires pour une confirmation de tendance accrue

Orientation de l’optimisation de la stratégie

  1. Introduction d’un système de paramètres adaptatifs permettant d’ajuster les paramètres de l’indicateur en fonction de l’état du marché
  2. Ajout d’un mécanisme de classification des états du marché, utilisant différentes règles de génération de signaux dans différents environnements de marché
  3. Optimiser les paramètres du filtre temporel pour analyser les meilleures heures de négociation en fonction des données historiques
  4. Améliorer les stratégies de stop loss et envisager d’utiliser un stop loss de suivi
  5. L’ajout d’indicateurs de sentiment du marché améliore la qualité des signaux

Résumer

La stratégie utilise l’intégration de plusieurs indicateurs techniques pour construire un système de négociation complet. L’avantage de la stratégie réside dans la vérification croisée de plusieurs indicateurs et le contrôle rigoureux des risques, mais elle est également confrontée à des défis tels que l’optimisation des paramètres et le retard de signal.

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

//@version=5
strategy("Khaleq Strategy Pro - Fixed Version", overlay=true)

// === Input Settings ===
ema_short = input.int(50, "EMA Short", minval=1)
ema_long = input.int(200, "EMA Long", minval=1)
adx_threshold = input.int(25, "ADX Threshold", minval=1)
atr_multiplier = input.float(2.0, "ATR Multiplier", minval=0.1)
time_filter_start = input(timestamp("0000-01-01 09:00:00"), "Trading Start Time", group="Time Filter")
time_filter_end = input(timestamp("0000-01-01 17:00:00"), "Trading End Time", group="Time Filter")

// === Ichimoku Settings ===
tenkan_len = 9
kijun_len = 26
senkou_span_b_len = 52
displacement = 26

// === Calculations ===
// Ichimoku Components
tenkan_sen = (ta.highest(high, tenkan_len) + ta.lowest(low, tenkan_len)) / 2
kijun_sen = (ta.highest(high, kijun_len) + ta.lowest(low, kijun_len)) / 2
senkou_span_a = (tenkan_sen + kijun_sen) / 2
senkou_span_b = (ta.highest(high, senkou_span_b_len) + ta.lowest(low, senkou_span_b_len)) / 2

// EMA Calculations
ema_short_val = ta.ema(close, ema_short)
ema_long_val = ta.ema(close, ema_long)

// Manual ADX Calculation
length = 14
dm_plus = math.max(ta.change(high), 0)
dm_minus = math.max(-ta.change(low), 0)
tr = math.max(high - low, math.max(math.abs(high - close[1]), math.abs(low - close[1])))
tr14 = ta.sma(tr, length)
dm_plus14 = ta.sma(dm_plus, length)
dm_minus14 = ta.sma(dm_minus, length)
di_plus = (dm_plus14 / tr14) * 100
di_minus = (dm_minus14 / tr14) * 100
dx = math.abs(di_plus - di_minus) / (di_plus + di_minus) * 100
adx_val = ta.sma(dx, length)

// ATR Calculation
atr_val = ta.atr(14)

// Stochastic RSI Calculation
k = ta.stoch(close, high, low, 14)
d = ta.sma(k, 3)

// Time Filter
is_within_time = true

// Support and Resistance (High and Low Levels)
resistance_level = ta.highest(high, 20)
support_level = ta.lowest(low, 20)

// Volume Analysis (On-Balance Volume)
vol_change = ta.change(close)
obv = ta.cum(vol_change > 0 ? volume : vol_change < 0 ? -volume : 0)

// === Signal Conditions ===
buy_signal = is_within_time and
             (close > ema_short_val) and
             (ema_short_val > ema_long_val) and
             (adx_val > adx_threshold) and
             (close > senkou_span_a) and
             (k < 20)  // Stochastic oversold

sell_signal = is_within_time and
              (close < ema_short_val) and
              (ema_short_val < ema_long_val) and
              (adx_val > adx_threshold) and
              (close < senkou_span_b) and
              (k > 80)  // Stochastic overbought

// === Plotting ===
// Plot Buy and Sell Signals
plotshape(buy_signal, color=color.green, style=shape.labelup, title="Buy Signal", location=location.belowbar, text="BUY")
plotshape(sell_signal, color=color.red, style=shape.labeldown, title="Sell Signal", location=location.abovebar, text="SELL")

// Plot EMAs
plot(ema_short_val, color=color.blue, title="EMA Short")
plot(ema_long_val, color=color.orange, title="EMA Long")

// Plot Ichimoku Components
plot(senkou_span_a, color=color.green, title="Senkou Span A", offset=displacement)
plot(senkou_span_b, color=color.red, title="Senkou Span B", offset=displacement)

// // Plot Support and Resistance using lines
// var line resistance_line = na
// var line support_line = na
// if bar_index > 1
//     line.delete(resistance_line)
//     line.delete(support_line)
// resistance_line := line.new(x1=bar_index - 1, y1=resistance_level, x2=bar_index, y2=resistance_level, color=color.red, width=1, style=line.style_dotted)
// support_line := line.new(x1=bar_index - 1, y1=support_level, x2=bar_index, y2=support_level, color=color.green, width=1, style=line.style_dotted)

// Plot OBV
plot(obv, color=color.purple, title="OBV")

// Plot Background for Trend (Bullish/Bearish)
bgcolor(close > ema_long_val ? color.new(color.green, 90) : color.new(color.red, 90), title="Trend Background")

// === Alerts ===
alertcondition(buy_signal, title="Buy Alert", message="Buy Signal Triggered")
alertcondition(sell_signal, title="Sell Alert", message="Sell Signal Triggered")

// === Strategy Execution ===
if buy_signal
    strategy.entry("Buy", strategy.long)

if sell_signal
    strategy.close("Buy")
    strategy.exit("Sell", "Buy", stop=close - atr_multiplier * atr_val, limit=close + atr_multiplier * atr_val)