Les ressources ont été chargées... Je charge...

Stratégie de négociation de flux de tendance adaptatif à filtres multiples

Auteur:ChaoZhang est là., Date: 2025-01-06 11:58:25 Je suis désolé
Les étiquettes:Le taux d'intérêtSMALe MACDATRHLC3

img

Résumé

Cette stratégie est un système de suivi de tendance adaptatif basé sur plusieurs filtres d'indicateurs techniques. Elle combine divers indicateurs techniques, y compris l'EMA, la SMA et la divergence de convergence des moyennes mobiles, en ajustant dynamiquement les paramètres pour s'adapter à différents environnements de marché pour une capture efficace des tendances et un contrôle des risques.

Principe de stratégie

La logique de base est basée sur un mécanisme de filtrage à trois couches:

  1. Couche de reconnaissance de tendance adaptative: utilise une combinaison d'EMA rapides et lents pour calculer la ligne de base de la tendance et ajuste dynamiquement les lignes supérieures et inférieures des canaux en fonction de la volatilité du marché.
  2. Couche de filtre SMA: Assure que la direction du mouvement des prix s'aligne sur la tendance globale en utilisant une moyenne mobile simple.
  3. Couche de confirmation MACD: valide en outre les signaux de négociation à l'aide de la fonctionnalité de confirmation de tendance de l'indicateur MACD.

La génération de signaux commerciaux nécessite que toutes les conditions de filtrage soient remplies: transition de tendance, confirmation de la direction de la SMA et support de la ligne de signal MACD. La stratégie comprend également un système de gestion de position dynamique basé sur l'équité du compte, ajustant automatiquement la taille de la position grâce à un facteur d'effet de levier.

Les avantages de la stratégie

  1. Une forte adaptabilité: la stratégie peut s'adapter à différents environnements de marché grâce à un ajustement dynamique des paramètres.
  2. Contrôle complet des risques: les mécanismes de filtrage multiples réduisent considérablement la probabilité de faux signaux.
  3. Haute personnalisation: les utilisateurs peuvent ajuster divers paramètres en fonction de leur style de trading personnel.
  4. Niveau d'automatisation élevé: prend en charge les messages d'alerte au format JSON pour une intégration facile avec les systèmes de négociation automatisés.
  5. Bonne visualisation: fournit une rétroaction visuelle riche, y compris des bandes de tendance et des marqueurs de signaux.

Risques stratégiques

  1. Dépendance des tendances: peut générer de fréquents faux signaux sur les marchés oscillants.
  2. Risque de retard: des mécanismes de filtrage multiples peuvent entraîner un retard dans le temps d'entrée.
  3. Sensibilité des paramètres: différentes combinaisons de paramètres peuvent entraîner des variations significatives des performances de la stratégie.
  4. Risque d'effet de levier: un effet de levier excessif peut amplifier les pertes.

Directions d'optimisation de la stratégie

  1. Adaptation à la volatilité: ajouter un mécanisme de stop-loss dynamique basé sur l'ATR.
  2. Reconnaissance de l'environnement du marché: ajouter un système de classification de l'état du marché pour utiliser différentes combinaisons de paramètres dans différents environnements du marché.
  3. Notation de la qualité du signal: mettre en place un système de notation de la force du signal pour ajuster dynamiquement les positions en fonction de la force du signal.
  4. Optimisation de la gestion des capitaux: introduire des algorithmes de gestion de l'argent plus sophistiqués pour un contrôle de position plus précis.

Résumé

La stratégie permet d'atteindre une tendance relativement fiable grâce à des mécanismes de filtrage multicouches et à un ajustement dynamique des paramètres. Bien qu'il existe certains risques de décalage et de dépendance des paramètres, une performance stable peut encore être atteinte dans le trading réel grâce à une optimisation raisonnable des paramètres et à des mesures de contrôle des risques.


/*backtest
start: 2024-12-29 00:00:00
end: 2025-01-05 00:00:00
period: 45m
basePeriod: 45m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=6
strategy("Adaptive Trend Flow Strategy with Filters for SPX", overlay=true, max_labels_count=500, 
     initial_capital=1000, commission_type=strategy.commission.cash_per_order, commission_value=0.01, slippage=2,
     margin_long=20, margin_short=20, default_qty_type=strategy.percent_of_equity, default_qty_value=100)

// User-defined inputs for trend logic
atr           = input.int(14, "Main Length", minval=2, group = "Find more strategies like this on pineindicators.com")
length        = input.int(2, "Main Length", minval=2)
smooth_len    = input.int(2, "Smoothing Length", minval=2)
sensitivity   = input.float(2.0, "Sensitivity", step=0.1)

// User-defined inputs for SMA filter
use_sma_filter = input.bool(true, "Enable SMA Filter?")
sma_length = input.int(4, "SMA Length", minval=1)

// User-defined inputs for MACD filter
use_macd_filter = input.bool(true, "Enable MACD Filter?")
macd_fast_length = input.int(2, "MACD Fast Length", minval=1)
macd_slow_length = input.int(7, "MACD Slow Length", minval=1)
macd_signal_length = input.int(2, "MACD Signal Length", minval=1)
// User-defined inputs for leverage
leverage_factor = input.float(4.5, "Leverage Factor", minval=1.0, step=0.1)
id           = input("besttrader123", title= "Your TradingView username", group = "Automate this strategy with plugpine.com")
key           = input("nc739ja84gf", title= "Unique identifier (UID)")
ticker        = input("SPX", title= "Ticker/symbol of your broker")
bullcolor     = #0097a7
bearcolor     = #ff195f
showbars      = input.bool(true, "Color Bars?")
showbg        = input.bool(true, "Background Color?")
showsignals   = input.bool(true, "Show Signals?")


// Trend calculation functions
calculate_trend_levels() =>
    typical = hlc3
    fast_ema = ta.ema(typical, length)
    slow_ema = ta.ema(typical, length * 2)
    basis = (fast_ema + slow_ema) / 2
    vol = ta.stdev(typical, length)
    smooth_vol = ta.ema(vol, smooth_len)
    upper = basis + (smooth_vol * sensitivity)
    lower = basis - (smooth_vol * sensitivity)
    [basis, upper, lower]

get_trend_state(upper, lower, basis) =>
    var float prev_level = na
    var int trend = 0
    if na(prev_level)
        trend := close > basis ? 1 : -1
        prev_level := trend == 1 ? lower : upper
    if trend == 1
        if close < lower
            trend := -1
            prev_level := upper
        else
            prev_level := lower
    else
        if close > upper
            trend := 1
            prev_level := lower
        else
            prev_level := upper
    [trend, prev_level]

[basis, upper, lower] = calculate_trend_levels()
[trend, level] = get_trend_state(upper, lower, basis)

// SMA filter
sma_value = ta.sma(close, sma_length)
sma_condition = use_sma_filter ? close > sma_value : true

// MACD filter
[macd_line, signal_line, _] = ta.macd(close, macd_fast_length, macd_slow_length, macd_signal_length)
macd_condition = use_macd_filter ? macd_line > signal_line : true

// Signal detection with filters
long_signal = trend == 1 and trend[1] == -1 and sma_condition and macd_condition
short_signal = trend == -1 and trend[1] == 1

// Plotting visuals
p2 = plot(basis, color=trend == 1 ? bullcolor : bearcolor, linewidth=2)
p1 = plot(level, color=close > level ? bullcolor : bearcolor, linewidth=2, style=plot.style_linebr)
// if showsignals and ta.crossover(close, level)
//     label.new(bar_index, level, "▲", color=bullcolor, textcolor=chart.bg_color, style=label.style_label_upper_right)
// if showsignals and ta.crossunder(close, level)
//     label.new(bar_index, level, "▼", color=bearcolor, textcolor=chart.fg_color, style=label.style_label_lower_right)

qty = strategy.equity / close * leverage_factor

// Automated alerts
if long_signal
    alert('{"AccountID": "' + id + '","Key": "' + key + '", "symbol": "' + ticker + '", "action": "long", "volume": ' + str.tostring(qty) + '}', alert.freq_once_per_bar)
if short_signal
    alert('{"AccountID": "' + id + '","Key": "' + key + '", "symbol": "' + ticker + '", "action": "closelong"}', alert.freq_once_per_bar)

// Strategy entries and exits
if long_signal
    strategy.entry("Long", strategy.long, qty=qty)
if short_signal
    strategy.close("Long")

// Optional SMA and MACD plot
plot(use_sma_filter ? sma_value : na, color=color.new(color.blue, 80), title="SMA")
plot(use_macd_filter ? macd_line : na, color=color.new(color.orange, 80), title="MACD Line")
plot(use_macd_filter ? signal_line : na, color=color.new(color.red, 80), title="Signal Line")


Relationnée

Plus de